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

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: 
1.1.1.3 ! misho      28: #include "isisd/isis_redist.h"
        !            29: 
1.1       misho      30: /* uncomment if you are a developer in bug hunt */
                     31: /* #define EXTREME_DEBUG  */
                     32: /* #define EXTREME_TLV_DEBUG */
                     33: 
                     34: struct isis
                     35: {
                     36:   u_long process_id;
                     37:   int sysid_set;
                     38:   u_char sysid[ISIS_SYS_ID_LEN];       /* SystemID for this IS */
1.1.1.2   misho      39:   u_int32_t router_id;          /* Router ID from zebra */
1.1       misho      40:   struct list *area_list;      /* list of IS-IS areas */
                     41:   struct list *init_circ_list;
                     42:   struct list *nexthops;       /* IPv4 next hops from this IS */
                     43: #ifdef HAVE_IPV6
                     44:   struct list *nexthops6;      /* IPv6 next hops from this IS */
                     45: #endif                         /* HAVE_IPV6 */
                     46:   u_char max_area_addrs;       /* maximumAreaAdresses */
                     47:   struct area_addr *man_area_addrs;    /* manualAreaAddresses */
                     48:   u_int32_t debugs;            /* bitmap for debug */
                     49:   time_t uptime;               /* when did we start */
                     50:   struct thread *t_dync_clean; /* dynamic hostname cache cleanup thread */
                     51: 
1.1.1.3 ! misho      52:   struct route_table *ext_info[REDIST_PROTOCOL_COUNT];
1.1       misho      53: };
                     54: 
1.1.1.2   misho      55: extern struct isis *isis;
                     56: 
1.1       misho      57: struct isis_area
                     58: {
                     59:   struct isis *isis;                             /* back pointer */
                     60:   dict_t *lspdb[ISIS_LEVELS];                    /* link-state dbs */
                     61:   struct isis_spftree *spftree[ISIS_LEVELS];     /* The v4 SPTs */
                     62:   struct route_table *route_table[ISIS_LEVELS];          /* IPv4 routes */
                     63: #ifdef HAVE_IPV6
                     64:   struct isis_spftree *spftree6[ISIS_LEVELS];    /* The v6 SPTs */
                     65:   struct route_table *route_table6[ISIS_LEVELS];  /* IPv6 routes */
                     66: #endif
1.1.1.3 ! misho      67: #define DEFAULT_LSP_MTU 1497
        !            68:   unsigned int lsp_mtu;                                  /* Size of LSPs to generate */
1.1       misho      69:   struct list *circuit_list;   /* IS-IS circuits */
                     70:   struct flags flags;
                     71:   struct thread *t_tick;       /* LSP walker */
                     72:   struct thread *t_lsp_refresh[ISIS_LEVELS];
1.1.1.3 ! misho      73:   /* t_lsp_refresh is used in two ways:
        !            74:    * a) regular refresh of LSPs
        !            75:    * b) (possibly throttled) updates to LSPs
        !            76:    *
        !            77:    * The lsp_regenerate_pending flag tracks whether the timer is active
        !            78:    * for the a) or the b) case.
        !            79:    *
        !            80:    * It is of utmost importance to clear this flag when the timer is
        !            81:    * rescheduled for normal refresh, because otherwise, updates will
        !            82:    * be delayed until the next regular refresh.
        !            83:    */
1.1.1.2   misho      84:   int lsp_regenerate_pending[ISIS_LEVELS];
1.1       misho      85: 
                     86:   /*
                     87:    * Configurables 
                     88:    */
                     89:   struct isis_passwd area_passwd;
                     90:   struct isis_passwd domain_passwd;
                     91:   /* do we support dynamic hostnames?  */
                     92:   char dynhostname;
                     93:   /* do we support new style metrics?  */
                     94:   char newmetric;
                     95:   char oldmetric;
                     96:   /* identifies the routing instance   */
                     97:   char *area_tag;
                     98:   /* area addresses for this area      */
                     99:   struct list *area_addrs;
                    100:   u_int16_t max_lsp_lifetime[ISIS_LEVELS];
                    101:   char is_type;                        /* level-1 level-1-2 or level-2-only */
1.1.1.2   misho     102:   /* are we overloaded? */
                    103:   char overload_bit;
1.1.1.3 ! misho     104:   /* L1/L2 router identifier for inter-area traffic */
        !           105:   char attached_bit;
1.1       misho     106:   u_int16_t lsp_refresh[ISIS_LEVELS];
                    107:   /* minimum time allowed before lsp retransmission */
                    108:   u_int16_t lsp_gen_interval[ISIS_LEVELS];
                    109:   /* min interval between between consequtive SPFs */
                    110:   u_int16_t min_spf_interval[ISIS_LEVELS];
                    111:   /* the percentage of LSP mtu size used, before generating a new frag */
                    112:   int lsp_frag_threshold;
                    113:   int ip_circuits;
1.1.1.2   misho     114:   /* logging adjacency changes? */
                    115:   u_char log_adj_changes;
1.1       misho     116: #ifdef HAVE_IPV6
                    117:   int ipv6_circuits;
                    118: #endif                         /* HAVE_IPV6 */
                    119:   /* Counters */
                    120:   u_int32_t circuit_state_changes;
1.1.1.3 ! misho     121:   struct isis_redist redist_settings[REDIST_PROTOCOL_COUNT]
        !           122:                                     [ZEBRA_ROUTE_MAX + 1][ISIS_LEVELS];
        !           123:   struct route_table *ext_reach[REDIST_PROTOCOL_COUNT][ISIS_LEVELS];
1.1       misho     124: 
                    125: #ifdef TOPOLOGY_GENERATE
                    126:   struct list *topology;
1.1.1.2   misho     127:   u_char topology_baseis[ISIS_SYS_ID_LEN];  /* IS for the first IS emulated. */
1.1       misho     128:   char *topology_basedynh;                /* Dynamic hostname base. */
                    129:   char top_params[200];                   /* FIXME: what is reasonable? */
                    130: #endif /* TOPOLOGY_GENERATE */
                    131: };
                    132: 
                    133: void isis_init (void);
