diff options
author | hasso <hasso> | 2005-09-26 16:49:07 +0000 |
---|---|---|
committer | hasso <hasso> | 2005-09-26 16:49:07 +0000 |
commit | 2984d26eb08f42a8f470277cef6c1657f984e968 (patch) | |
tree | 94066fba1723bbc2ea9badaf2dc09ae9f7948a57 | |
parent | ffe543af88fca1d8be49c3a3fe2f50b02919c689 (diff) |
* isisd.[ch]: Introduce oldmetric flag for area and transition
metricstyle command. With metricstyle wide only extended TLVs
should be used.
-rw-r--r-- | isisd/ChangeLog | 6 | ||||
-rw-r--r-- | isisd/isisd.c | 43 | ||||
-rw-r--r-- | isisd/isisd.h | 1 |
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 */ |