version 1.1, 2012/02/21 17:26:11
|
version 1.1.1.3, 2016/11/02 10:09:10
|
Line 25
|
Line 25
|
|
|
#define ISISD_VERSION "0.0.7" |
#define ISISD_VERSION "0.0.7" |
|
|
|
#include "isisd/isis_redist.h" |
|
|
/* uncomment if you are a developer in bug hunt */ |
/* uncomment if you are a developer in bug hunt */ |
/* #define EXTREME_DEBUG */ |
/* #define EXTREME_DEBUG */ |
/* #define EXTREME_TLV_DEBUG */ |
/* #define EXTREME_TLV_DEBUG */ |
|
|
struct rmap |
|
{ |
|
char *name; |
|
struct route_map *map; |
|
}; |
|
|
|
struct isis |
struct isis |
{ |
{ |
u_long process_id; |
u_long process_id; |
int sysid_set; |
int sysid_set; |
u_char sysid[ISIS_SYS_ID_LEN]; /* SystemID for this IS */ |
u_char sysid[ISIS_SYS_ID_LEN]; /* SystemID for this IS */ |
|
u_int32_t router_id; /* Router ID from zebra */ |
struct list *area_list; /* list of IS-IS areas */ |
struct list *area_list; /* list of IS-IS areas */ |
struct list *init_circ_list; |
struct list *init_circ_list; |
struct list *nexthops; /* IPv4 next hops from this IS */ |
struct list *nexthops; /* IPv4 next hops from this IS */ |
Line 52 struct isis
|
Line 49 struct isis
|
time_t uptime; /* when did we start */ |
time_t uptime; /* when did we start */ |
struct thread *t_dync_clean; /* dynamic hostname cache cleanup thread */ |
struct thread *t_dync_clean; /* dynamic hostname cache cleanup thread */ |
|
|
/* Redistributed external information. */ | struct route_table *ext_info[REDIST_PROTOCOL_COUNT]; |
struct route_table *external_info[ZEBRA_ROUTE_MAX + 1]; | |
/* Redistribute metric info. */ | |
struct | |
{ | |
int type; /* Internal or External */ | |
int value; /* metric value */ | |
} dmetric[ZEBRA_ROUTE_MAX + 1]; | |
| |
struct | |
{ | |
char *name; | |
struct route_map *map; | |
} rmap[ZEBRA_ROUTE_MAX + 1]; | |
#ifdef HAVE_IPV6 | |
struct | |
{ | |
struct | |
{ | |
char *name; | |
struct route_map *map; | |
} rmap[ZEBRA_ROUTE_MAX + 1]; | |
} inet6_afmode; | |
#endif | |
}; |
}; |
|
|
|
extern struct isis *isis; |
|
|
struct isis_area |
struct isis_area |
{ |
{ |
struct isis *isis; /* back pointer */ |
struct isis *isis; /* back pointer */ |
Line 88 struct isis_area
|
Line 64 struct isis_area
|
struct isis_spftree *spftree6[ISIS_LEVELS]; /* The v6 SPTs */ |
struct isis_spftree *spftree6[ISIS_LEVELS]; /* The v6 SPTs */ |
struct route_table *route_table6[ISIS_LEVELS]; /* IPv6 routes */ |
struct route_table *route_table6[ISIS_LEVELS]; /* IPv6 routes */ |
#endif |
#endif |
unsigned int min_bcast_mtu; | #define DEFAULT_LSP_MTU 1497 |
| unsigned int lsp_mtu; /* Size of LSPs to generate */ |
struct list *circuit_list; /* IS-IS circuits */ |
struct list *circuit_list; /* IS-IS circuits */ |
struct flags flags; |
struct flags flags; |
struct thread *t_tick; /* LSP walker */ |
struct thread *t_tick; /* LSP walker */ |
struct thread *t_remove_aged; |
|
struct thread *t_lsp_l1_regenerate; |
|
struct thread *t_lsp_l2_regenerate; |
|
int lsp_regenerate_pending[ISIS_LEVELS]; |
|
struct thread *t_lsp_refresh[ISIS_LEVELS]; |
struct thread *t_lsp_refresh[ISIS_LEVELS]; |
|
/* t_lsp_refresh is used in two ways: |
|
* a) regular refresh of LSPs |
|
* b) (possibly throttled) updates to LSPs |
|
* |
|
* The lsp_regenerate_pending flag tracks whether the timer is active |
|
* for the a) or the b) case. |
|
* |
|
* It is of utmost importance to clear this flag when the timer is |
|
* rescheduled for normal refresh, because otherwise, updates will |
|
* be delayed until the next regular refresh. |
|
*/ |
|
int lsp_regenerate_pending[ISIS_LEVELS]; |
|
|
/* |
/* |
* Configurables |
* Configurables |
Line 114 struct isis_area
|
Line 99 struct isis_area
|
struct list *area_addrs; |
struct list *area_addrs; |
u_int16_t max_lsp_lifetime[ISIS_LEVELS]; |
u_int16_t max_lsp_lifetime[ISIS_LEVELS]; |
char is_type; /* level-1 level-1-2 or level-2-only */ |
char is_type; /* level-1 level-1-2 or level-2-only */ |
|
/* are we overloaded? */ |
|
char overload_bit; |
|
/* L1/L2 router identifier for inter-area traffic */ |
|
char attached_bit; |
u_int16_t lsp_refresh[ISIS_LEVELS]; |
u_int16_t lsp_refresh[ISIS_LEVELS]; |
/* minimum time allowed before lsp retransmission */ |
/* minimum time allowed before lsp retransmission */ |
u_int16_t lsp_gen_interval[ISIS_LEVELS]; |
u_int16_t lsp_gen_interval[ISIS_LEVELS]; |
Line 122 struct isis_area
|
Line 111 struct isis_area
|
/* the percentage of LSP mtu size used, before generating a new frag */ |
/* the percentage of LSP mtu size used, before generating a new frag */ |
int lsp_frag_threshold; |
int lsp_frag_threshold; |
int ip_circuits; |
int ip_circuits; |
|
/* logging adjacency changes? */ |
|
u_char log_adj_changes; |
#ifdef HAVE_IPV6 |
#ifdef HAVE_IPV6 |
int ipv6_circuits; |
int ipv6_circuits; |
#endif /* HAVE_IPV6 */ |
#endif /* HAVE_IPV6 */ |
/* Counters */ |
/* Counters */ |
u_int32_t circuit_state_changes; |
u_int32_t circuit_state_changes; |
|
struct isis_redist redist_settings[REDIST_PROTOCOL_COUNT] |
|
[ZEBRA_ROUTE_MAX + 1][ISIS_LEVELS]; |
|
struct route_table *ext_reach[REDIST_PROTOCOL_COUNT][ISIS_LEVELS]; |
|
|
#ifdef TOPOLOGY_GENERATE |
#ifdef TOPOLOGY_GENERATE |
struct list *topology; |
struct list *topology; |
char topology_baseis[ISIS_SYS_ID_LEN]; /* IS for the first IS emulated. */ | u_char topology_baseis[ISIS_SYS_ID_LEN]; /* IS for the first IS emulated. */ |
char *topology_basedynh; /* Dynamic hostname base. */ |
char *topology_basedynh; /* Dynamic hostname base. */ |
char top_params[200]; /* FIXME: what is reasonable? */ |
char top_params[200]; /* FIXME: what is reasonable? */ |
#endif /* TOPOLOGY_GENERATE */ |
#endif /* TOPOLOGY_GENERATE */ |
}; |
}; |
|
|
void isis_init (void); |
void isis_init (void); |
|
void isis_new(unsigned long); |
|
struct isis_area *isis_area_create(const char *); |
struct isis_area *isis_area_lookup (const char *); |
struct isis_area *isis_area_lookup (const char *); |
|
int isis_area_get (struct vty *vty, const char *area_tag); |
|
void print_debug(struct vty *, int, int); |
|
|
|
/* Master of threads. */ |
|
extern struct thread_master *master; |
|
|
#define DEBUG_ADJ_PACKETS (1<<0) |
#define DEBUG_ADJ_PACKETS (1<<0) |
#define DEBUG_CHECKSUM_ERRORS (1<<1) |
#define DEBUG_CHECKSUM_ERRORS (1<<1) |
#define DEBUG_LOCAL_UPDATES (1<<2) |
#define DEBUG_LOCAL_UPDATES (1<<2) |
Line 151 struct isis_area *isis_area_lookup (const char *);
|
Line 152 struct isis_area *isis_area_lookup (const char *);
|
#define DEBUG_RTE_EVENTS (1<<9) |
#define DEBUG_RTE_EVENTS (1<<9) |
#define DEBUG_EVENTS (1<<10) |
#define DEBUG_EVENTS (1<<10) |
#define DEBUG_ZEBRA (1<<11) |
#define DEBUG_ZEBRA (1<<11) |
|
#define DEBUG_PACKET_DUMP (1<<12) |
|
#define DEBUG_LSP_GEN (1<<13) |
|
#define DEBUG_LSP_SCHED (1<<14) |
|
|
|
#define lsp_debug(...) \ |
|
do \ |
|
{ \ |
|
if (isis->debugs & DEBUG_LSP_GEN) \ |
|
zlog_debug(__VA_ARGS__); \ |
|
} \ |
|
while (0) |
|
|
|
#define sched_debug(...) \ |
|
do \ |
|
{ \ |
|
if (isis->debugs & DEBUG_LSP_SCHED) \ |
|
zlog_debug(__VA_ARGS__); \ |
|
} \ |
|
while (0) |
|
|
#endif /* ISISD_H */ |
#endif /* ISISD_H */ |