summaryrefslogtreecommitdiff
path: root/isisd
diff options
context:
space:
mode:
authorhasso <hasso>2005-09-26 16:49:07 +0000
committerhasso <hasso>2005-09-26 16:49:07 +0000
commit2984d26eb08f42a8f470277cef6c1657f984e968 (patch)
tree94066fba1723bbc2ea9badaf2dc09ae9f7948a57 /isisd
parentffe543af88fca1d8be49c3a3fe2f50b02919c689 (diff)
* isisd.[ch]: Introduce oldmetric flag for area and transition
metricstyle command. With metricstyle wide only extended TLVs should be used.
Diffstat (limited to 'isisd')
-rw-r--r--isisd/ChangeLog6
-rw-r--r--isisd/isisd.c43
-rw-r--r--isisd/isisd.h1
3 files changed, 36 insertions, 14 deletions
diff --git a/isisd/ChangeLog b/isisd/ChangeLog
index a695800e..139985e3 100644
--- a/isisd/ChangeLog
+++ b/isisd/ChangeLog
@@ -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
diff --git a/isisd/isisd.c b/isisd/isisd.c
index 1f0167bb..2a60b889 100644
--- a/isisd/isisd.c
+++ b/isisd/isisd.c
@@ -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)
{
diff --git a/isisd/isisd.h b/isisd/isisd.h
index e66f60e7..e61376e5 100644
--- a/isisd/isisd.h
+++ b/isisd/isisd.h
@@ -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 */