From 8e389ea9e8791581df1672602469c8a5ffebc24c Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Mon, 4 Nov 2019 10:55:52 -0500 Subject: [PATCH] pimd: No need to add then remove the oif if not DR When adding an OIF to the OIL, if we are not the DR there is no need to install it then remove it. Signed-off-by: Donald Sharp --- pimd/pim_zebra.c | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/pimd/pim_zebra.c b/pimd/pim_zebra.c index dadcbbe65d..210beb1a14 100644 --- a/pimd/pim_zebra.c +++ b/pimd/pim_zebra.c @@ -855,27 +855,24 @@ void igmp_source_forward_start(struct pim_instance *pim, } } - result = pim_channel_add_oif(source->source_channel_oil, - group->group_igmp_sock->interface, - PIM_OIF_FLAG_PROTO_IGMP); - if (result) { - if (PIM_DEBUG_MROUTE) { - zlog_warn("%s: add_oif() failed with return=%d", - __func__, result); + if (PIM_I_am_DR(pim_oif)) { + result = pim_channel_add_oif(source->source_channel_oil, + group->group_igmp_sock->interface, + PIM_OIF_FLAG_PROTO_IGMP); + if (result) { + if (PIM_DEBUG_MROUTE) { + zlog_warn("%s: add_oif() failed with return=%d", + __func__, result); + } + return; } - return; - } - - if (!(PIM_I_am_DR(pim_oif))) { + } else { 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; } /* -- 2.39.5