From 00995cfcc9cb30afabb3242837753ab1eb7fdb85 Mon Sep 17 00:00:00 2001 From: hasso Date: Wed, 19 May 2004 13:43:50 +0000 Subject: Commit 100% working part of patch from Laurent Rabret ([quagga-dev 830]). Also tiny temporary fix from me to spf thread crash. Will look at it later. --- isisd/ChangeLog | 9 +++++++++ isisd/isis_constants.h | 2 +- isisd/isis_main.c | 3 +-- isisd/isis_spf.c | 4 +++- isisd/isis_tlv.c | 15 +++++++++++++++ isisd/isis_tlv.h | 5 ++++- 6 files changed, 33 insertions(+), 5 deletions(-) (limited to 'isisd') diff --git a/isisd/ChangeLog b/isisd/ChangeLog index 1d2e22f5..4c119e2d 100644 --- a/isisd/ChangeLog +++ b/isisd/ChangeLog @@ -1,3 +1,12 @@ +2004-05-19 Laurent Rabret + + * isis_constants.h: change the ISIS Hello interval from 1 to 10 (cisco's + default value). + * isis_main.c: suppress a bad "#if 0 #endif" block for isis to be + activated on startup. + * isis_tlv.[c|h]: LSP recognition of the ISIS Graceful Restart LSP (not + implemented yet). + 2004-05-19 Rivo Nurges * *.c: Removing many useless net/ethernet.h includes and some tiny diff --git a/isisd/isis_constants.h b/isisd/isis_constants.h index 852b8a1f..c732bfc4 100644 --- a/isisd/isis_constants.h +++ b/isisd/isis_constants.h @@ -65,7 +65,7 @@ #define ISIS_LEVEL1 1 #define ISIS_LEVEL2 2 -#define HELLO_INTERVAL 1 +#define HELLO_INTERVAL 10 #define HELLO_MINIMAL HELLO_INTERVAL #define HELLO_MULTIPLIER 3 #define DEFAULT_PRIORITY 64 diff --git a/isisd/isis_main.c b/isisd/isis_main.c index 0d9cf3ef..e763a9e8 100644 --- a/isisd/isis_main.c +++ b/isisd/isis_main.c @@ -312,10 +312,9 @@ main (int argc, char **argv, char **envp) /* parse config file */ /* this is needed three times! because we have interfaces before the areas */ vty_read_config (config_file, config_current, config_default); -#if 0 vty_read_config (config_file, config_current, config_default); vty_read_config (config_file, config_current, config_default); -#endif + /* demonize */ if (daemon_mode) daemon (0, 0); diff --git a/isisd/isis_spf.c b/isisd/isis_spf.c index 03f724f6..1987e0d2 100644 --- a/isisd/isis_spf.c +++ b/isisd/isis_spf.c @@ -1037,7 +1037,9 @@ isis_spf_schedule (struct isis_area *area, int level) spftree->pending = 1; return retval; } - THREAD_TIMER_OFF(spftree->t_spf_periodic); + /* FIXME: This stuff is just mess. All spf thread add/cancel + logic should be reviewed. */ + /* THREAD_TIMER_OFF(spftree->t_spf_periodic); */ if (diff < MINIMUM_SPF_INTERVAL) { if (level == 1) diff --git a/isisd/isis_tlv.c b/isisd/isis_tlv.c index ab39ceba..d7bbb914 100644 --- a/isisd/isis_tlv.c +++ b/isisd/isis_tlv.c @@ -651,6 +651,21 @@ parse_tlvs (char *areatag, u_char *stream, int size, u_int32_t *expected, } break; + case GRACEFUL_RESTART: + /* +-------+-------+-------+-------+-------+-------+-------+-------+ + * | Reserved | SA | RA | RR | 1 + * +-------+-------+-------+-------+-------+-------+-------+-------+ + * | Remaining Time | 2 + * +---------------------------------------------------------------+ + * | Restarting Neighbor ID (If known) | 0-8 + * +---------------------------------------------------------------+ + */ + *found |= TLVFLAG_GRACEFUL_RESTART; + if (*expected & TLVFLAG_GRACEFUL_RESTART) { + /* FIXME: make this work */ + } + pnt += length; + break; default: zlog_warn ("ISIS-TLV (%s): unsupported TLV type %d, length %d", diff --git a/isisd/isis_tlv.h b/isisd/isis_tlv.h index 79c0c46f..e030385e 100644 --- a/isisd/isis_tlv.h +++ b/isisd/isis_tlv.h @@ -27,7 +27,7 @@ /* * Structures found in TLV's. * this header is fully complient with - * draft-ietf-isis-wg-tlv-codepoints-02.txt + * RFC 3359 1. TLV Codepoints reserved ____________________________________________________ Name Value IIH LSP SNP Status @@ -46,6 +46,7 @@ LSPBufferSize 14 n y n ISO 10589 Rev 2 Draft TE IIS Neigh. 22 n y n IETF-draft DECnet Phase IV 42 y n n DEC (ancient) + Lucent Proprietary 66 n y n IP Int. Reach 128 n y n RFC 1195 Prot. Supported 129 y y n RFC 1195 IP Ext. Address 130 n y n RFC 1195 @@ -87,6 +88,7 @@ #define TE_ROUTER_ID 134 #define TE_IPV4_REACHABILITY 135 #define DYNAMIC_HOSTNAME 137 +#define GRACEFUL_RESTART 211 #define IPV6_REACHABILITY 236 #define IPV6_ADDR 232 #define WAY3_HELLO 240 @@ -236,6 +238,7 @@ struct tlvs { #define TLVFLAG_3WAY_HELLO (1<<18) #define TLVFLAG_TE_ROUTER_ID (1<<19) #define TLVFLAG_CHECKSUM (1<<20) +#define TLVFLAG_GRACEFUL_RESTART (1<<21) void init_tlvs (struct tlvs *tlvs, uint32_t expected); void free_tlvs (struct tlvs *tlvs); -- cgit v1.2.1