#define PIM_IF_DONT_IGMP_LISTEN_ALLROUTERS(options) ((options) &= ~PIM_IF_MASK_IGMP_LISTEN_ALLROUTERS)
#define PIM_IF_DONT_PIM_CAN_DISABLE_JOIN_SUPRESSION(options) ((options) &= ~PIM_IF_MASK_PIM_CAN_DISABLE_JOIN_SUPRESSION)
+#define PIM_I_am_DR(pim_ifp) ((pim_ifp)->pim_dr_addr.s_addr == (pim_ifp)->primary_address.s_addr)
+
enum pim_interface_type {
PIM_INTERFACE_SSM,
PIM_INTERFACE_SM
#include "pim_iface.h"
#include "pim_ifchannel.h"
-#define PIM_IFP_I_am_DR(pim_ifp) ((pim_ifp)->pim_dr_addr.s_addr == (pim_ifp)->primary_address.s_addr)
-
/*
DownstreamJPState(S,G,I) is the per-interface state machine for
receiving (S,G) Join/Prune messages.
return (
/* I_am_DR( I ) ? */
- PIM_IFP_I_am_DR(pim_ifp)
+ PIM_I_am_DR(pim_ifp)
&&
/* lost_assert(S,G,I) == FALSE ? */
(!pim_macro_ch_lost_assert(ch))
/* local_receiver_include(S,G,I) ? */
if (local_receiver_include(ch)) {
/* I_am_DR(I) ? */
- if (PIM_IFP_I_am_DR(pim_ifp))
+ if (PIM_I_am_DR(pim_ifp))
return 1; /* true */
/* AssertWinner(S,G,I) == me ? */
*/
if ((qpim_rp.s_addr == INADDR_NONE) ||
(!pim_ifp) ||
+ (!PIM_I_am_DR(pim_ifp)) ||
(pim_ifp->itype == PIM_INTERFACE_SSM))
return 0;
__PRETTY_FUNCTION__);
}
}
+
return 0;
}