1.1.1.2   misho     134: void isis_new(unsigned long);
                    135: struct isis_area *isis_area_create(const char *);
1.1       misho     136: struct isis_area *isis_area_lookup (const char *);
1.1.1.2   misho     137: int isis_area_get (struct vty *vty, const char *area_tag);
                    138: void print_debug(struct vty *, int, int);
                    139: 
                    140: /* Master of threads. */
                    141: extern struct thread_master *master;
1.1       misho     142: 
                    143: #define DEBUG_ADJ_PACKETS                (1<<0)
                    144: #define DEBUG_CHECKSUM_ERRORS            (1<<1)
                    145: #define DEBUG_LOCAL_UPDATES              (1<<2)
                    146: #define DEBUG_PROTOCOL_ERRORS            (1<<3)
                    147: #define DEBUG_SNP_PACKETS                (1<<4)
                    148: #define DEBUG_UPDATE_PACKETS             (1<<5)
                    149: #define DEBUG_SPF_EVENTS                 (1<<6)
                    150: #define DEBUG_SPF_STATS                  (1<<7)
                    151: #define DEBUG_SPF_TRIGGERS               (1<<8)
                    152: #define DEBUG_RTE_EVENTS                 (1<<9)
                    153: #define DEBUG_EVENTS                     (1<<10)
                    154: #define DEBUG_ZEBRA                      (1<<11)
1.1.1.2   misho     155: #define DEBUG_PACKET_DUMP                (1<<12)
1.1.1.3 ! misho     156: #define DEBUG_LSP_GEN                    (1<<13)
        !           157: #define DEBUG_LSP_SCHED                  (1<<14)
        !           158: 
        !           159: #define lsp_debug(...) \
        !           160:   do \
        !           161:     { \
        !           162:       if (isis->debugs & DEBUG_LSP_GEN) \
        !           163:         zlog_debug(__VA_ARGS__); \
        !           164:     } \
        !           165:   while (0)
        !           166: 
        !           167: #define sched_debug(...) \
        !           168:   do \
        !           169:     { \
        !           170:       if (isis->debugs & DEBUG_LSP_SCHED) \
        !           171:         zlog_debug(__VA_ARGS__); \
        !           172:     } \
        !           173:   while (0)
1.1       misho     174: 
                    175: #endif /* ISISD_H */

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