mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-07-09 20:01:10 +00:00
pimd: Add display of SGRpt state for ifchannel
When we get a SGrpt Prune embedded in the *,G Join, Display the created ifchannel as being SGRpt state. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
parent
6233f08738
commit
d1e77284c1
@ -1168,7 +1168,8 @@ static void pim_show_join(struct vty *vty, u_char uj)
|
|||||||
json_object_string_add(json_row, "upTime", uptime);
|
json_object_string_add(json_row, "upTime", uptime);
|
||||||
json_object_string_add(json_row, "expire", expire);
|
json_object_string_add(json_row, "expire", expire);
|
||||||
json_object_string_add(json_row, "prune", prune);
|
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))
|
if (PIM_IF_FLAG_TEST_S_G_RPT(ch->flags))
|
||||||
json_object_int_add(json_row, "SGRpt", 1);
|
json_object_int_add(json_row, "SGRpt", 1);
|
||||||
|
|
||||||
@ -1187,7 +1188,7 @@ static void pim_show_join(struct vty *vty, u_char uj)
|
|||||||
inet_ntoa(ifaddr),
|
inet_ntoa(ifaddr),
|
||||||
ch_src_str,
|
ch_src_str,
|
||||||
ch_grp_str,
|
ch_grp_str,
|
||||||
pim_ifchannel_ifjoin_name(ch->ifjoin_state),
|
pim_ifchannel_ifjoin_name(ch->ifjoin_state, ch->flags),
|
||||||
uptime,
|
uptime,
|
||||||
expire,
|
expire,
|
||||||
prune,
|
prune,
|
||||||
|
@ -239,15 +239,15 @@ void pim_ifchannel_ifjoin_switch(const char *caller,
|
|||||||
zlog_debug ("PIM_IFCHANNEL(%s): %s is switching from %s to %s",
|
zlog_debug ("PIM_IFCHANNEL(%s): %s is switching from %s to %s",
|
||||||
ch->interface->name,
|
ch->interface->name,
|
||||||
ch->sg_str,
|
ch->sg_str,
|
||||||
pim_ifchannel_ifjoin_name (ch->ifjoin_state),
|
pim_ifchannel_ifjoin_name (ch->ifjoin_state, ch->flags),
|
||||||
pim_ifchannel_ifjoin_name (new_state));
|
pim_ifchannel_ifjoin_name (new_state, 0));
|
||||||
|
|
||||||
|
|
||||||
if (old_state == new_state) {
|
if (old_state == new_state) {
|
||||||
if (PIM_DEBUG_PIM_EVENTS) {
|
if (PIM_DEBUG_PIM_EVENTS) {
|
||||||
zlog_debug("%s calledby %s: non-transition on state %d (%s)",
|
zlog_debug("%s calledby %s: non-transition on state %d (%s)",
|
||||||
__PRETTY_FUNCTION__, caller, new_state,
|
__PRETTY_FUNCTION__, caller, new_state,
|
||||||
pim_ifchannel_ifjoin_name(new_state));
|
pim_ifchannel_ifjoin_name(new_state, 0));
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -331,15 +331,31 @@ void pim_ifchannel_ifjoin_switch(const char *caller,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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) {
|
switch (ifjoin_state) {
|
||||||
case PIM_IFJOIN_NOINFO: return "NOINFO";
|
case PIM_IFJOIN_NOINFO:
|
||||||
case PIM_IFJOIN_JOIN: return "JOIN";
|
if (PIM_IF_FLAG_TEST_S_G_RPT(flags))
|
||||||
case PIM_IFJOIN_PRUNE: return "PRUNE";
|
return "SGRpt";
|
||||||
case PIM_IFJOIN_PRUNE_PENDING: return "PRUNEP";
|
else
|
||||||
case PIM_IFJOIN_PRUNE_TMP: return "PRUNET";
|
return "NOINFO";
|
||||||
case PIM_IFJOIN_PRUNE_PENDING_TMP: return "PRUNEPT";
|
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";
|
return "ifjoin_bad_state";
|
||||||
@ -609,7 +625,7 @@ static int on_ifjoin_prune_pending_timer(struct thread *t)
|
|||||||
{
|
{
|
||||||
zlog_warn("%s: IFCHANNEL%s Prune Pending Timer Popped while in %s state",
|
zlog_warn("%s: IFCHANNEL%s Prune Pending Timer Popped while in %s state",
|
||||||
__PRETTY_FUNCTION__, pim_str_sg_dump (&ch->sg),
|
__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;
|
return 0;
|
||||||
@ -1198,7 +1214,7 @@ pim_ifchannel_set_star_g_join_state (struct pim_ifchannel *ch, int eom)
|
|||||||
|
|
||||||
if (PIM_DEBUG_PIM_TRACE)
|
if (PIM_DEBUG_PIM_TRACE)
|
||||||
zlog_debug ("%s: %s %s eom: %d", __PRETTY_FUNCTION__,
|
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);
|
ch->sg_str, eom);
|
||||||
if (!ch->sources)
|
if (!ch->sources)
|
||||||
return;
|
return;
|
||||||
|
@ -139,7 +139,7 @@ void pim_ifchannel_local_membership_del(struct interface *ifp,
|
|||||||
void pim_ifchannel_ifjoin_switch(const char *caller,
|
void pim_ifchannel_ifjoin_switch(const char *caller,
|
||||||
struct pim_ifchannel *ch,
|
struct pim_ifchannel *ch,
|
||||||
enum pim_ifjoin_state new_state);
|
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);
|
const char *pim_ifchannel_ifassert_name(enum pim_ifassert_state ifassert_state);
|
||||||
|
|
||||||
int pim_ifchannel_isin_oiflist(struct pim_ifchannel *ch);
|
int pim_ifchannel_isin_oiflist(struct pim_ifchannel *ch);
|
||||||
|
@ -744,11 +744,11 @@ pim_upstream_evaluate_join_desired_interface (struct pim_upstream *up,
|
|||||||
|
|
||||||
if (ch->upstream == up)
|
if (ch->upstream == up)
|
||||||
{
|
{
|
||||||
if (!pim_macro_ch_lost_assert(ch) && pim_macro_chisin_joins_or_include(ch))
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
if (PIM_IF_FLAG_TEST_S_G_RPT(ch->flags))
|
if (PIM_IF_FLAG_TEST_S_G_RPT(ch->flags))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
if (!pim_macro_ch_lost_assert(ch) && pim_macro_chisin_joins_or_include(ch))
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user