* isis_circuit.[ch]: Some preliminary support for specifying wide

circuit metrics. Needs more thinking though, but should do for now.
This commit is contained in:
hasso 2005-09-26 17:05:55 +00:00
parent 2984d26eb0
commit f21fb27298
3 changed files with 24 additions and 10 deletions

View File

@ -1,3 +1,8 @@
2005-09-26 Hasso Tepper <hasso at quagga.net>
* isis_circuit.[ch]: Some preliminary support for specifying wide
circuit metrics. Needs more thinking though, but should do for now.
2005-09-26 Hasso Tepper <hasso at quagga.net> 2005-09-26 Hasso Tepper <hasso at quagga.net>
* isisd.[ch]: Introduce oldmetric flag for area and transition * isisd.[ch]: Introduce oldmetric flag for area and transition

View File

@ -77,6 +77,7 @@ isis_circuit_new ()
circuit->metrics[i].metric_expense = METRICS_UNSUPPORTED; circuit->metrics[i].metric_expense = METRICS_UNSUPPORTED;
circuit->metrics[i].metric_error = METRICS_UNSUPPORTED; circuit->metrics[i].metric_error = METRICS_UNSUPPORTED;
circuit->metrics[i].metric_delay = METRICS_UNSUPPORTED; circuit->metrics[i].metric_delay = METRICS_UNSUPPORTED;
circuit->te_metric[i] = DEFAULT_CIRCUIT_METRICS;
} }
} }
else else
@ -785,12 +786,12 @@ isis_interface_config_write (struct vty *vty)
} }
} }
/* ISIS - Metric */ /* ISIS - Metric */
if (c->metrics[0].metric_default == c->metrics[1].metric_default) if (c->te_metric[0] == c->te_metric[1])
{ {
if (c->metrics[0].metric_default != DEFAULT_CIRCUIT_METRICS) if (c->te_metric[0] != DEFAULT_CIRCUIT_METRICS)
{ {
vty_out (vty, " isis metric %d%s", vty_out (vty, " isis metric %d%s", c->te_metric[0],
c->metrics[0].metric_default, VTY_NEWLINE); VTY_NEWLINE);
write++; write++;
} }
} }
@ -798,11 +799,10 @@ isis_interface_config_write (struct vty *vty)
{ {
for (i = 0; i < 2; i++) for (i = 0; i < 2; i++)
{ {
if (c->metrics[i].metric_default != DEFAULT_CIRCUIT_METRICS) if (c->te_metric[i] != DEFAULT_CIRCUIT_METRICS)
{ {
vty_out (vty, " isis metric %d level-%d%s", vty_out (vty, " isis metric %d level-%d%s",
c->metrics[i].metric_default, i + 1, c->te_metric[i], i + 1, VTY_NEWLINE);
VTY_NEWLINE);
write++; write++;
} }
} }
@ -1235,7 +1235,7 @@ ALIAS (no_isis_priority_l2,
/* Metric command */ /* Metric command */
DEFUN (isis_metric, DEFUN (isis_metric,
isis_metric_cmd, isis_metric_cmd,
"isis metric <0-63>", "isis metric <0-16777215>",
"IS-IS commands\n" "IS-IS commands\n"
"Set default metric for circuit\n" "Set default metric for circuit\n"
"Default metric value\n") "Default metric value\n")
@ -1254,6 +1254,12 @@ ALIAS (no_isis_priority_l2,
met = atoi (argv[0]); met = atoi (argv[0]);
circuit->te_metric[0] = met;
circuit->te_metric[1] = met;
if (met > 63)
met = 63;
circuit->metrics[0].metric_default = met; circuit->metrics[0].metric_default = met;
circuit->metrics[1].metric_default = met; circuit->metrics[1].metric_default = met;
@ -1278,6 +1284,8 @@ DEFUN (no_isis_metric,
} }
assert (circuit); assert (circuit);
circuit->te_metric[0] = DEFAULT_CIRCUIT_METRICS;
circuit->te_metric[1] = DEFAULT_CIRCUIT_METRICS;
circuit->metrics[0].metric_default = DEFAULT_CIRCUIT_METRICS; circuit->metrics[0].metric_default = DEFAULT_CIRCUIT_METRICS;
circuit->metrics[1].metric_default = DEFAULT_CIRCUIT_METRICS; circuit->metrics[1].metric_default = DEFAULT_CIRCUIT_METRICS;
@ -1286,14 +1294,14 @@ DEFUN (no_isis_metric,
ALIAS (no_isis_metric, ALIAS (no_isis_metric,
no_isis_metric_arg_cmd, no_isis_metric_arg_cmd,
"no isis metric <0-127>", "no isis metric <0-16777215>",
NO_STR NO_STR
"IS-IS commands\n" "IS-IS commands\n"
"Set default metric for circuit\n" "Set default metric for circuit\n"
"Default metric value\n") "Default metric value\n")
/* end of metrics */ /* end of metrics */
DEFUN (isis_hello_interval, DEFUN (isis_hello_interval,
isis_hello_interval_cmd, isis_hello_interval_cmd,
"isis hello-interval (<1-65535>|minimal)", "isis hello-interval (<1-65535>|minimal)",
"IS-IS commands\n" "IS-IS commands\n"

View File

@ -108,6 +108,7 @@ struct isis_circuit
u_int16_t csnp_interval[2]; /* level-1 csnp-interval in seconds */ u_int16_t csnp_interval[2]; /* level-1 csnp-interval in seconds */
u_int16_t psnp_interval[2]; /* level-1 psnp-interval in seconds */ u_int16_t psnp_interval[2]; /* level-1 psnp-interval in seconds */
struct metric metrics[2]; /* l1XxxMetric */ struct metric metrics[2]; /* l1XxxMetric */
u_int32_t te_metric[2];
struct password *c_rx_passwds; /* circuitReceivePasswords */ struct password *c_rx_passwds; /* circuitReceivePasswords */
struct password *c_tc_passwd; /* circuitTransmitPassword */ struct password *c_tc_passwd; /* circuitTransmitPassword */
int ip_router; /* Route IP ? */ int ip_router; /* Route IP ? */