]> git.proxmox.com Git - mirror_frr.git/blobdiff - pimd/pim_zebra.c
Merge pull request #12798 from donaldsharp/rib_match_multicast
[mirror_frr.git] / pimd / pim_zebra.c
index 4bed8d5b7389144c5fcbb3411c2b7d7324877337..e39eca7a2ccf464e6903c21d2df3984c5bf26e30 100644 (file)
@@ -1,20 +1,7 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
 /*
  * PIM for Quagga
  * Copyright (C) 2008  Everton da Silva Marques
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; see the file COPYING; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
 #include <zebra.h>
@@ -255,7 +242,7 @@ void pim_zebra_update_all_interfaces(struct pim_instance *pim)
                        struct pim_rpf rpf;
 
                        rpf.source_nexthop.interface = ifp;
-                       pim_addr_to_prefix(&rpf.rpf_addr, us->address);
+                       rpf.rpf_addr = us->address;
                        pim_joinprune_send(&rpf, us->us);
                        pim_jp_agg_clear_group(us->us);
                }
@@ -269,8 +256,8 @@ void pim_zebra_upstream_rpf_changed(struct pim_instance *pim,
        if (old->source_nexthop.interface) {
                struct pim_neighbor *nbr;
 
-               nbr = pim_neighbor_find_prefix(old->source_nexthop.interface,
-                                              &old->rpf_addr);
+               nbr = pim_neighbor_find(old->source_nexthop.interface,
+                                       old->rpf_addr);
                if (nbr)
                        pim_jp_agg_remove_group(nbr->upstream_jp_agg, up, nbr);
 
@@ -452,6 +439,7 @@ static void pim_zebra_connected(struct zclient *zclient)
 static void pim_zebra_capabilities(struct zclient_capabilities *cap)
 {
        router->mlag_role = cap->role;
+       router->multipath = cap->ecmp;
 }
 
 static zclient_handler *const pim_handlers[] = {
@@ -499,7 +487,7 @@ void pim_forward_start(struct pim_ifchannel *ch)
                           ch->interface->name, &up->upstream_addr);
 
        if (PIM_IF_FLAG_TEST_PROTO_IGMP(ch->flags))
-               mask = PIM_OIF_FLAG_PROTO_IGMP;
+               mask = PIM_OIF_FLAG_PROTO_GM;
 
        if (PIM_IF_FLAG_TEST_PROTO_PIM(ch->flags))
                mask |= PIM_OIF_FLAG_PROTO_PIM;