mirror_frr/isisd
Louis Scalbert e45958e9cf isisd: fix metric calculation of classic lfa backup prefixes
The isis-lfa-topo1 topotest shows backup routes with lower metrics than
the primary ones.

> rt1# show isis route
> Area 1:
> IS-IS L1 IPv6 routing table:
>
>  Prefix                Metric  Interface  Nexthop                    Label(s)
>  ------------------------------------------------------------------------------
>  2001:db8:1000::1/128  0       -          -                          -
>  2001:db8:1000::2/128  20      eth-rt2    fe80::d091:eeff:fe09:31cd  -
>  2001:db8:1000::3/128  20      eth-rt3    fe80::946b:d4ff:fe5b:414b  -
>  2001:db8:1000::4/128  20      eth-rt4    fe80::5ced:29ff:feed:59c4  -
> (...)
>
> rt1# show isis route backup
> Area 1:
> IS-IS L1 IPv6 routing table:
>
>  Prefix                Metric  Interface  Nexthop                    Label(s)
>  ------------------------------------------------------------------------------
>  2001:db8:1000::2/128  15      eth-rt3    fe80::946b:d4ff:fe5b:414b  -
>                                eth-rt5    fe80::847d:feff:fe74:bdde  -
>                                eth-rt6    fe80::ac8c:dff:feac:8a8d   -
>  2001:db8:1000::3/128  15      eth-rt2    fe80::d091:eeff:fe09:31cd  -
>                                eth-rt5    fe80::847d:feff:fe74:bdde  -
>  2001:db8:1000::4/128  45      eth-rt5    fe80::847d:feff:fe74:bdde  -
> (...)

Backup routes metrics are incorrect because they only take into account
the path metric but not the prefix metric.

Add the prefix metric to the path metric on backup routes.

After the patch with a prefix metric of 10:

> rt1# show isis route backup
> Area 1:
> IS-IS L1 IPv6 routing table:
>
> Area 1:
> IS-IS L1 IPv6 routing table:
>
>  Prefix                Metric  Interface  Nexthop                    Label(s)
>  ------------------------------------------------------------------------------
>  2001:db8:1000::2/128  25      eth-rt3    fe80::8c6f:8aff:fe10:ad0d  -
>                                eth-rt5    fe80::b08e:5cff:fe90:62dd  -
>                                eth-rt6    fe80::4810:47ff:fe81:2b9a  -
>  2001:db8:1000::3/128  25      eth-rt2    fe80::e855:12ff:fe31:5765  -
>                                eth-rt5    fe80::b08e:5cff:fe90:62dd  -
>  2001:db8:1000::4/128  55      eth-rt5    fe80::b08e:5cff:fe90:62dd  -

