]> git.puffer.fish Git - mirror/frr.git/commitdiff
* isisd.[ch]: Introduce oldmetric flag for area and transition
authorhasso <hasso>
Mon, 26 Sep 2005 16:49:07 +0000 (16:49 +0000)
committerhasso <hasso>
Mon, 26 Sep 2005 16:49:07 +0000 (16:49 +0000)
  metricstyle command. With metricstyle wide only extended TLVs
  should be used.

isisd/ChangeLog
isisd/isisd.c
isisd/isisd.h

index a695800e5604aec85e0ced39089ebc1904143b0d..139985e39697a216f8d25b96f64c92c22f1689db 100644 (file)
@@ -1,3 +1,9 @@
+2005-09-26 Hasso Tepper <hasso at quagga.net>
+
+       * isisd.[ch]: Introduce oldmetric flag for area and transition
+         metricstyle command. With metricstyle wide only extended TLVs
+         should be used.
+
 2005-09-25 Hasso Tepper <hasso at quagga.net>
 
        * dict.[ch]: Revert all nonfunctional changes. It's external module
index 1f0167bb0171189c3975efd229ec7a85c8f404ba..2a60b8890147830953834537cefc13af8cccd8e1 100644 (file)
@@ -126,6 +126,7 @@ isis_area_create ()
   area->min_spf_interval[0] = MINIMUM_SPF_INTERVAL;
   area->min_spf_interval[1] = MINIMUM_SPF_INTERVAL;
   area->dynhostname = 1;
+  area->oldmetric = 1;
   area->lsp_frag_threshold = 90;
 #ifdef TOPOLOGY_GENERATE
   memcpy (area->topology_baseis, DEFAULT_TOPOLOGY_BASEIS, ISIS_SYS_ID_LEN);
@@ -1356,40 +1357,50 @@ ALIAS (no_lsp_gen_interval_l2,
 
 DEFUN (metric_style,
        metric_style_cmd,
-       "metric-style (narrow|wide)",
+       "metric-style (narrow|transition|wide)",
        "Use old-style (ISO 10589) or new-style packet formats\n"
        "Use old style of TLVs with narrow metric\n"
+       "Send and accept both styles of TLVs during transition\n"
        "Use new style of TLVs to carry wider metric\n")
 {
   struct isis_area *area;
 
   area = vty->index;
   assert (area);
-  if (!strcmp (argv[0], "wide"))
-    area->newmetric = 1;
-  else
-    area->newmetric = 0;
+
+  if (strncmp (argv[0], "w", 1) == 0)
+    {
+      area->newmetric = 1;
+      area->oldmetric = 0;
+    }
+  else if (strncmp (argv[0], "t", 1) == 0)
+    {
+      area->newmetric = 1;
+      area->oldmetric = 1;
+    }
+  else if (strncmp (argv[0], "n", 1) == 0)
+    {
+      area->newmetric = 0;
+      area->oldmetric = 1;
+    }
 
   return CMD_SUCCESS;
 }
 
 DEFUN (no_metric_style,
        no_metric_style_cmd,
-       "no metric-style (narrow|wide)",
+       "no metric-style",
        NO_STR
-       "Use old-style (ISO 10589) or new-style packet formats\n"
-       "Use old style of TLVs with narrow metric\n"
-       "Use new style of TLVs to carry wider metric\n")
+       "Use old-style (ISO 10589) or new-style packet formats\n")
 {
   struct isis_area *area;
 
   area = vty->index;
   assert (area);
 
-  if (!strcmp (argv[0], "wide"))
-    area->newmetric = 0;
-  else
-    area->newmetric = 1;
+  /* Default is narrow metric. */
+  area->newmetric = 0;
+  area->oldmetric = 1;
 
   return CMD_SUCCESS;
 }
@@ -1891,9 +1902,13 @@ isis_config_write (struct vty *vty)
        /* ISIS - Metric-Style - when true displays wide */
        if (area->newmetric)
          {
-           vty_out (vty, " metric-style wide%s", VTY_NEWLINE);
+           if (!area->oldmetric)
+             vty_out (vty, " metric-style wide%s", VTY_NEWLINE);
+           else
+             vty_out (vty, " metric-style transition%s", VTY_NEWLINE);
            write++;
          }
+
        /* ISIS - Area is-type (level-1-2 is default) */
        if (area->is_type == IS_LEVEL_1)
          {
index e66f60e79690aa57c77e8f4d08060a37d7aabc85..e61376e5b85c72d416b5e6a6ef4f34ff7dfbdefe 100644 (file)
@@ -104,6 +104,7 @@ struct isis_area
   char dynhostname;
   /* do we support new style metrics?  */
   char newmetric;
+  char oldmetric;
   /* identifies the routing instance   */
   char *area_tag;
   /* area addresses for this area      */