Expense, Error and Delay metrics never quite made it into the real world. Either way isisd does nothing useful with them, so let's drop them from the code. If someone wants to implement them, this patch can still be reverted.
Signed-off-by: David Lamparter <equi...@opensourcerouting.org> --- isisd/isis_circuit.c | 11 ++++------- isisd/isis_circuit.h | 2 +- isisd/isis_lsp.c | 21 +++++++++++++++------ 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/isisd/isis_circuit.c b/isisd/isis_circuit.c index 5953d23..1df9e29 100644 --- a/isisd/isis_circuit.c +++ b/isisd/isis_circuit.c @@ -91,10 +91,7 @@ isis_circuit_new () circuit->csnp_interval[i] = DEFAULT_CSNP_INTERVAL; circuit->psnp_interval[i] = DEFAULT_PSNP_INTERVAL; circuit->priority[i] = DEFAULT_PRIORITY; - circuit->metrics[i].metric_default = DEFAULT_CIRCUIT_METRIC; - circuit->metrics[i].metric_expense = METRICS_UNSUPPORTED; - circuit->metrics[i].metric_error = METRICS_UNSUPPORTED; - circuit->metrics[i].metric_delay = METRICS_UNSUPPORTED; + circuit->metric[i] = DEFAULT_CIRCUIT_METRIC; circuit->te_metric[i] = DEFAULT_CIRCUIT_METRIC; } @@ -892,7 +889,7 @@ isis_circuit_print_vty (struct isis_circuit *circuit, struct vty *vty, vty_out (vty, " Metric: %d", circuit->te_metric[0]); else vty_out (vty, " Metric: %d", - circuit->metrics[0].metric_default); + circuit->metric[0]); if (!circuit->is_passive) { vty_out (vty, ", Active neighbors: %u%s", @@ -925,7 +922,7 @@ isis_circuit_print_vty (struct isis_circuit *circuit, struct vty *vty, vty_out (vty, " Metric: %d", circuit->te_metric[1]); else vty_out (vty, " Metric: %d", - circuit->metrics[1].metric_default); + circuit->metric[1]); if (!circuit->is_passive) { vty_out (vty, ", Active neighbors: %u%s", @@ -1293,7 +1290,7 @@ isis_circuit_metric_set (struct isis_circuit *circuit, int level, int metric) return -1; circuit->te_metric[level - 1] = metric; - circuit->metrics[level - 1].metric_default = metric; + circuit->metric[level - 1] = metric; if (circuit->area) lsp_regenerate_schedule (circuit->area, level, 0); diff --git a/isisd/isis_circuit.h b/isisd/isis_circuit.h index 45bac09..9d6e426 100644 --- a/isisd/isis_circuit.h +++ b/isisd/isis_circuit.h @@ -117,7 +117,7 @@ struct isis_circuit u_int16_t hello_multiplier[2]; /* l1HelloMultiplier */ u_int16_t csnp_interval[2]; /* level-1 csnp-interval in seconds */ u_int16_t psnp_interval[2]; /* level-1 psnp-interval in seconds */ - struct metric metrics[2]; /* l1XxxMetric */ + u_int8_t metric[2]; u_int32_t te_metric[2]; int ip_router; /* Route IP ? */ int is_passive; /* Is Passive ? */ diff --git a/isisd/isis_lsp.c b/isisd/isis_lsp.c index 7309248..81f1958 100644 --- a/isisd/isis_lsp.c +++ b/isisd/isis_lsp.c @@ -1481,7 +1481,10 @@ lsp_build (struct isis_lsp *lsp, struct isis_area *area) { ipreach = XMALLOC (MTYPE_ISIS_TLV, sizeof (struct ipv4_reachability)); - ipreach->metrics = circuit->metrics[level - 1]; + ipreach->metrics.metric_default = circuit->metric[level - 1]; + ipreach->metrics.metric_expense = METRICS_UNSUPPORTED; + ipreach->metrics.metric_error = METRICS_UNSUPPORTED; + ipreach->metrics.metric_delay = METRICS_UNSUPPORTED; masklen2ip (ipv4->prefixlen, &ipreach->mask); ipreach->prefix.s_addr = ((ipreach->mask.s_addr) & (ipv4->prefix.s_addr)); @@ -1506,7 +1509,7 @@ lsp_build (struct isis_lsp *lsp, struct isis_area *area) ((ipv4->prefixlen + 7)/8) - 1); if (area->oldmetric) - te_ipreach->te_metric = htonl (circuit->metrics[level - 1].metric_default); + te_ipreach->te_metric = htonl (circuit->metric[level - 1]); else te_ipreach->te_metric = htonl (circuit->te_metric[level - 1]); @@ -1541,7 +1544,7 @@ lsp_build (struct isis_lsp *lsp, struct isis_area *area) if (area->oldmetric) ip6reach->metric = - htonl (circuit->metrics[level - 1].metric_default); + htonl (circuit->metric[level - 1]); else ip6reach->metric = htonl (circuit->te_metric[level - 1]); @@ -1580,7 +1583,10 @@ lsp_build (struct isis_lsp *lsp, struct isis_area *area) else memcpy (is_neigh->neigh_id, circuit->u.bc.l2_desig_is, ISIS_SYS_ID_LEN + 1); - is_neigh->metrics = circuit->metrics[level - 1]; + is_neigh->metrics.metric_default = circuit->metric[level - 1]; + is_neigh->metrics.metric_expense = METRICS_UNSUPPORTED; + is_neigh->metrics.metric_error = METRICS_UNSUPPORTED; + is_neigh->metrics.metric_delay = METRICS_UNSUPPORTED; if (!memcmp (is_neigh->neigh_id, zero_id, ISIS_SYS_ID_LEN + 1)) { @@ -1612,7 +1618,7 @@ lsp_build (struct isis_lsp *lsp, struct isis_area *area) memcpy (te_is_neigh->neigh_id, circuit->u.bc.l2_desig_is, ISIS_SYS_ID_LEN + 1); if (area->oldmetric) - metric = circuit->metrics[level - 1].metric_default; + metric = circuit->metric[level - 1]; else metric = circuit->te_metric[level - 1]; SET_TE_METRIC(te_is_neigh, metric); @@ -1651,7 +1657,10 @@ lsp_build (struct isis_lsp *lsp, struct isis_area *area) } is_neigh = XCALLOC (MTYPE_ISIS_TLV, sizeof (struct is_neigh)); memcpy (is_neigh->neigh_id, nei->sysid, ISIS_SYS_ID_LEN); - is_neigh->metrics = circuit->metrics[level - 1]; + is_neigh->metrics.metric_default = circuit->metric[level - 1]; + is_neigh->metrics.metric_expense = METRICS_UNSUPPORTED; + is_neigh->metrics.metric_error = METRICS_UNSUPPORTED; + is_neigh->metrics.metric_delay = METRICS_UNSUPPORTED; listnode_add (tlv_data.is_neighs, is_neigh); lsp_debug("ISIS (%s): Adding old-style is reach for %s", area->area_tag, sysid_print(is_neigh->neigh_id)); -- 2.3.6 _______________________________________________ Quagga-dev mailing list Quagga-dev@lists.quagga.net https://lists.quagga.net/mailman/listinfo/quagga-dev