#include <zebra.h>
-#include "zebra/rib.h"
-
#include "if.h"
#include "log.h"
#include "prefix.h"
struct pim_interface *pim_ifp;
if (!ifp->info) {
- pim_ifp = pim_if_new(ifp, 0, 0);
+ pim_ifp = pim_if_new(ifp, false, false, false);
ifp->info = pim_ifp;
}
void pim_zebra_init(void)
{
/* Socket for receiving updates from Zebra daemon */
- zclient = zclient_new_notify(master, &zclient_options_default);
+ zclient = zclient_new(master, &zclient_options_default);
zclient->zebra_connected = pim_zebra_connected;
zclient->router_id_update = pim_router_id_update_zebra;
return;
}
- if (!(PIM_I_am_DR(pim_oif)))
- return;
+ if (!(PIM_I_am_DR(pim_oif))) {
+ if (PIM_DEBUG_IGMP_TRACE)
+ zlog_debug("%s: %s was received on %s interface but we are not DR for that interface",
+ __PRETTY_FUNCTION__,
+ pim_str_sg_dump(&sg),
+ group->group_igmp_sock->interface->name);
+ pim_channel_del_oif(source->source_channel_oil,
+ group->group_igmp_sock->interface,
+ PIM_OIF_FLAG_PROTO_IGMP);
+ return;
+ }
/*
Feed IGMPv3-gathered local membership information into PIM
per-interface (S,G) state.
if (PIM_DEBUG_MROUTE)
zlog_warn("%s: Failure to add local membership for %s",
__PRETTY_FUNCTION__, pim_str_sg_dump(&sg));
+
+ pim_channel_del_oif(source->source_channel_oil,
+ group->group_igmp_sock->interface,
+ PIM_OIF_FLAG_PROTO_IGMP);
return;
}