]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd: consistently ignore prefix list mask len 12378/head
authorDavid Lamparter <equinox@opensourcerouting.org>
Fri, 4 Nov 2022 15:55:55 +0000 (16:55 +0100)
committerMergify <37929162+mergify[bot]@users.noreply.github.com>
Wed, 23 Nov 2022 18:15:12 +0000 (18:15 +0000)
... the prefix length wasn't ignored as expected.  Both S and G are
always /32.  But expecting "le 32" in prefix-list config is unexpected &
counterintuitive.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
(cherry picked from commit ab2f9e89b44642af568c3542e1f2b14378fb5ec2)

pimd/pim_ifchannel.c
pimd/pim_register.c
pimd/pim_ssm.c
pimd/pim_upstream.c
pimd/pim_util.c

index ce252366ce435d54cdb36ec6f45db95ca75ca574..3310009c024e11adca3d52f999781538351934df 100644 (file)
@@ -1217,8 +1217,9 @@ int pim_ifchannel_local_membership_add(struct interface *ifp, pim_sgaddr *sg,
                                struct prefix g;
 
                                pim_addr_to_prefix(&g, up->sg.grp);
-                               if (prefix_list_apply(plist, &g)
-                                   == PREFIX_DENY) {
+                               if (prefix_list_apply_ext(plist, NULL, &g,
+                                                         true) ==
+                                   PREFIX_DENY) {
                                        pim_channel_add_oif(
                                                up->channel_oil, pim->regiface,
                                                PIM_OIF_FLAG_PROTO_GM,
index 4e2c44b172df88baa5b5147f698cf1598a1ae6c0..9ccdae13bc9bf2cbfef69668abdb7b7b3c8b6d12 100644 (file)
@@ -629,7 +629,8 @@ int pim_register_recv(struct interface *ifp, pim_addr dest_addr,
 
                        pim_addr_to_prefix(&src, sg.src);
 
-                       if (prefix_list_apply(plist, &src) == PREFIX_DENY) {
+                       if (prefix_list_apply_ext(plist, NULL, &src, true) ==
+                           PREFIX_DENY) {
                                pim_register_stop_send(ifp, &sg, dest_addr,
                                                       src_addr);
                                if (PIM_DEBUG_PIM_PACKETS)
index 1ff60f9b64975d215361057cb0f11fc307859179..62246cc239e8639bc39f661ff7138d1dd8f0c256 100644 (file)
@@ -93,7 +93,8 @@ int pim_is_grp_ssm(struct pim_instance *pim, pim_addr group_addr)
        if (!plist)
                return 0;
 
-       return (prefix_list_apply(plist, &group) == PREFIX_PERMIT);
+       return (prefix_list_apply_ext(plist, NULL, &group, true) ==
+               PREFIX_PERMIT);
 }
 
 int pim_ssm_range_set(struct pim_instance *pim, vrf_id_t vrf_id,
index 0742daa4de6d1a55be3d7303d30410a9ec00c517..dbc5c5d10ad04da569175e84a81e14ad60d48014 100644 (file)
@@ -2154,7 +2154,7 @@ void pim_upstream_remove_lhr_star_pimreg(struct pim_instance *pim,
                        continue;
                }
                pim_addr_to_prefix(&g, up->sg.grp);
-               apply_new = prefix_list_apply(np, &g);
+               apply_new = prefix_list_apply_ext(np, NULL, &g, true);
                if (apply_new == PREFIX_DENY)
                        pim_channel_add_oif(up->channel_oil, pim->regiface,
                                            PIM_OIF_FLAG_PROTO_GM, __func__);
index 150e1a01ea7be5789002568d7927991d64474078..273c332c95c1f22efd442c40477761eb0f951c74 100644 (file)
@@ -150,7 +150,9 @@ bool pim_is_group_filtered(struct pim_interface *pim_ifp, pim_addr *grp)
        pim_addr_to_prefix(&grp_pfx, *grp);
 
        pl = prefix_list_lookup(PIM_AFI, pim_ifp->boundary_oil_plist);
-       return pl ? prefix_list_apply(pl, &grp_pfx) == PREFIX_DENY : false;
+       return pl ? prefix_list_apply_ext(pl, NULL, &grp_pfx, true) ==
+                              PREFIX_DENY
+                 : false;
 }