Annotation of embedaddon/quagga/isisd/isisd.h, revision 1.1.1.2

1.1       misho       1: /*
                      2:  * IS-IS Rout(e)ing protocol - isisd.h   
                      3:  *
                      4:  * Copyright (C) 2001,2002   Sampo Saaristo
                      5:  *                           Tampere University of Technology      
                      6:  *                           Institute of Communications Engineering
                      7:  *
                      8:  * This program is free software; you can redistribute it and/or modify it 
                      9:  * under the terms of the GNU General Public Licenseas published by the Free 
                     10:  * Software Foundation; either version 2 of the License, or (at your option) 
                     11:  * any later version.
                     12:  *
                     13:  * This program is distributed in the hope that it will be useful,but WITHOUT 
                     14:  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
                     15:  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for 
                     16:  * more details.
                     17: 
                     18:  * You should have received a copy of the GNU General Public License along 
                     19:  * with this program; if not, write to the Free Software Foundation, Inc., 
                     20:  * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
                     21:  */
                     22: 
                     23: #ifndef ISISD_H
                     24: #define ISISD_H
                     25: 
                     26: #define ISISD_VERSION "0.0.7"
                     27: 
                     28: /* uncomment if you are a developer in bug hunt */
                     29: /* #define EXTREME_DEBUG  */
                     30: /* #define EXTREME_TLV_DEBUG */
                     31: 
                     32: struct rmap
                     33: {
                     34:   char *name;
                     35:   struct route_map *map;
                     36: };
                     37: 
                     38: struct isis
                     39: {
                     40:   u_long process_id;
                     41:   int sysid_set;
                     42:   u_char sysid[ISIS_SYS_ID_LEN];       /* SystemID for this IS */
1.1.1.2 ! misho      43:   u_int32_t router_id;          /* Router ID from zebra */
1.1       misho      44:   struct list *area_list;      /* list of IS-IS areas */
                     45:   struct list *init_circ_list;
                     46:   struct list *nexthops;       /* IPv4 next hops from this IS */
                     47: #ifdef HAVE_IPV6
                     48:   struct list *nexthops6;      /* IPv6 next hops from this IS */
                     49: #endif                         /* HAVE_IPV6 */
                     50:   u_char max_area_addrs;       /* maximumAreaAdresses */
                     51:   struct area_addr *man_area_addrs;    /* manualAreaAddresses */
                     52:   u_int32_t debugs;            /* bitmap for debug */
                     53:   time_t uptime;               /* when did we start */
                     54:   struct thread *t_dync_clean; /* dynamic hostname cache cleanup thread */
                     55: 
                     56:   /* Redistributed external information. */
                     57:   struct route_table *external_info[ZEBRA_ROUTE_MAX + 1];
                     58:   /* Redistribute metric info. */
                     59:   struct
                     60:   {
                     61:     int type;                  /* Internal or External  */
                     62:     int value;                 /* metric value */
                     63:   } dmetric[ZEBRA_ROUTE_MAX + 1];
                     64: 
                     65:   struct
                     66:   {
                     67:     char *name;
                     68:     struct route_map *map;
                     69:   } rmap[ZEBRA_ROUTE_MAX + 1];
                     70: #ifdef HAVE_IPV6
                     71:   struct
                     72:   {
                     73:     struct
                     74:     {
                     75:       char *name;
                     76:       struct route_map *map;
                     77:     } rmap[ZEBRA_ROUTE_MAX + 1];
                     78:   } inet6_afmode;
                     79: #endif
                     80: };
                     81: 
1.1.1.2 ! misho      82: extern struct isis *isis;
        !            83: 
