From 00995cfcc9cb30afabb3242837753ab1eb7fdb85 Mon Sep 17 00:00:00 2001
From: hasso <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 <laurent.rabret at francetelecom.com>
+
+	* 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 <rix at estpak.ee>
 
 	* *.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