]> git.puffer.fish Git - mirror/frr.git/commit
pimd: Allow the LPM match work properly with prefix lists and normal rp's 11308/head
authorDonald Sharp <sharpd@nvidia.com>
Tue, 24 May 2022 17:33:35 +0000 (13:33 -0400)
committerMergify <37929162+mergify[bot]@users.noreply.github.com>
Mon, 30 May 2022 12:30:16 +0000 (12:30 +0000)
commitab1b5c765d62ec61584605b0acff04ddb8b60e6e
tree78fd74b6636165532904d639a3d8f3c38eabeafe
parentdac9146920e0507a6db93ec02614da926cbefd87
pimd: Allow the LPM match work properly with prefix lists and normal rp's

All rp_info's are being saved in the pim->rp_list and the non prefix-list
rp's are supposed to be saved in table pim->rp_table.  What was happening,
though, is that all the plists were being stored at the 224.0.0.0/4 node
of the tree(irrelevant to the fact that we should not be looking up the
non-prefix list rp's in the table) and since we can have multiple prefix lists
and only one rp_info stored at the 224.0.0.0/4 node of the tree, there can be situations
where the 224.0.0.0/4 node can be overwritten due to the order entered.

As such there exists situations where command enter ordering will cause
what we match to, change in pim_rp_find_match_group.

Fixes:

a) Do not store prefix list based rp_info's in the pim->rp_table
b) In pim_rp_find_match_group, ensure that the node lookup does
not correspond to a prefix list based node.
c) When in the situation there are both:
ip pim rp 4.5.6.7 224.0.0.0/16
ip pim rp 5.6.67.8 prefix-list FOO
ip prefix-list FOO permit 224.0.1.0/24
and we receive a group for 224.0.1.5, we were comparing the
224.0.0.0/16 to the 224.0.0.0/4 of the 5.6.67.8 group, when
FRR should have been comparing to entry that matched in the prefix-list

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
(cherry picked from commit 94dc0c4ed4bbca84ad32cb45bbc492e9cae90d73)
pimd/pim_rp.c