1.1       misho      84: struct isis_area
                     85: {
                     86:   struct isis *isis;                             /* back pointer */
                     87:   dict_t *lspdb[ISIS_LEVELS];                    /* link-state dbs */
                     88:   struct isis_spftree *spftree[ISIS_LEVELS];     /* The v4 SPTs */
                     89:   struct route_table *route_table[ISIS_LEVELS];          /* IPv4 routes */
                     90: #ifdef HAVE_IPV6
                     91:   struct isis_spftree *spftree6[ISIS_LEVELS];    /* The v6 SPTs */
                     92:   struct route_table *route_table6[ISIS_LEVELS];  /* IPv6 routes */
                     93: #endif
                     94:   unsigned int min_bcast_mtu;
                     95:   struct list *circuit_list;   /* IS-IS circuits */
                     96:   struct flags flags;
                     97:   struct thread *t_tick;       /* LSP walker */
                     98:   struct thread *t_lsp_refresh[ISIS_LEVELS];
1.1.1.2 ! misho      99:   int lsp_regenerate_pending[ISIS_LEVELS];
1.1       misho     100: 
                    101:   /*
                    102:    * Configurables 
                    103:    */
                    104:   struct isis_passwd area_passwd;
                    105:   struct isis_passwd domain_passwd;
                    106:   /* do we support dynamic hostnames?  */
                    107:   char dynhostname;
                    108:   /* do we support new style metrics?  */
                    109:   char newmetric;
                    110:   char oldmetric;
                    111:   /* identifies the routing instance   */
                    112:   char *area_tag;
                    113:   /* area addresses for this area      */
                    114:   struct list *area_addrs;
                    115:   u_int16_t max_lsp_lifetime[ISIS_LEVELS];
                    116:   char is_type;                        /* level-1 level-1-2 or level-2-only */
1.1.1.2 ! misho     117:   /* are we overloaded? */
        !           118:   char overload_bit;
1.1       misho     119:   u_int16_t lsp_refresh[ISIS_LEVELS];
                    120:   /* minimum time allowed before lsp retransmission */
                    121:   u_int16_t lsp_gen_interval[ISIS_LEVELS];
                    122:   /* min interval between between consequtive SPFs */
                    123:   u_int16_t min_spf_interval[ISIS_LEVELS];
                    124:   /* the percentage of LSP mtu size used, before generating a new frag */
                    125:   int lsp_frag_threshold;
                    126:   int ip_circuits;
1.1.1.2 ! misho     127:   /* logging adjacency changes? */
        !           128:   u_char log_adj_changes;
1.1       misho     129: #ifdef HAVE_IPV6
                    130:   int ipv6_circuits;
                    131: #endif                         /* HAVE_IPV6 */
                    132:   /* Counters */
                    133:   u_int32_t circuit_state_changes;
                    134: 
                    135: #ifdef TOPOLOGY_GENERATE
                    136:   struct list *topology;
1.1.1.2 ! misho     137:   u_char topology_baseis[ISIS_SYS_ID_LEN];  /* IS for the first IS emulated. */
1.1       misho     138:   char *topology_basedynh;                /* Dynamic hostname base. */
                    139:   char top_params[200];                   /* FIXME: what is reasonable? */
                    140: #endif /* TOPOLOGY_GENERATE */
                    141: };
                    142: 
                    143: void isis_init (void);
1.1.1.2 ! misho     144: void isis_new(unsigned long);
        !           145: struct isis_area *isis_area_create(const char *);
1.1       misho     146: struct isis_area *isis_area_lookup (const char *);
1.1.1.2 ! misho     147: int isis_area_get (struct vty *vty, const char *area_tag);
        !           148: void print_debug(struct vty *, int, int);
        !           149: 
        !           150: /* Master of threads. */
        !           151: extern struct thread_master *master;
1.1       misho     152: 
                    153: #define DEBUG_ADJ_PACKETS                (1<<0)
                    154: #define DEBUG_CHECKSUM_ERRORS            (1<<1)
                    155: #define DEBUG_LOCAL_UPDATES              (1<<2)
                    156: #define DEBUG_PROTOCOL_ERRORS            (1<<3)
                    157: #define DEBUG_SNP_PACKETS                (1<<4)
                    158: #define DEBUG_UPDATE_PACKETS             (1<<5)
                    159: #define DEBUG_SPF_EVENTS                 (1<<6)
                    160: #define DEBUG_SPF_STATS                  (1<<7)
                    161: #define DEBUG_SPF_TRIGGERS               (1<<8)
                    162: #define DEBUG_RTE_EVENTS                 (1<<9)
                    163: #define DEBUG_EVENTS                     (1<<10)
                    164: #define DEBUG_ZEBRA                      (1<<11)
1.1.1.2 ! misho     165: #define DEBUG_PACKET_DUMP                (1<<12)
1.1       misho     166: 
                    167: #endif /* ISISD_H */

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