File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / quagga / ospf6d / ospf6_asbr.h
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Oct 9 09:22:28 2012 UTC (11 years, 9 months ago) by misho
Branches: quagga, MAIN
CVS tags: v0_99_22p0, v0_99_22, v0_99_21, HEAD
quagga

    1: /*
    2:  * Copyright (C) 2001 Yasuhiro Ohara
    3:  *
    4:  * This file is part of GNU Zebra.
    5:  *
    6:  * GNU Zebra is free software; you can redistribute it and/or modify it
    7:  * under the terms of the GNU General Public License as published by the
    8:  * Free Software Foundation; either version 2, or (at your option) any
    9:  * later version.
   10:  *
   11:  * GNU Zebra is distributed in the hope that it will be useful, but
   12:  * WITHOUT ANY WARRANTY; without even the implied warranty of
   13:  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   14:  * General Public License for more details.
   15:  *
   16:  * You should have received a copy of the GNU General Public License
   17:  * along with GNU Zebra; see the file COPYING.  If not, write to the 
   18:  * Free Software Foundation, Inc., 59 Temple Place - Suite 330, 
   19:  * Boston, MA 02111-1307, USA.  
   20:  */
   21: 
   22: #ifndef OSPF6_ASBR_H
   23: #define OSPF6_ASBR_H
   24: 
   25: /* for struct ospf6_prefix */
   26: #include "ospf6_proto.h"
   27: /* for struct ospf6_lsa */
   28: #include "ospf6_lsa.h"
   29: /* for struct ospf6_route */
   30: #include "ospf6_route.h"
   31: 
   32: /* Debug option */
   33: extern unsigned char conf_debug_ospf6_asbr;
   34: #define OSPF6_DEBUG_ASBR_ON() \
   35:   (conf_debug_ospf6_asbr = 1)
   36: #define OSPF6_DEBUG_ASBR_OFF() \
   37:   (conf_debug_ospf6_asbr = 0)
   38: #define IS_OSPF6_DEBUG_ASBR \
   39:   (conf_debug_ospf6_asbr)
   40: 
   41: struct ospf6_external_info
   42: {
   43:   /* External route type */
   44:   int type;
   45: 
   46:   /* Originating Link State ID */
   47:   u_int32_t id;
   48: 
   49:   struct in6_addr forwarding;
   50:   /* u_int32_t tag; */
   51: 
   52:   unsigned int ifindex;
   53: };
   54: 
   55: /* AS-External-LSA */
   56: #define OSPF6_AS_EXTERNAL_LSA_MIN_SIZE         4U /* w/o IPv6 prefix */
   57: struct ospf6_as_external_lsa
   58: {
   59:   u_int32_t bits_metric;
   60: 
   61:   struct ospf6_prefix prefix;
   62:   /* followed by none or one forwarding address */
   63:   /* followed by none or one external route tag */
   64:   /* followed by none or one referenced LS-ID */
   65: };
   66: 
   67: #define OSPF6_ASBR_BIT_T  ntohl (0x01000000)
   68: #define OSPF6_ASBR_BIT_F  ntohl (0x02000000)
   69: #define OSPF6_ASBR_BIT_E  ntohl (0x04000000)
   70: 
   71: #define OSPF6_ASBR_METRIC(E) (ntohl ((E)->bits_metric & htonl (0x00ffffff)))
   72: #define OSPF6_ASBR_METRIC_SET(E,C) \
   73:   { (E)->bits_metric &= htonl (0xff000000); \
   74:     (E)->bits_metric |= htonl (0x00ffffff) & htonl (C); }
   75: 
   76: extern void ospf6_asbr_lsa_add (struct ospf6_lsa *lsa);
   77: extern void ospf6_asbr_lsa_remove (struct ospf6_lsa *lsa);
   78: extern void ospf6_asbr_lsentry_add (struct ospf6_route *asbr_entry);
   79: extern void ospf6_asbr_lsentry_remove (struct ospf6_route *asbr_entry);
   80: 
   81: extern int ospf6_asbr_is_asbr (struct ospf6 *o);
   82: extern void ospf6_asbr_redistribute_add (int type, int ifindex,
   83:                                          struct prefix *prefix,
   84:                                          u_int nexthop_num,
   85:                                          struct in6_addr *nexthop);
   86: extern void ospf6_asbr_redistribute_remove (int type, int ifindex,
   87:                                             struct prefix *prefix);
   88: 
   89: extern int ospf6_redistribute_config_write (struct vty *vty);
   90: 
   91: extern void ospf6_asbr_init (void);
   92: extern void ospf6_asbr_terminate (void);
   93: 
   94: extern int config_write_ospf6_debug_asbr (struct vty *vty);
   95: extern void install_element_ospf6_debug_asbr (void);
   96: 
   97: #endif /* OSPF6_ASBR_H */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>