summaryrefslogtreecommitdiff
path: root/lib/routemap_cli.c
diff options
context:
space:
mode:
authorlynne <lynne@voltanet.io>2021-06-23 13:15:17 -0400
committerDonald Sharp <sharpd@nvidia.com>2023-04-13 07:55:03 -0400
commit637e6f293b84c8c21d91224267a85ced30e9f8cf (patch)
tree3928b4725979ef3fad9d03954d0093ce54dc2462 /lib/routemap_cli.c
parent635d65e2c8984f7f1f5bbc0064e0c8564070d7a1 (diff)
ospf6d: missing ECMP NHs in certain topologies
When ospf6 is started up and SPF is run depending on which route is selected as the parent route we could miss adding a NH. If one possible parent route has two equal cost paths and the second possible parent route has only one depending on which one is selected first determines if we have have one or two NHs. In the network below when creating a route 2001:db8:3:4::/64 in R2. When SPF is run there are two possible parent routes R3 and R4. 2001:db8:1:2 +-----+ 2001:db8:2:5 +--------------+ 2 +---------------+ | ::2 | | ::2 | | +-----+ | | | ::1| | +-----+ |::5 | 1 |2001:db8:1:3+-----+2001:db8:3:5+-----+2001:db8:5:6+-----+ | +------------+ 3 +------------+ 5 +------------+ 6 | +-----+ ::1 ::3 | |::3 ::5 | |::5 ::6| | ::1| +-----+ +-----+ +-----+ | |::3 | | 2001:db8:3:4 | | | |::4 | 2001:db8:1:4 +-----+ +--------------+ 4 | ::4 | | +-----+ The problem was if we first created the route to 2001:db8:3:4::/64 with R3 as the parent route all is fine. The code was merging the NH from the parent route and R3 has 2 NH, one pointing to R1 and one to R5. But if route 2001:db8:3:4::/64 was first created with parent as R4, it has only one NH pointing to R1, and then later a new vertex was created pointing to R3 the code would only copy the nhs from the vertex not from the parent route. The vertex always has just one NH. But the parent route could have more. So when we would bringup this setup one time we would see one NH for 2001:db8:3:4::/64 and the next time we would see two NHs. The code has been modified so that it behaves the same when the route is first created, or when a vertex is created, it selects the NHs from the parent route. Signed-off-by: Lynne Morrison <lynne@voltanet.io>
Diffstat (limited to 'lib/routemap_cli.c')
0 files changed, 0 insertions, 0 deletions