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

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 */
        !            43:   struct list *area_list;      /* list of IS-IS areas */
        !            44:   struct list *init_circ_list;
        !            45:   struct list *nexthops;       /* IPv4 next hops from this IS */
        !            46: #ifdef HAVE_IPV6
        !            47:   struct list *nexthops6;      /* IPv6 next hops from this IS */
        !            48: #endif                         /* HAVE_IPV6 */
        !            49:   u_char max_area_addrs;       /* maximumAreaAdresses */
        !            50:   struct area_addr *man_area_addrs;    /* manualAreaAddresses */
        !            51:   u_int32_t debugs;            /* bitmap for debug */
        !            52:   time_t uptime;               /* when did we start */
        !            53:   struct thread *t_dync_clean; /* dynamic hostname cache cleanup thread */
        !            54: 
        !            55:   /* Redistributed external information. */
        !            56:   struct route_table *external_info[ZEBRA_ROUTE_MAX + 1];
        !            57:   /* Redistribute metric info. */
        !            58:   struct
        !            59:   {
        !            60:     int type;                  /* Internal or External  */
        !            61:     int value;                 /* metric value */
        !            62:   } dmetric[ZEBRA_ROUTE_MAX + 1];
        !            63: 
        !            64:   struct
        !            65:   {
        !            66:     char *name;
        !            67:     struct route_map *map;
        !            68:   } rmap[ZEBRA_ROUTE_MAX + 1];
        !            69: #ifdef HAVE_IPV6
        !            70:   struct
        !            71:   {
        !            72:     struct
        !            73:     {
        !            74:       char *name;
        !            75:       struct route_map *map;
        !            76:     } rmap[ZEBRA_ROUTE_MAX + 1];
        !            77:   } inet6_afmode;
        !            78: #endif
        !            79: };
        !            80: 
        !            81: struct isis_area
        !            82: {
        !            83:   struct isis *isis;                             /* back pointer */
        !            84:   dict_t *lspdb[ISIS_LEVELS];                    /* link-state dbs */
        !            85:   struct isis_spftree *spftree[ISIS_LEVELS];     /* The v4 SPTs */
        !            86:   struct route_table *route_table[ISIS_LEVELS];          /* IPv4 routes */
        !            87: #ifdef HAVE_IPV6
        !            88:   struct isis_spftree *spftree6[ISIS_LEVELS];    /* The v6 SPTs */
        !            89:   struct route_table *route_table6[ISIS_LEVELS];  /* IPv6 routes */
        !            90: #endif
        !            91:   unsigned int min_bcast_mtu;
        !            92:   struct list *circuit_list;   /* IS-IS circuits */
        !            93:   struct flags flags;
        !            94:   struct thread *t_tick;       /* LSP walker */
        !            95:   struct thread *t_remove_aged;
        !            96:   struct thread *t_lsp_l1_regenerate;
        !            97:   struct thread *t_lsp_l2_regenerate;
        !            98:   int lsp_regenerate_pending[ISIS_LEVELS];
        !            99:   struct thread *t_lsp_refresh[ISIS_LEVELS];
        !           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 */
        !           117:   u_int16_t lsp_refresh[ISIS_LEVELS];
        !           118:   /* minimum time allowed before lsp retransmission */
        !           119:   u_int16_t lsp_gen_interval[ISIS_LEVELS];
        !           120:   /* min interval between between consequtive SPFs */
        !           121:   u_int16_t min_spf_interval[ISIS_LEVELS];
        !           122:   /* the percentage of LSP mtu size used, before generating a new frag */
        !           123:   int lsp_frag_threshold;
        !           124:   int ip_circuits;
        !           125: #ifdef HAVE_IPV6
        !           126:   int ipv6_circuits;
        !           127: #endif                         /* HAVE_IPV6 */
        !           128:   /* Counters */
        !           129:   u_int32_t circuit_state_changes;
        !           130: 
        !           131: #ifdef TOPOLOGY_GENERATE
        !           132:   struct list *topology;
        !           133:   char topology_baseis[ISIS_SYS_ID_LEN];  /* IS for the first IS emulated. */
        !           134:   char *topology_basedynh;                /* Dynamic hostname base. */
        !           135:   char top_params[200];                   /* FIXME: what is reasonable? */
        !           136: #endif /* TOPOLOGY_GENERATE */
        !           137: };
        !           138: 
        !           139: void isis_init (void);
        !           140: struct isis_area *isis_area_lookup (const char *);
        !           141: 
        !           142: #define DEBUG_ADJ_PACKETS                (1<<0)
        !           143: #define DEBUG_CHECKSUM_ERRORS            (1<<1)
        !           144: #define DEBUG_LOCAL_UPDATES              (1<<2)
        !           145: #define DEBUG_PROTOCOL_ERRORS            (1<<3)
        !           146: #define DEBUG_SNP_PACKETS                (1<<4)
        !           147: #define DEBUG_UPDATE_PACKETS             (1<<5)
        !           148: #define DEBUG_SPF_EVENTS                 (1<<6)
        !           149: #define DEBUG_SPF_STATS                  (1<<7)
        !           150: #define DEBUG_SPF_TRIGGERS               (1<<8)
        !           151: #define DEBUG_RTE_EVENTS                 (1<<9)
        !           152: #define DEBUG_EVENTS                     (1<<10)
        !           153: #define DEBUG_ZEBRA                      (1<<11)
        !           154: 
        !           155: #endif /* ISISD_H */

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