json_object_string_add(json_row, "upTime", uptime);
json_object_string_add(json_row, "expire", expire);
json_object_string_add(json_row, "prune", prune);
- json_object_string_add(json_row, "channelJoinName", pim_ifchannel_ifjoin_name(ch->ifjoin_state));
+ json_object_string_add(json_row, "channelJoinName",
+ pim_ifchannel_ifjoin_name(ch->ifjoin_state, ch->flags));
if (PIM_IF_FLAG_TEST_S_G_RPT(ch->flags))
json_object_int_add(json_row, "SGRpt", 1);
inet_ntoa(ifaddr),
ch_src_str,
ch_grp_str,
- pim_ifchannel_ifjoin_name(ch->ifjoin_state),
+ pim_ifchannel_ifjoin_name(ch->ifjoin_state, ch->flags),
uptime,
expire,
prune,
zlog_debug ("PIM_IFCHANNEL(%s): %s is switching from %s to %s",
ch->interface->name,
ch->sg_str,
- pim_ifchannel_ifjoin_name (ch->ifjoin_state),
- pim_ifchannel_ifjoin_name (new_state));
+ pim_ifchannel_ifjoin_name (ch->ifjoin_state, ch->flags),
+ pim_ifchannel_ifjoin_name (new_state, 0));
if (old_state == new_state) {
if (PIM_DEBUG_PIM_EVENTS) {
zlog_debug("%s calledby %s: non-transition on state %d (%s)",
__PRETTY_FUNCTION__, caller, new_state,
- pim_ifchannel_ifjoin_name(new_state));
+ pim_ifchannel_ifjoin_name(new_state, 0));
}
return;
}
}
}
-const char *pim_ifchannel_ifjoin_name(enum pim_ifjoin_state ifjoin_state)
+const char *pim_ifchannel_ifjoin_name(enum pim_ifjoin_state ifjoin_state,
+ int flags)
{
switch (ifjoin_state) {
- case PIM_IFJOIN_NOINFO: return "NOINFO";
- case PIM_IFJOIN_JOIN: return "JOIN";
- case PIM_IFJOIN_PRUNE: return "PRUNE";
- case PIM_IFJOIN_PRUNE_PENDING: return "PRUNEP";
- case PIM_IFJOIN_PRUNE_TMP: return "PRUNET";
- case PIM_IFJOIN_PRUNE_PENDING_TMP: return "PRUNEPT";
+ case PIM_IFJOIN_NOINFO:
+ if (PIM_IF_FLAG_TEST_S_G_RPT(flags))
+ return "SGRpt";
+ else
+ return "NOINFO";
+ break;
+ case PIM_IFJOIN_JOIN:
+ return "JOIN";
+ break;
+ case PIM_IFJOIN_PRUNE:
+ return "PRUNE";
+ break;
+ case PIM_IFJOIN_PRUNE_PENDING:
+ return "PRUNEP";
+ break;
+ case PIM_IFJOIN_PRUNE_TMP:
+ return "PRUNET";
+ break;
+ case PIM_IFJOIN_PRUNE_PENDING_TMP:
+ return "PRUNEPT";
+ break;
}
return "ifjoin_bad_state";
{
zlog_warn("%s: IFCHANNEL%s Prune Pending Timer Popped while in %s state",
__PRETTY_FUNCTION__, pim_str_sg_dump (&ch->sg),
- pim_ifchannel_ifjoin_name (ch->ifjoin_state));
+ pim_ifchannel_ifjoin_name (ch->ifjoin_state, ch->flags));
}
return 0;
if (PIM_DEBUG_PIM_TRACE)
zlog_debug ("%s: %s %s eom: %d", __PRETTY_FUNCTION__,
- pim_ifchannel_ifjoin_name(ch->ifjoin_state),
+ pim_ifchannel_ifjoin_name(ch->ifjoin_state, ch->flags),
ch->sg_str, eom);
if (!ch->sources)
return;
void pim_ifchannel_ifjoin_switch(const char *caller,
struct pim_ifchannel *ch,
enum pim_ifjoin_state new_state);
-const char *pim_ifchannel_ifjoin_name(enum pim_ifjoin_state ifjoin_state);
+const char *pim_ifchannel_ifjoin_name(enum pim_ifjoin_state ifjoin_state, int flags);
const char *pim_ifchannel_ifassert_name(enum pim_ifassert_state ifassert_state);
int pim_ifchannel_isin_oiflist(struct pim_ifchannel *ch);