return 0;
}
- oil_if_set(channel_oil, pim_ifp->mroute_vif_index, false);
+ oil_if_set(channel_oil, pim_ifp->mroute_vif_index, 0);
/* clear mute; will be re-evaluated when the OIF becomes valid again */
channel_oil->oif_flags[pim_ifp->mroute_vif_index] &= ~PIM_OIF_FLAG_MUTE;
/* Prevent single protocol from subscribing same interface to
channel (S,G) multiple times */
if (channel_oil->oif_flags[pim_ifp->mroute_vif_index] & proto_mask) {
+ channel_oil->oif_flags[pim_ifp->mroute_vif_index] |= proto_mask;
+
if (PIM_DEBUG_MROUTE) {
zlog_debug(
"%s %s: existing protocol mask %u requested OIF %s (vif_index=%d, min_ttl=%d) for channel (S,G)=(%pPAs,%pPAs)",
int pim_channel_oil_empty(struct channel_oil *c_oil)
{
+ static struct channel_oil null_oil;
+
if (!c_oil)
return 1;
* non-NULL.
* pimreg device (in all vrfs) uses a vifi of
* 0 (PIM_OIF_PIM_REGISTER_VIF) so we simply mfcc_ttls[0] */
-#if PIM_IPV == 4
- static pim_mfcctl null_oil;
-
- return !memcmp(&c_oil->oil.mfcc_ttls[1], &null_oil.mfcc_ttls[1],
- sizeof(null_oil.mfcc_ttls) - sizeof(null_oil.mfcc_ttls[0]));
-#else
- CPP_NOTICE("FIXME STUB");
- return false;
-#endif
+ if (oil_if_has(c_oil, 0))
+ oil_if_set(&null_oil, 0, 1);
+ else
+ oil_if_set(&null_oil, 0, 0);
+
+ return !oil_if_cmp(&c_oil->oil, &null_oil.oil);
}