Fixes: e886416f81 ("isisd: add support for classic LFA (RFC 5286)")
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2022-05-24 10:06:05 +02:00
..
.gitignore *: cleanup .gitignore files 2018-09-08 21:30:42 +02:00
AUTHORS Add support of Traffic Engineering to IS-IS 2016-09-03 11:05:50 -04:00
fabricd.c *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
fabricd.h *: use the current project name (FRRouting) 2020-03-25 17:38:56 -04:00
isis_adjacency.c isisd: avoid fast-reroute on down adjacency when the interface is down 2022-05-24 10:05:49 +02:00
isis_adjacency.h isisd: apply fast-reroute on an adjacency failure 2022-05-23 10:44:20 +02:00
isis_bfd.c isisd: prevent from accessing a non initialised pointer 2022-03-31 11:18:45 +02:00
isis_bfd.h isisd: rework BFD integration 2021-05-07 12:03:57 +03:00
isis_bpf.c *: Properly use memset() when zeroing 2022-05-11 14:08:47 +03:00
isis_circuit.c isisd: avoid fast-reroute from running twice on a down interface event 2022-05-24 10:06:05 +02:00
isis_circuit.h isisd: avoid fast-reroute on down adjacency when the interface is down 2022-05-24 10:05:49 +02:00
isis_cli.c isisd: Drop deprecated segment-routing local-block command 2022-02-23 08:45:54 +02:00
isis_common.h *: use C99 standard fixed-width integer types 2018-03-27 15:13:34 -04:00
isis_constants.h isisd: Fix Attach-bit processing 2021-01-20 09:24:35 -05:00
isis_csm.c isisd: allow arbitrary order of area/interface configuration 2021-04-29 17:05:21 +03:00
isis_csm.h isisd: Use enum for circuit state 2021-04-22 15:17:20 -04:00
isis_dlpi.c isisd: Remove #if 0 code 2021-01-28 13:45:44 -05:00
isis_dr.c isisd: isis_dr_resign() trace braced with debug isis events 2022-04-20 16:37:20 +02:00
isis_dr.h *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
isis_dynhn.c *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
isis_dynhn.h isisd: per-instance dynamic hostname cache 2021-06-11 18:30:47 +03:00
isis_errors.c isisd: detect Prefix-SID collisions and handle them appropriately 2020-11-04 17:12:30 -03:00
isis_errors.h isisd: detect Prefix-SID collisions and handle them appropriately 2020-11-04 17:12:30 -03:00
isis_events.c *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
isis_events.h *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
isis_flags.c *: use C99 standard fixed-width integer types 2018-03-27 15:13:34 -04:00
isis_flags.h *: use C99 standard fixed-width integer types 2018-03-27 15:13:34 -04:00
isis_ldp_sync.c *: Fix spelling of specifed 2022-04-19 08:12:43 -04:00
isis_ldp_sync.h isisd: fix ldp-sync configuration 2021-04-29 17:05:21 +03:00
isis_lfa.c isisd: fix metric calculation of classic lfa backup prefixes 2022-05-24 10:06:05 +02:00
isis_lfa.h isisd: kill isis_memory.h, use MTYPE_STATIC 2021-03-22 18:27:58 +01:00
isis_lsp.c Merge pull request #10701 from rampxxxx/feat_isis_json_show_cmds 2022-03-08 11:15:25 -05:00
isis_lsp.h Merge pull request #10701 from rampxxxx/feat_isis_json_show_cmds 2022-03-08 11:15:25 -05:00
isis_main.c *: Convert quagga_signal_X to frr_signal_X 2021-11-11 14:41:27 -05:00
isis_misc.c isisd: per-instance dynamic hostname cache 2021-06-11 18:30:47 +03:00
isis_misc.h isisd: minor cleanup 2020-08-26 20:16:19 -03:00
isis_mt.c isisd: Add support for RFC6119 (IPv6 TE in IS-IS) 2021-11-30 15:22:28 +01:00
isis_mt.h isisd: Add support for RFC6119 (IPv6 TE in IS-IS) 2021-11-30 15:22:28 +01:00
isis_nb_config.c isisd: Fix crash in ISIS when mtu mismatch occurs 2022-04-18 11:15:15 -04:00
isis_nb_notifications.c isisd: fix #10505 using base64 encoding 2022-02-22 15:27:30 -05:00
isis_nb_state.c isisd, yang: move IS-IS interface state data to the appropriate place 2020-05-15 23:47:43 -03:00
isis_nb.c isisd: Add Link State Traffic Engineering support 2021-11-30 15:22:28 +01:00
isis_nb.h isisd: Add Link State Traffic Engineering support 2021-11-30 15:22:28 +01:00
isis_network.h *: use C99 standard fixed-width integer types 2018-03-27 15:13:34 -04:00
isis_pdu_counter.c Minor adjustments to address CI warnings 2018-12-12 00:23:23 +00:00
isis_pdu_counter.h isisd: Provide statistics about sent/received PDU count 2018-12-07 19:45:14 +00:00
isis_pdu.c *: Fix spelling of accomodate 2022-04-19 08:29:58 -04:00
isis_pdu.h *: Fix spelling of accomodate 2022-04-19 08:29:58 -04:00
isis_pfpacket.c *: Properly use memset() when zeroing 2022-05-11 14:08:47 +03:00
isis_redist.c isisd: fix redistribute CLI 2021-10-05 17:38:21 +03:00
isis_redist.h isisd: fix redistribution in vrf 2021-05-14 17:12:35 +03:00
isis_route.c isisd: allow nexthop lookup on interface only 2022-05-23 10:44:50 +02:00
isis_route.h isisd: apply fast-reroute on an adjacency failure 2022-05-23 10:44:20 +02:00
isis_routemap.c isisd: added support for routemap match tag in redistribution 2021-03-05 22:12:00 +00:00
isis_routemap.h *: reindent 2017-07-17 14:04:07 +02:00
isis_snmp.c isisd: Ensure structure is defined for compilation 2022-01-18 14:07:21 -05:00
isis_spf_private.h isisd: kill isis_memory.h, use MTYPE_STATIC 2021-03-22 18:27:58 +01:00
isis_spf.c isisd: apply fast-reroute on an adjacency failure 2022-05-23 10:44:20 +02:00
isis_spf.h isisd: apply fast-reroute on an adjacency failure 2022-05-23 10:44:20 +02:00
isis_sr.c *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
isis_sr.h *: require semicolon after DEFINE_<typesafe...> 2021-03-17 06:18:39 +01:00
isis_te.c isisd: Prevent direct copy of different size prefix'es 2022-05-06 21:24:56 -04:00
isis_te.h isisd: Add Link State Traffic Engineering support 2021-11-30 15:22:28 +01:00
isis_tlvs.c build: first header *must* be zebra.h or config.h 2022-04-04 18:33:10 +02:00
isis_tlvs.h isisd: Remove unneeded pre-declarations 2022-05-06 21:19:07 -04:00
isis_tx_queue.c *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
isis_tx_queue.h *: use the current project name (FRRouting) 2020-03-25 17:38:56 -04:00
isis_vty_fabricd.c isisd: using argv as a string name is categorically wrong 2021-06-22 13:03:00 -04:00
isis_zebra.c isisd: Prepare IS-IS for Link State support 2021-11-30 15:22:28 +01:00
isis_zebra.h isisd: Prepare IS-IS for Link State support 2021-11-30 15:22:28 +01:00
isisd.c isisd: apply fast-reroute on an adjacency failure 2022-05-23 10:44:20 +02:00
isisd.h isisd: apply fast-reroute on an adjacency failure 2022-05-23 10:44:20 +02:00
iso_checksum.c *: use C99 standard fixed-width integer types 2018-03-27 15:13:34 -04:00
iso_checksum.h *: use C99 standard fixed-width integer types 2018-03-27 15:13:34 -04:00
Makefile build: non-recursive isisd 2017-08-04 11:09:50 +02:00
README More cleanup in isisd. 2005-01-01 21:12:56 +00:00
subdir.am build: fix AM_LDFLAGS usage (and gcov) 2021-07-21 17:10:08 +02:00

Constraints

  o Maximum number of interfaces 255