mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-04-29 12:18:12 +00:00
pimd: Convert ifchannel to using a prefix to store (s,g)
Convert ifchannel to use a prefix to store (s,g) information. Additionally create pim_str_sg_dump function to output data when using debugs. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
parent
e945ee80d3
commit
99064df9e3
@ -56,30 +56,22 @@ void pim_ifassert_winner_set(struct pim_ifchannel *ch,
|
|||||||
|
|
||||||
if (PIM_DEBUG_PIM_EVENTS) {
|
if (PIM_DEBUG_PIM_EVENTS) {
|
||||||
if (ch->ifassert_state != new_state) {
|
if (ch->ifassert_state != new_state) {
|
||||||
char src_str[100];
|
zlog_debug("%s: (S,G)=%s assert state changed from %s to %s on interface %s",
|
||||||
char grp_str[100];
|
|
||||||
pim_inet4_dump("<src?>", ch->source_addr, src_str, sizeof(src_str));
|
|
||||||
pim_inet4_dump("<grp?>", ch->group_addr, grp_str, sizeof(grp_str));
|
|
||||||
zlog_debug("%s: (S,G)=(%s,%s) assert state changed from %s to %s on interface %s",
|
|
||||||
__PRETTY_FUNCTION__,
|
__PRETTY_FUNCTION__,
|
||||||
src_str, grp_str,
|
pim_str_sg_dump (&ch->sg),
|
||||||
pim_ifchannel_ifassert_name(ch->ifassert_state),
|
pim_ifchannel_ifassert_name(ch->ifassert_state),
|
||||||
pim_ifchannel_ifassert_name(new_state),
|
pim_ifchannel_ifassert_name(new_state),
|
||||||
ch->interface->name);
|
ch->interface->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (winner_changed) {
|
if (winner_changed) {
|
||||||
char src_str[100];
|
|
||||||
char grp_str[100];
|
|
||||||
char was_str[100];
|
char was_str[100];
|
||||||
char winner_str[100];
|
char winner_str[100];
|
||||||
pim_inet4_dump("<src?>", ch->source_addr, src_str, sizeof(src_str));
|
|
||||||
pim_inet4_dump("<grp?>", ch->group_addr, grp_str, sizeof(grp_str));
|
|
||||||
pim_inet4_dump("<was?>", ch->ifassert_winner, was_str, sizeof(was_str));
|
pim_inet4_dump("<was?>", ch->ifassert_winner, was_str, sizeof(was_str));
|
||||||
pim_inet4_dump("<winner?>", winner, winner_str, sizeof(winner_str));
|
pim_inet4_dump("<winner?>", winner, winner_str, sizeof(winner_str));
|
||||||
zlog_debug("%s: (S,G)=(%s,%s) assert winner changed from %s to %s on interface %s",
|
zlog_debug("%s: (S,G)=%s assert winner changed from %s to %s on interface %s",
|
||||||
__PRETTY_FUNCTION__,
|
__PRETTY_FUNCTION__,
|
||||||
src_str, grp_str,
|
pim_str_sg_dump (&ch->sg),
|
||||||
was_str, winner_str, ch->interface->name);
|
was_str, winner_str, ch->interface->name);
|
||||||
}
|
}
|
||||||
} /* PIM_DEBUG_PIM_EVENTS */
|
} /* PIM_DEBUG_PIM_EVENTS */
|
||||||
@ -140,13 +132,9 @@ static void if_could_assert_do_a1(const char *caller,
|
|||||||
{
|
{
|
||||||
if (PIM_IF_FLAG_TEST_COULD_ASSERT(ch->flags)) {
|
if (PIM_IF_FLAG_TEST_COULD_ASSERT(ch->flags)) {
|
||||||
if (assert_action_a1(ch)) {
|
if (assert_action_a1(ch)) {
|
||||||
char src_str[100];
|
zlog_warn("%s: %s: (S,G)=%s assert_action_a1 failure on interface %s",
|
||||||
char grp_str[100];
|
|
||||||
pim_inet4_dump("<src?>", ch->source_addr, src_str, sizeof(src_str));
|
|
||||||
pim_inet4_dump("<grp?>", ch->group_addr, grp_str, sizeof(grp_str));
|
|
||||||
zlog_warn("%s: %s: (S,G)=(%s,%s) assert_action_a1 failure on interface %s",
|
|
||||||
__PRETTY_FUNCTION__, caller,
|
__PRETTY_FUNCTION__, caller,
|
||||||
src_str, grp_str, ch->interface->name);
|
pim_str_sg_dump (&ch->sg), ch->interface->name);
|
||||||
/* log warning only */
|
/* log warning only */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -460,7 +448,7 @@ static int pim_assert_do(struct pim_ifchannel *ch,
|
|||||||
}
|
}
|
||||||
|
|
||||||
pim_msg_size = pim_assert_build_msg(pim_msg, sizeof(pim_msg), ifp,
|
pim_msg_size = pim_assert_build_msg(pim_msg, sizeof(pim_msg), ifp,
|
||||||
ch->group_addr, ch->source_addr,
|
ch->sg.u.sg.grp, ch->sg.u.sg.src,
|
||||||
metric.metric_preference,
|
metric.metric_preference,
|
||||||
metric.route_metric,
|
metric.route_metric,
|
||||||
metric.rpt_bit_flag);
|
metric.rpt_bit_flag);
|
||||||
@ -482,13 +470,9 @@ static int pim_assert_do(struct pim_ifchannel *ch,
|
|||||||
pim_hello_require(ifp);
|
pim_hello_require(ifp);
|
||||||
|
|
||||||
if (PIM_DEBUG_PIM_TRACE) {
|
if (PIM_DEBUG_PIM_TRACE) {
|
||||||
char source_str[100];
|
zlog_debug("%s: to %s: (S,G)=%s pref=%u metric=%u rpt_bit=%u",
|
||||||
char group_str[100];
|
|
||||||
pim_inet4_dump("<src?>", ch->source_addr, source_str, sizeof(source_str));
|
|
||||||
pim_inet4_dump("<grp?>", ch->group_addr, group_str, sizeof(group_str));
|
|
||||||
zlog_debug("%s: to %s: (S,G)=(%s,%s) pref=%u metric=%u rpt_bit=%u",
|
|
||||||
__PRETTY_FUNCTION__,
|
__PRETTY_FUNCTION__,
|
||||||
ifp->name, source_str, group_str,
|
ifp->name, pim_str_sg_dump (&ch->sg),
|
||||||
metric.metric_preference,
|
metric.metric_preference,
|
||||||
metric.route_metric,
|
metric.route_metric,
|
||||||
PIM_FORCE_BOOLEAN(metric.rpt_bit_flag));
|
PIM_FORCE_BOOLEAN(metric.rpt_bit_flag));
|
||||||
@ -525,7 +509,7 @@ static int pim_assert_cancel(struct pim_ifchannel *ch)
|
|||||||
metric.rpt_bit_flag = 0;
|
metric.rpt_bit_flag = 0;
|
||||||
metric.metric_preference = PIM_ASSERT_METRIC_PREFERENCE_MAX;
|
metric.metric_preference = PIM_ASSERT_METRIC_PREFERENCE_MAX;
|
||||||
metric.route_metric = PIM_ASSERT_ROUTE_METRIC_MAX;
|
metric.route_metric = PIM_ASSERT_ROUTE_METRIC_MAX;
|
||||||
metric.ip_address = ch->source_addr;
|
metric.ip_address = ch->sg.u.sg.src;
|
||||||
|
|
||||||
return pim_assert_do(ch, metric);
|
return pim_assert_do(ch, metric);
|
||||||
}
|
}
|
||||||
@ -543,13 +527,9 @@ static int on_assert_timer(struct thread *t)
|
|||||||
zassert(ifp);
|
zassert(ifp);
|
||||||
|
|
||||||
if (PIM_DEBUG_PIM_TRACE) {
|
if (PIM_DEBUG_PIM_TRACE) {
|
||||||
char src_str[100];
|
zlog_debug("%s: (S,G)=%s timer expired on interface %s",
|
||||||
char grp_str[100];
|
|
||||||
pim_inet4_dump("<src?>", ch->source_addr, src_str, sizeof(src_str));
|
|
||||||
pim_inet4_dump("<grp?>", ch->group_addr, grp_str, sizeof(grp_str));
|
|
||||||
zlog_debug("%s: (S,G)=(%s,%s) timer expired on interface %s",
|
|
||||||
__PRETTY_FUNCTION__,
|
__PRETTY_FUNCTION__,
|
||||||
src_str, grp_str, ifp->name);
|
pim_str_sg_dump (&ch->sg), ifp->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
ch->t_ifassert_timer = NULL;
|
ch->t_ifassert_timer = NULL;
|
||||||
@ -564,13 +544,9 @@ static int on_assert_timer(struct thread *t)
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
char source_str[100];
|
zlog_warn("%s: (S,G)=%s invalid assert state %d on interface %s",
|
||||||
char group_str[100];
|
|
||||||
pim_inet4_dump("<src?>", ch->source_addr, source_str, sizeof(source_str));
|
|
||||||
pim_inet4_dump("<grp?>", ch->group_addr, group_str, sizeof(group_str));
|
|
||||||
zlog_warn("%s: (S,G)=(%s,%s) invalid assert state %d on interface %s",
|
|
||||||
__PRETTY_FUNCTION__,
|
__PRETTY_FUNCTION__,
|
||||||
source_str, group_str, ch->ifassert_state, ifp->name);
|
pim_str_sg_dump (&ch->sg), ch->ifassert_state, ifp->name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -587,13 +563,9 @@ static void assert_timer_off(struct pim_ifchannel *ch)
|
|||||||
|
|
||||||
if (PIM_DEBUG_PIM_TRACE) {
|
if (PIM_DEBUG_PIM_TRACE) {
|
||||||
if (ch->t_ifassert_timer) {
|
if (ch->t_ifassert_timer) {
|
||||||
char src_str[100];
|
zlog_debug("%s: (S,G)=%s cancelling timer on interface %s",
|
||||||
char grp_str[100];
|
|
||||||
pim_inet4_dump("<src?>", ch->source_addr, src_str, sizeof(src_str));
|
|
||||||
pim_inet4_dump("<grp?>", ch->group_addr, grp_str, sizeof(grp_str));
|
|
||||||
zlog_debug("%s: (S,G)=(%s,%s) cancelling timer on interface %s",
|
|
||||||
__PRETTY_FUNCTION__,
|
__PRETTY_FUNCTION__,
|
||||||
src_str, grp_str, ifp->name);
|
pim_str_sg_dump (&ch->sg), ifp->name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
THREAD_OFF(ch->t_ifassert_timer);
|
THREAD_OFF(ch->t_ifassert_timer);
|
||||||
@ -612,13 +584,9 @@ static void pim_assert_timer_set(struct pim_ifchannel *ch,
|
|||||||
assert_timer_off(ch);
|
assert_timer_off(ch);
|
||||||
|
|
||||||
if (PIM_DEBUG_PIM_TRACE) {
|
if (PIM_DEBUG_PIM_TRACE) {
|
||||||
char src_str[100];
|
zlog_debug("%s: (S,G)=%s starting %u sec timer on interface %s",
|
||||||
char grp_str[100];
|
|
||||||
pim_inet4_dump("<src?>", ch->source_addr, src_str, sizeof(src_str));
|
|
||||||
pim_inet4_dump("<grp?>", ch->group_addr, grp_str, sizeof(grp_str));
|
|
||||||
zlog_debug("%s: (S,G)=(%s,%s) starting %u sec timer on interface %s",
|
|
||||||
__PRETTY_FUNCTION__,
|
__PRETTY_FUNCTION__,
|
||||||
src_str, grp_str, interval, ifp->name);
|
pim_str_sg_dump(&ch->sg), interval, ifp->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
THREAD_TIMER_ON(master, ch->t_ifassert_timer,
|
THREAD_TIMER_ON(master, ch->t_ifassert_timer,
|
||||||
@ -650,13 +618,9 @@ int assert_action_a1(struct pim_ifchannel *ch)
|
|||||||
|
|
||||||
pim_ifp = ifp->info;
|
pim_ifp = ifp->info;
|
||||||
if (!pim_ifp) {
|
if (!pim_ifp) {
|
||||||
char src_str[100];
|
zlog_warn("%s: (S,G)=%s multicast not enabled on interface %s",
|
||||||
char grp_str[100];
|
|
||||||
pim_inet4_dump("<src?>", ch->source_addr, src_str, sizeof(src_str));
|
|
||||||
pim_inet4_dump("<grp?>", ch->group_addr, grp_str, sizeof(grp_str));
|
|
||||||
zlog_warn("%s: (S,G)=(%s,%s) multicast not enabled on interface %s",
|
|
||||||
__PRETTY_FUNCTION__,
|
__PRETTY_FUNCTION__,
|
||||||
src_str, grp_str, ifp->name);
|
pim_str_sg_dump (&ch->sg), ifp->name);
|
||||||
return -1; /* must return since pim_ifp is used below */
|
return -1; /* must return since pim_ifp is used below */
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -668,13 +632,9 @@ int assert_action_a1(struct pim_ifchannel *ch)
|
|||||||
|
|
||||||
zassert(ch->ifassert_state == PIM_IFASSERT_I_AM_WINNER); /* a3 requirement */
|
zassert(ch->ifassert_state == PIM_IFASSERT_I_AM_WINNER); /* a3 requirement */
|
||||||
if (assert_action_a3(ch)) {
|
if (assert_action_a3(ch)) {
|
||||||
char src_str[100];
|
zlog_warn("%s: (S,G)=%s assert_action_a3 failure on interface %s",
|
||||||
char grp_str[100];
|
|
||||||
pim_inet4_dump("<src?>", ch->source_addr, src_str, sizeof(src_str));
|
|
||||||
pim_inet4_dump("<grp?>", ch->group_addr, grp_str, sizeof(grp_str));
|
|
||||||
zlog_warn("%s: (S,G)=(%s,%s) assert_action_a3 failure on interface %s",
|
|
||||||
__PRETTY_FUNCTION__,
|
__PRETTY_FUNCTION__,
|
||||||
src_str, grp_str, ifp->name);
|
pim_str_sg_dump (&ch->sg), ifp->name);
|
||||||
/* warning only */
|
/* warning only */
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -719,14 +679,9 @@ static int assert_action_a3(struct pim_ifchannel *ch)
|
|||||||
pim_assert_timer_reset(ch);
|
pim_assert_timer_reset(ch);
|
||||||
|
|
||||||
if (pim_assert_send(ch)) {
|
if (pim_assert_send(ch)) {
|
||||||
char src_str[100];
|
zlog_warn("%s: (S,G)=%s failure sending assert on interface %s",
|
||||||
char grp_str[100];
|
|
||||||
pim_inet4_dump("<src?>", ch->source_addr, src_str, sizeof(src_str));
|
|
||||||
pim_inet4_dump("<grp?>", ch->group_addr, grp_str, sizeof(grp_str));
|
|
||||||
|
|
||||||
zlog_warn("%s: (S,G)=(%s,%s) failure sending assert on interface %s",
|
|
||||||
__PRETTY_FUNCTION__,
|
__PRETTY_FUNCTION__,
|
||||||
src_str, grp_str, ch->interface->name);
|
pim_str_sg_dump (&ch->sg), ch->interface->name);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -748,13 +703,9 @@ static int assert_action_a3(struct pim_ifchannel *ch)
|
|||||||
void assert_action_a4(struct pim_ifchannel *ch)
|
void assert_action_a4(struct pim_ifchannel *ch)
|
||||||
{
|
{
|
||||||
if (pim_assert_cancel(ch)) {
|
if (pim_assert_cancel(ch)) {
|
||||||
char src_str[100];
|
zlog_warn("%s: failure sending AssertCancel%s on interface %s",
|
||||||
char grp_str[100];
|
|
||||||
pim_inet4_dump("<src?>", ch->source_addr, src_str, sizeof(src_str));
|
|
||||||
pim_inet4_dump("<grp?>", ch->group_addr, grp_str, sizeof(grp_str));
|
|
||||||
zlog_warn("%s: failure sending AssertCancel(%s,%s) on interface %s",
|
|
||||||
__PRETTY_FUNCTION__,
|
__PRETTY_FUNCTION__,
|
||||||
src_str, grp_str, ch->interface->name);
|
pim_str_sg_dump (&ch->sg), ch->interface->name);
|
||||||
/* log warning only */
|
/* log warning only */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -178,9 +178,9 @@ static void pim_show_assert(struct vty *vty)
|
|||||||
char uptime[10];
|
char uptime[10];
|
||||||
char timer[10];
|
char timer[10];
|
||||||
|
|
||||||
pim_inet4_dump("<ch_src?>", ch->source_addr,
|
pim_inet4_dump("<ch_src?>", ch->sg.u.sg.src,
|
||||||
ch_src_str, sizeof(ch_src_str));
|
ch_src_str, sizeof(ch_src_str));
|
||||||
pim_inet4_dump("<ch_grp?>", ch->group_addr,
|
pim_inet4_dump("<ch_grp?>", ch->sg.u.sg.grp,
|
||||||
ch_grp_str, sizeof(ch_grp_str));
|
ch_grp_str, sizeof(ch_grp_str));
|
||||||
pim_inet4_dump("<assrt_win?>", ch->ifassert_winner,
|
pim_inet4_dump("<assrt_win?>", ch->ifassert_winner,
|
||||||
winner_str, sizeof(winner_str));
|
winner_str, sizeof(winner_str));
|
||||||
@ -236,9 +236,9 @@ static void pim_show_assert_internal(struct vty *vty)
|
|||||||
char ch_src_str[100];
|
char ch_src_str[100];
|
||||||
char ch_grp_str[100];
|
char ch_grp_str[100];
|
||||||
|
|
||||||
pim_inet4_dump("<ch_src?>", ch->source_addr,
|
pim_inet4_dump("<ch_src?>", ch->sg.u.sg.src,
|
||||||
ch_src_str, sizeof(ch_src_str));
|
ch_src_str, sizeof(ch_src_str));
|
||||||
pim_inet4_dump("<ch_grp?>", ch->group_addr,
|
pim_inet4_dump("<ch_grp?>", ch->sg.u.sg.grp,
|
||||||
ch_grp_str, sizeof(ch_grp_str));
|
ch_grp_str, sizeof(ch_grp_str));
|
||||||
vty_out(vty, "%-9s %-15s %-15s %-15s %-3s %-3s %-3s %-4s%s",
|
vty_out(vty, "%-9s %-15s %-15s %-15s %-3s %-3s %-3s %-4s%s",
|
||||||
ifp->name,
|
ifp->name,
|
||||||
@ -284,9 +284,9 @@ static void pim_show_assert_metric(struct vty *vty)
|
|||||||
|
|
||||||
am = pim_macro_spt_assert_metric(&ch->upstream->rpf, pim_ifp->primary_address);
|
am = pim_macro_spt_assert_metric(&ch->upstream->rpf, pim_ifp->primary_address);
|
||||||
|
|
||||||
pim_inet4_dump("<ch_src?>", ch->source_addr,
|
pim_inet4_dump("<ch_src?>", ch->sg.u.sg.src,
|
||||||
ch_src_str, sizeof(ch_src_str));
|
ch_src_str, sizeof(ch_src_str));
|
||||||
pim_inet4_dump("<ch_grp?>", ch->group_addr,
|
pim_inet4_dump("<ch_grp?>", ch->sg.u.sg.grp,
|
||||||
ch_grp_str, sizeof(ch_grp_str));
|
ch_grp_str, sizeof(ch_grp_str));
|
||||||
pim_inet4_dump("<addr?>", am.ip_address,
|
pim_inet4_dump("<addr?>", am.ip_address,
|
||||||
addr_str, sizeof(addr_str));
|
addr_str, sizeof(addr_str));
|
||||||
@ -337,9 +337,9 @@ static void pim_show_assert_winner_metric(struct vty *vty)
|
|||||||
|
|
||||||
am = &ch->ifassert_winner_metric;
|
am = &ch->ifassert_winner_metric;
|
||||||
|
|
||||||
pim_inet4_dump("<ch_src?>", ch->source_addr,
|
pim_inet4_dump("<ch_src?>", ch->sg.u.sg.src,
|
||||||
ch_src_str, sizeof(ch_src_str));
|
ch_src_str, sizeof(ch_src_str));
|
||||||
pim_inet4_dump("<ch_grp?>", ch->group_addr,
|
pim_inet4_dump("<ch_grp?>", ch->sg.u.sg.grp,
|
||||||
ch_grp_str, sizeof(ch_grp_str));
|
ch_grp_str, sizeof(ch_grp_str));
|
||||||
pim_inet4_dump("<addr?>", am->ip_address,
|
pim_inet4_dump("<addr?>", am->ip_address,
|
||||||
addr_str, sizeof(addr_str));
|
addr_str, sizeof(addr_str));
|
||||||
@ -394,9 +394,9 @@ static void pim_show_membership(struct vty *vty)
|
|||||||
char ch_src_str[100];
|
char ch_src_str[100];
|
||||||
char ch_grp_str[100];
|
char ch_grp_str[100];
|
||||||
|
|
||||||
pim_inet4_dump("<ch_src?>", ch->source_addr,
|
pim_inet4_dump("<ch_src?>", ch->sg.u.sg.src,
|
||||||
ch_src_str, sizeof(ch_src_str));
|
ch_src_str, sizeof(ch_src_str));
|
||||||
pim_inet4_dump("<ch_grp?>", ch->group_addr,
|
pim_inet4_dump("<ch_grp?>", ch->sg.u.sg.grp,
|
||||||
ch_grp_str, sizeof(ch_grp_str));
|
ch_grp_str, sizeof(ch_grp_str));
|
||||||
|
|
||||||
vty_out(vty, "%-9s %-15s %-15s %-15s %-10s%s",
|
vty_out(vty, "%-9s %-15s %-15s %-15s %-10s%s",
|
||||||
@ -727,9 +727,9 @@ static void pim_show_join(struct vty *vty)
|
|||||||
char expire[10];
|
char expire[10];
|
||||||
char prune[10];
|
char prune[10];
|
||||||
|
|
||||||
pim_inet4_dump("<ch_src?>", ch->source_addr,
|
pim_inet4_dump("<ch_src?>", ch->sg.u.sg.src,
|
||||||
ch_src_str, sizeof(ch_src_str));
|
ch_src_str, sizeof(ch_src_str));
|
||||||
pim_inet4_dump("<ch_grp?>", ch->group_addr,
|
pim_inet4_dump("<ch_grp?>", ch->sg.u.sg.grp,
|
||||||
ch_grp_str, sizeof(ch_grp_str));
|
ch_grp_str, sizeof(ch_grp_str));
|
||||||
|
|
||||||
pim_time_uptime_begin(uptime, sizeof(uptime), now, ch->ifjoin_creation);
|
pim_time_uptime_begin(uptime, sizeof(uptime), now, ch->ifjoin_creation);
|
||||||
|
@ -126,8 +126,8 @@ void pim_ifchannel_ifjoin_switch(const char *caller,
|
|||||||
if (PIM_DEBUG_PIM_EVENTS) {
|
if (PIM_DEBUG_PIM_EVENTS) {
|
||||||
char src_str[100];
|
char src_str[100];
|
||||||
char grp_str[100];
|
char grp_str[100];
|
||||||
pim_inet4_dump("<src?>", ch->source_addr, src_str, sizeof(src_str));
|
pim_inet4_dump("<src?>", ch->sg.u.sg.src, src_str, sizeof(src_str));
|
||||||
pim_inet4_dump("<grp?>", ch->group_addr, grp_str, sizeof(grp_str));
|
pim_inet4_dump("<grp?>", ch->sg.u.sg.grp, grp_str, sizeof(grp_str));
|
||||||
zlog_debug("PIM_IFCHANNEL_%s: (S,G)=(%s,%s) on interface %s",
|
zlog_debug("PIM_IFCHANNEL_%s: (S,G)=(%s,%s) on interface %s",
|
||||||
((new_state == PIM_IFJOIN_NOINFO) ? "DOWN" : "UP"),
|
((new_state == PIM_IFJOIN_NOINFO) ? "DOWN" : "UP"),
|
||||||
src_str, grp_str, ch->interface->name);
|
src_str, grp_str, ch->interface->name);
|
||||||
@ -209,8 +209,8 @@ struct pim_ifchannel *pim_ifchannel_find(struct interface *ifp,
|
|||||||
|
|
||||||
for (ALL_LIST_ELEMENTS_RO(pim_ifp->pim_ifchannel_list, ch_node, ch)) {
|
for (ALL_LIST_ELEMENTS_RO(pim_ifp->pim_ifchannel_list, ch_node, ch)) {
|
||||||
if (
|
if (
|
||||||
(source_addr.s_addr == ch->source_addr.s_addr) &&
|
(source_addr.s_addr == ch->sg.u.sg.src.s_addr) &&
|
||||||
(group_addr.s_addr == ch->group_addr.s_addr)
|
(group_addr.s_addr == ch->sg.u.sg.grp.s_addr)
|
||||||
) {
|
) {
|
||||||
return ch;
|
return ch;
|
||||||
}
|
}
|
||||||
@ -228,8 +228,8 @@ static void ifmembership_set(struct pim_ifchannel *ch,
|
|||||||
if (PIM_DEBUG_PIM_EVENTS) {
|
if (PIM_DEBUG_PIM_EVENTS) {
|
||||||
char src_str[100];
|
char src_str[100];
|
||||||
char grp_str[100];
|
char grp_str[100];
|
||||||
pim_inet4_dump("<src?>", ch->source_addr, src_str, sizeof(src_str));
|
pim_inet4_dump("<src?>", ch->sg.u.sg.src, src_str, sizeof(src_str));
|
||||||
pim_inet4_dump("<grp?>", ch->group_addr, grp_str, sizeof(grp_str));
|
pim_inet4_dump("<grp?>", ch->sg.u.sg.grp, grp_str, sizeof(grp_str));
|
||||||
zlog_debug("%s: (S,G)=(%s,%s) membership now is %s on interface %s",
|
zlog_debug("%s: (S,G)=(%s,%s) membership now is %s on interface %s",
|
||||||
__PRETTY_FUNCTION__,
|
__PRETTY_FUNCTION__,
|
||||||
src_str, grp_str,
|
src_str, grp_str,
|
||||||
@ -317,8 +317,8 @@ struct pim_ifchannel *pim_ifchannel_add(struct interface *ifp,
|
|||||||
ch->flags = 0;
|
ch->flags = 0;
|
||||||
ch->upstream = up;
|
ch->upstream = up;
|
||||||
ch->interface = ifp;
|
ch->interface = ifp;
|
||||||
ch->source_addr = source_addr;
|
ch->sg.u.sg.src = source_addr;
|
||||||
ch->group_addr = group_addr;
|
ch->sg.u.sg.grp = group_addr;
|
||||||
ch->local_ifmembership = PIM_IFMEMBERSHIP_NOINFO;
|
ch->local_ifmembership = PIM_IFMEMBERSHIP_NOINFO;
|
||||||
|
|
||||||
ch->ifjoin_state = PIM_IFJOIN_NOINFO;
|
ch->ifjoin_state = PIM_IFJOIN_NOINFO;
|
||||||
@ -400,8 +400,8 @@ static int on_ifjoin_prune_pending_timer(struct thread *t)
|
|||||||
send_prune_echo = (listcount(pim_ifp->pim_neighbor_list) > 1);
|
send_prune_echo = (listcount(pim_ifp->pim_neighbor_list) > 1);
|
||||||
|
|
||||||
/* Save (S,G) */
|
/* Save (S,G) */
|
||||||
ch_source = ch->source_addr;
|
ch_source = ch->sg.u.sg.src;
|
||||||
ch_group = ch->group_addr;
|
ch_group = ch->sg.u.sg.grp;
|
||||||
|
|
||||||
ifjoin_to_noinfo(ch);
|
ifjoin_to_noinfo(ch);
|
||||||
/* from here ch may have been deleted */
|
/* from here ch may have been deleted */
|
||||||
@ -759,8 +759,8 @@ void pim_ifchannel_update_could_assert(struct pim_ifchannel *ch)
|
|||||||
if (PIM_DEBUG_PIM_EVENTS) {
|
if (PIM_DEBUG_PIM_EVENTS) {
|
||||||
char src_str[100];
|
char src_str[100];
|
||||||
char grp_str[100];
|
char grp_str[100];
|
||||||
pim_inet4_dump("<src?>", ch->source_addr, src_str, sizeof(src_str));
|
pim_inet4_dump("<src?>", ch->sg.u.sg.src, src_str, sizeof(src_str));
|
||||||
pim_inet4_dump("<grp?>", ch->group_addr, grp_str, sizeof(grp_str));
|
pim_inet4_dump("<grp?>", ch->sg.u.sg.grp, grp_str, sizeof(grp_str));
|
||||||
zlog_debug("%s: CouldAssert(%s,%s,%s) changed from %d to %d",
|
zlog_debug("%s: CouldAssert(%s,%s,%s) changed from %d to %d",
|
||||||
__PRETTY_FUNCTION__,
|
__PRETTY_FUNCTION__,
|
||||||
src_str, grp_str, ch->interface->name,
|
src_str, grp_str, ch->interface->name,
|
||||||
@ -803,8 +803,8 @@ void pim_ifchannel_update_my_assert_metric(struct pim_ifchannel *ch)
|
|||||||
char grp_str[100];
|
char grp_str[100];
|
||||||
char old_addr_str[100];
|
char old_addr_str[100];
|
||||||
char new_addr_str[100];
|
char new_addr_str[100];
|
||||||
pim_inet4_dump("<src?>", ch->source_addr, src_str, sizeof(src_str));
|
pim_inet4_dump("<src?>", ch->sg.u.sg.src, src_str, sizeof(src_str));
|
||||||
pim_inet4_dump("<grp?>", ch->group_addr, grp_str, sizeof(grp_str));
|
pim_inet4_dump("<grp?>", ch->sg.u.sg.grp, grp_str, sizeof(grp_str));
|
||||||
pim_inet4_dump("<old_addr?>", ch->ifassert_my_metric.ip_address, old_addr_str, sizeof(old_addr_str));
|
pim_inet4_dump("<old_addr?>", ch->ifassert_my_metric.ip_address, old_addr_str, sizeof(old_addr_str));
|
||||||
pim_inet4_dump("<new_addr?>", my_metric_new.ip_address, new_addr_str, sizeof(new_addr_str));
|
pim_inet4_dump("<new_addr?>", my_metric_new.ip_address, new_addr_str, sizeof(new_addr_str));
|
||||||
zlog_debug("%s: my_assert_metric(%s,%s,%s) changed from %u,%u,%u,%s to %u,%u,%u,%s",
|
zlog_debug("%s: my_assert_metric(%s,%s,%s) changed from %u,%u,%u,%s to %u,%u,%u,%s",
|
||||||
@ -839,8 +839,8 @@ void pim_ifchannel_update_assert_tracking_desired(struct pim_ifchannel *ch)
|
|||||||
if (PIM_DEBUG_PIM_EVENTS) {
|
if (PIM_DEBUG_PIM_EVENTS) {
|
||||||
char src_str[100];
|
char src_str[100];
|
||||||
char grp_str[100];
|
char grp_str[100];
|
||||||
pim_inet4_dump("<src?>", ch->source_addr, src_str, sizeof(src_str));
|
pim_inet4_dump("<src?>", ch->sg.u.sg.src, src_str, sizeof(src_str));
|
||||||
pim_inet4_dump("<grp?>", ch->group_addr, grp_str, sizeof(grp_str));
|
pim_inet4_dump("<grp?>", ch->sg.u.sg.grp, grp_str, sizeof(grp_str));
|
||||||
zlog_debug("%s: AssertTrackingDesired(%s,%s,%s) changed from %d to %d",
|
zlog_debug("%s: AssertTrackingDesired(%s,%s,%s) changed from %d to %d",
|
||||||
__PRETTY_FUNCTION__,
|
__PRETTY_FUNCTION__,
|
||||||
src_str, grp_str, ch->interface->name,
|
src_str, grp_str, ch->interface->name,
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
#include <zebra.h>
|
#include <zebra.h>
|
||||||
|
|
||||||
#include "if.h"
|
#include "if.h"
|
||||||
|
#include "prefix.h"
|
||||||
|
|
||||||
#include "pim_upstream.h"
|
#include "pim_upstream.h"
|
||||||
|
|
||||||
@ -73,8 +74,7 @@ struct pim_assert_metric {
|
|||||||
Per-interface (S,G) state
|
Per-interface (S,G) state
|
||||||
*/
|
*/
|
||||||
struct pim_ifchannel {
|
struct pim_ifchannel {
|
||||||
struct in_addr source_addr; /* (S,G) source key */
|
struct prefix sg;
|
||||||
struct in_addr group_addr; /* (S,G) group key */
|
|
||||||
struct interface *interface; /* backpointer to interface */
|
struct interface *interface; /* backpointer to interface */
|
||||||
uint32_t flags;
|
uint32_t flags;
|
||||||
|
|
||||||
|
@ -102,13 +102,9 @@ int pim_macro_ch_lost_assert(const struct pim_ifchannel *ch)
|
|||||||
|
|
||||||
ifp = ch->interface;
|
ifp = ch->interface;
|
||||||
if (!ifp) {
|
if (!ifp) {
|
||||||
char src_str[100];
|
zlog_warn("%s: (S,G)=%s: null interface",
|
||||||
char grp_str[100];
|
|
||||||
pim_inet4_dump("<src?>", ch->source_addr, src_str, sizeof(src_str));
|
|
||||||
pim_inet4_dump("<grp?>", ch->group_addr, grp_str, sizeof(grp_str));
|
|
||||||
zlog_warn("%s: (S,G)=(%s,%s): null interface",
|
|
||||||
__PRETTY_FUNCTION__,
|
__PRETTY_FUNCTION__,
|
||||||
src_str, grp_str);
|
pim_str_sg_dump (&ch->sg));
|
||||||
return 0; /* false */
|
return 0; /* false */
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -118,13 +114,9 @@ int pim_macro_ch_lost_assert(const struct pim_ifchannel *ch)
|
|||||||
|
|
||||||
pim_ifp = ifp->info;
|
pim_ifp = ifp->info;
|
||||||
if (!pim_ifp) {
|
if (!pim_ifp) {
|
||||||
char src_str[100];
|
zlog_warn("%s: (S,G)=%s: multicast not enabled on interface %s",
|
||||||
char grp_str[100];
|
|
||||||
pim_inet4_dump("<src?>", ch->source_addr, src_str, sizeof(src_str));
|
|
||||||
pim_inet4_dump("<grp?>", ch->group_addr, grp_str, sizeof(grp_str));
|
|
||||||
zlog_warn("%s: (S,G)=(%s,%s): multicast not enabled on interface %s",
|
|
||||||
__PRETTY_FUNCTION__,
|
__PRETTY_FUNCTION__,
|
||||||
src_str, grp_str, ifp->name);
|
pim_str_sg_dump (&ch->sg), ifp->name);
|
||||||
return 0; /* false */
|
return 0; /* false */
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -159,13 +151,9 @@ int pim_macro_chisin_pim_include(const struct pim_ifchannel *ch)
|
|||||||
struct pim_interface *pim_ifp = ch->interface->info;
|
struct pim_interface *pim_ifp = ch->interface->info;
|
||||||
|
|
||||||
if (!pim_ifp) {
|
if (!pim_ifp) {
|
||||||
char src_str[100];
|
zlog_warn("%s: (S,G)=%s: multicast not enabled on interface %s",
|
||||||
char grp_str[100];
|
|
||||||
pim_inet4_dump("<src?>", ch->source_addr, src_str, sizeof(src_str));
|
|
||||||
pim_inet4_dump("<grp?>", ch->group_addr, grp_str, sizeof(grp_str));
|
|
||||||
zlog_warn("%s: (S,G)=(%s,%s): multicast not enabled on interface %s",
|
|
||||||
__PRETTY_FUNCTION__,
|
__PRETTY_FUNCTION__,
|
||||||
src_str, grp_str, ch->interface->name);
|
pim_str_sg_dump (&ch->sg), ch->interface->name);
|
||||||
return 0; /* false */
|
return 0; /* false */
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -227,13 +215,9 @@ int pim_macro_ch_could_assert_eval(const struct pim_ifchannel *ch)
|
|||||||
|
|
||||||
ifp = ch->interface;
|
ifp = ch->interface;
|
||||||
if (!ifp) {
|
if (!ifp) {
|
||||||
char src_str[100];
|
zlog_warn("%s: (S,G)=%s: null interface",
|
||||||
char grp_str[100];
|
|
||||||
pim_inet4_dump("<src?>", ch->source_addr, src_str, sizeof(src_str));
|
|
||||||
pim_inet4_dump("<grp?>", ch->group_addr, grp_str, sizeof(grp_str));
|
|
||||||
zlog_warn("%s: (S,G)=(%s,%s): null interface",
|
|
||||||
__PRETTY_FUNCTION__,
|
__PRETTY_FUNCTION__,
|
||||||
src_str, grp_str);
|
pim_str_sg_dump (&ch->sg));
|
||||||
return 0; /* false */
|
return 0; /* false */
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -388,25 +372,17 @@ int pim_macro_assert_tracking_desired_eval(const struct pim_ifchannel *ch)
|
|||||||
|
|
||||||
ifp = ch->interface;
|
ifp = ch->interface;
|
||||||
if (!ifp) {
|
if (!ifp) {
|
||||||
char src_str[100];
|
zlog_warn("%s: (S,G)=%s: null interface",
|
||||||
char grp_str[100];
|
|
||||||
pim_inet4_dump("<src?>", ch->source_addr, src_str, sizeof(src_str));
|
|
||||||
pim_inet4_dump("<grp?>", ch->group_addr, grp_str, sizeof(grp_str));
|
|
||||||
zlog_warn("%s: (S,G)=(%s,%s): null interface",
|
|
||||||
__PRETTY_FUNCTION__,
|
__PRETTY_FUNCTION__,
|
||||||
src_str, grp_str);
|
pim_str_sg_dump (&ch->sg));
|
||||||
return 0; /* false */
|
return 0; /* false */
|
||||||
}
|
}
|
||||||
|
|
||||||
pim_ifp = ifp->info;
|
pim_ifp = ifp->info;
|
||||||
if (!pim_ifp) {
|
if (!pim_ifp) {
|
||||||
char src_str[100];
|
zlog_warn("%s: (S,G)=%s: multicast not enabled on interface %s",
|
||||||
char grp_str[100];
|
|
||||||
pim_inet4_dump("<src?>", ch->source_addr, src_str, sizeof(src_str));
|
|
||||||
pim_inet4_dump("<grp?>", ch->group_addr, grp_str, sizeof(grp_str));
|
|
||||||
zlog_warn("%s: (S,G)=(%s,%s): multicast not enabled on interface %s",
|
|
||||||
__PRETTY_FUNCTION__,
|
__PRETTY_FUNCTION__,
|
||||||
src_str, grp_str, ch->interface->name);
|
pim_str_sg_dump (&ch->sg), ch->interface->name);
|
||||||
return 0; /* false */
|
return 0; /* false */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,3 +43,16 @@ void pim_inet4_dump(const char *onfail, struct in_addr addr, char *buf, int buf_
|
|||||||
|
|
||||||
errno = save_errno;
|
errno = save_errno;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
pim_str_sg_dump (const struct prefix *sg)
|
||||||
|
{
|
||||||
|
char src_str[100];
|
||||||
|
char grp_str[100];
|
||||||
|
static char sg_str[200];
|
||||||
|
|
||||||
|
pim_inet4_dump ("<src?>", sg->u.sg.src, src_str, sizeof(src_str));
|
||||||
|
pim_inet4_dump ("<grp?>", sg->u.sg.grp, grp_str, sizeof(grp_str));
|
||||||
|
snprintf (sg_str, 200, "(%s,%s)", src_str, grp_str);
|
||||||
|
return sg_str;
|
||||||
|
}
|
||||||
|
@ -27,6 +27,9 @@
|
|||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
|
|
||||||
|
#include <prefix.h>
|
||||||
|
|
||||||
void pim_inet4_dump(const char *onfail, struct in_addr addr, char *buf, int buf_size);
|
void pim_inet4_dump(const char *onfail, struct in_addr addr, char *buf, int buf_size);
|
||||||
|
char *pim_str_sg_dump (const struct prefix *sg);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1130,8 +1130,8 @@ void pim_forward_start(struct pim_ifchannel *ch)
|
|||||||
char group_str[100];
|
char group_str[100];
|
||||||
char upstream_str[100];
|
char upstream_str[100];
|
||||||
|
|
||||||
pim_inet4_dump("<source?>", ch->source_addr, source_str, sizeof(source_str));
|
pim_inet4_dump("<source?>", ch->sg.u.sg.src, source_str, sizeof(source_str));
|
||||||
pim_inet4_dump("<group?>", ch->group_addr, group_str, sizeof(group_str));
|
pim_inet4_dump("<group?>", ch->sg.u.sg.grp, group_str, sizeof(group_str));
|
||||||
pim_inet4_dump("<upstream?>", up->upstream_addr, upstream_str, sizeof(upstream_str));
|
pim_inet4_dump("<upstream?>", up->upstream_addr, upstream_str, sizeof(upstream_str));
|
||||||
zlog_debug("%s: (S,G)=(%s,%s) oif=%s(%s)",
|
zlog_debug("%s: (S,G)=(%s,%s) oif=%s(%s)",
|
||||||
__PRETTY_FUNCTION__,
|
__PRETTY_FUNCTION__,
|
||||||
@ -1175,8 +1175,8 @@ void pim_forward_stop(struct pim_ifchannel *ch)
|
|||||||
if (PIM_DEBUG_PIM_TRACE) {
|
if (PIM_DEBUG_PIM_TRACE) {
|
||||||
char source_str[100];
|
char source_str[100];
|
||||||
char group_str[100];
|
char group_str[100];
|
||||||
pim_inet4_dump("<source?>", ch->source_addr, source_str, sizeof(source_str));
|
pim_inet4_dump("<source?>", ch->sg.u.sg.src, source_str, sizeof(source_str));
|
||||||
pim_inet4_dump("<group?>", ch->group_addr, group_str, sizeof(group_str));
|
pim_inet4_dump("<group?>", ch->sg.u.sg.grp, group_str, sizeof(group_str));
|
||||||
zlog_debug("%s: (S,G)=(%s,%s) oif=%s",
|
zlog_debug("%s: (S,G)=(%s,%s) oif=%s",
|
||||||
__PRETTY_FUNCTION__,
|
__PRETTY_FUNCTION__,
|
||||||
source_str, group_str, ch->interface->name);
|
source_str, group_str, ch->interface->name);
|
||||||
@ -1185,8 +1185,8 @@ void pim_forward_stop(struct pim_ifchannel *ch)
|
|||||||
if (!up->channel_oil) {
|
if (!up->channel_oil) {
|
||||||
char source_str[100];
|
char source_str[100];
|
||||||
char group_str[100];
|
char group_str[100];
|
||||||
pim_inet4_dump("<source?>", ch->source_addr, source_str, sizeof(source_str));
|
pim_inet4_dump("<source?>", ch->sg.u.sg.src, source_str, sizeof(source_str));
|
||||||
pim_inet4_dump("<group?>", ch->group_addr, group_str, sizeof(group_str));
|
pim_inet4_dump("<group?>", ch->sg.u.sg.grp, group_str, sizeof(group_str));
|
||||||
zlog_warn("%s: (S,G)=(%s,%s) oif=%s missing channel OIL",
|
zlog_warn("%s: (S,G)=(%s,%s) oif=%s missing channel OIL",
|
||||||
__PRETTY_FUNCTION__,
|
__PRETTY_FUNCTION__,
|
||||||
source_str, group_str, ch->interface->name);
|
source_str, group_str, ch->interface->name);
|
||||||
|
Loading…
Reference in New Issue
Block a user