From 99064df9e385acc466ea8b4ee9f53709d0df9b55 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Fri, 22 Jul 2016 08:01:43 -0400 Subject: [PATCH] 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 --- pimd/pim_assert.c | 113 ++++++++++++------------------------------- pimd/pim_cmd.c | 24 ++++----- pimd/pim_ifchannel.c | 32 ++++++------ pimd/pim_ifchannel.h | 4 +- pimd/pim_macro.c | 48 +++++------------- pimd/pim_str.c | 13 +++++ pimd/pim_str.h | 3 ++ pimd/pim_zebra.c | 12 ++--- 8 files changed, 96 insertions(+), 153 deletions(-) diff --git a/pimd/pim_assert.c b/pimd/pim_assert.c index 590a7e1da5..63f4e33868 100644 --- a/pimd/pim_assert.c +++ b/pimd/pim_assert.c @@ -56,31 +56,23 @@ void pim_ifassert_winner_set(struct pim_ifchannel *ch, if (PIM_DEBUG_PIM_EVENTS) { if (ch->ifassert_state != new_state) { - char src_str[100]; - char grp_str[100]; - pim_inet4_dump("", ch->source_addr, src_str, sizeof(src_str)); - pim_inet4_dump("", 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__, - src_str, grp_str, - pim_ifchannel_ifassert_name(ch->ifassert_state), - pim_ifchannel_ifassert_name(new_state), - ch->interface->name); + zlog_debug("%s: (S,G)=%s assert state changed from %s to %s on interface %s", + __PRETTY_FUNCTION__, + pim_str_sg_dump (&ch->sg), + pim_ifchannel_ifassert_name(ch->ifassert_state), + pim_ifchannel_ifassert_name(new_state), + ch->interface->name); } if (winner_changed) { - char src_str[100]; - char grp_str[100]; char was_str[100]; char winner_str[100]; - pim_inet4_dump("", ch->source_addr, src_str, sizeof(src_str)); - pim_inet4_dump("", ch->group_addr, grp_str, sizeof(grp_str)); pim_inet4_dump("", ch->ifassert_winner, was_str, sizeof(was_str)); pim_inet4_dump("", winner, winner_str, sizeof(winner_str)); - zlog_debug("%s: (S,G)=(%s,%s) assert winner changed from %s to %s on interface %s", - __PRETTY_FUNCTION__, - src_str, grp_str, - was_str, winner_str, ch->interface->name); + zlog_debug("%s: (S,G)=%s assert winner changed from %s to %s on interface %s", + __PRETTY_FUNCTION__, + pim_str_sg_dump (&ch->sg), + was_str, winner_str, ch->interface->name); } } /* 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 (assert_action_a1(ch)) { - char src_str[100]; - char grp_str[100]; - pim_inet4_dump("", ch->source_addr, src_str, sizeof(src_str)); - pim_inet4_dump("", ch->group_addr, grp_str, sizeof(grp_str)); - zlog_warn("%s: %s: (S,G)=(%s,%s) assert_action_a1 failure on interface %s", + zlog_warn("%s: %s: (S,G)=%s assert_action_a1 failure on interface %s", __PRETTY_FUNCTION__, caller, - src_str, grp_str, ch->interface->name); + pim_str_sg_dump (&ch->sg), ch->interface->name); /* 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, - ch->group_addr, ch->source_addr, + ch->sg.u.sg.grp, ch->sg.u.sg.src, metric.metric_preference, metric.route_metric, metric.rpt_bit_flag); @@ -482,13 +470,9 @@ static int pim_assert_do(struct pim_ifchannel *ch, pim_hello_require(ifp); if (PIM_DEBUG_PIM_TRACE) { - char source_str[100]; - char group_str[100]; - pim_inet4_dump("", ch->source_addr, source_str, sizeof(source_str)); - pim_inet4_dump("", ch->group_addr, group_str, sizeof(group_str)); - zlog_debug("%s: to %s: (S,G)=(%s,%s) pref=%u metric=%u rpt_bit=%u", + zlog_debug("%s: to %s: (S,G)=%s pref=%u metric=%u rpt_bit=%u", __PRETTY_FUNCTION__, - ifp->name, source_str, group_str, + ifp->name, pim_str_sg_dump (&ch->sg), metric.metric_preference, metric.route_metric, 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.metric_preference = PIM_ASSERT_METRIC_PREFERENCE_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); } @@ -543,13 +527,9 @@ static int on_assert_timer(struct thread *t) zassert(ifp); if (PIM_DEBUG_PIM_TRACE) { - char src_str[100]; - char grp_str[100]; - pim_inet4_dump("", ch->source_addr, src_str, sizeof(src_str)); - pim_inet4_dump("", ch->group_addr, grp_str, sizeof(grp_str)); - zlog_debug("%s: (S,G)=(%s,%s) timer expired on interface %s", + zlog_debug("%s: (S,G)=%s timer expired on interface %s", __PRETTY_FUNCTION__, - src_str, grp_str, ifp->name); + pim_str_sg_dump (&ch->sg), ifp->name); } ch->t_ifassert_timer = NULL; @@ -564,13 +544,9 @@ static int on_assert_timer(struct thread *t) break; default: { - char source_str[100]; - char group_str[100]; - pim_inet4_dump("", ch->source_addr, source_str, sizeof(source_str)); - pim_inet4_dump("", ch->group_addr, group_str, sizeof(group_str)); - zlog_warn("%s: (S,G)=(%s,%s) invalid assert state %d on interface %s", + zlog_warn("%s: (S,G)=%s invalid assert state %d on interface %s", __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 (ch->t_ifassert_timer) { - char src_str[100]; - char grp_str[100]; - pim_inet4_dump("", ch->source_addr, src_str, sizeof(src_str)); - pim_inet4_dump("", ch->group_addr, grp_str, sizeof(grp_str)); - zlog_debug("%s: (S,G)=(%s,%s) cancelling timer on interface %s", + zlog_debug("%s: (S,G)=%s cancelling timer on interface %s", __PRETTY_FUNCTION__, - src_str, grp_str, ifp->name); + pim_str_sg_dump (&ch->sg), ifp->name); } } THREAD_OFF(ch->t_ifassert_timer); @@ -612,13 +584,9 @@ static void pim_assert_timer_set(struct pim_ifchannel *ch, assert_timer_off(ch); if (PIM_DEBUG_PIM_TRACE) { - char src_str[100]; - char grp_str[100]; - pim_inet4_dump("", ch->source_addr, src_str, sizeof(src_str)); - pim_inet4_dump("", ch->group_addr, grp_str, sizeof(grp_str)); - zlog_debug("%s: (S,G)=(%s,%s) starting %u sec timer on interface %s", + zlog_debug("%s: (S,G)=%s starting %u sec timer on interface %s", __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, @@ -650,13 +618,9 @@ int assert_action_a1(struct pim_ifchannel *ch) pim_ifp = ifp->info; if (!pim_ifp) { - char src_str[100]; - char grp_str[100]; - pim_inet4_dump("", ch->source_addr, src_str, sizeof(src_str)); - pim_inet4_dump("", ch->group_addr, grp_str, sizeof(grp_str)); - zlog_warn("%s: (S,G)=(%s,%s) multicast not enabled on interface %s", + zlog_warn("%s: (S,G)=%s multicast not enabled on interface %s", __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 */ } @@ -668,13 +632,9 @@ int assert_action_a1(struct pim_ifchannel *ch) zassert(ch->ifassert_state == PIM_IFASSERT_I_AM_WINNER); /* a3 requirement */ if (assert_action_a3(ch)) { - char src_str[100]; - char grp_str[100]; - pim_inet4_dump("", ch->source_addr, src_str, sizeof(src_str)); - pim_inet4_dump("", ch->group_addr, grp_str, sizeof(grp_str)); - zlog_warn("%s: (S,G)=(%s,%s) assert_action_a3 failure on interface %s", + zlog_warn("%s: (S,G)=%s assert_action_a3 failure on interface %s", __PRETTY_FUNCTION__, - src_str, grp_str, ifp->name); + pim_str_sg_dump (&ch->sg), ifp->name); /* warning only */ } @@ -719,14 +679,9 @@ static int assert_action_a3(struct pim_ifchannel *ch) pim_assert_timer_reset(ch); if (pim_assert_send(ch)) { - char src_str[100]; - char grp_str[100]; - pim_inet4_dump("", ch->source_addr, src_str, sizeof(src_str)); - pim_inet4_dump("", ch->group_addr, grp_str, sizeof(grp_str)); - - zlog_warn("%s: (S,G)=(%s,%s) failure sending assert on interface %s", + zlog_warn("%s: (S,G)=%s failure sending assert on interface %s", __PRETTY_FUNCTION__, - src_str, grp_str, ch->interface->name); + pim_str_sg_dump (&ch->sg), ch->interface->name); return -1; } @@ -748,13 +703,9 @@ static int assert_action_a3(struct pim_ifchannel *ch) void assert_action_a4(struct pim_ifchannel *ch) { if (pim_assert_cancel(ch)) { - char src_str[100]; - char grp_str[100]; - pim_inet4_dump("", ch->source_addr, src_str, sizeof(src_str)); - pim_inet4_dump("", ch->group_addr, grp_str, sizeof(grp_str)); - zlog_warn("%s: failure sending AssertCancel(%s,%s) on interface %s", + zlog_warn("%s: failure sending AssertCancel%s on interface %s", __PRETTY_FUNCTION__, - src_str, grp_str, ch->interface->name); + pim_str_sg_dump (&ch->sg), ch->interface->name); /* log warning only */ } diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c index b595d337e7..726a033343 100644 --- a/pimd/pim_cmd.c +++ b/pimd/pim_cmd.c @@ -178,9 +178,9 @@ static void pim_show_assert(struct vty *vty) char uptime[10]; char timer[10]; - pim_inet4_dump("", ch->source_addr, + pim_inet4_dump("", ch->sg.u.sg.src, ch_src_str, sizeof(ch_src_str)); - pim_inet4_dump("", ch->group_addr, + pim_inet4_dump("", ch->sg.u.sg.grp, ch_grp_str, sizeof(ch_grp_str)); pim_inet4_dump("", ch->ifassert_winner, 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_grp_str[100]; - pim_inet4_dump("", ch->source_addr, + pim_inet4_dump("", ch->sg.u.sg.src, ch_src_str, sizeof(ch_src_str)); - pim_inet4_dump("", ch->group_addr, + pim_inet4_dump("", ch->sg.u.sg.grp, ch_grp_str, sizeof(ch_grp_str)); vty_out(vty, "%-9s %-15s %-15s %-15s %-3s %-3s %-3s %-4s%s", 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); - pim_inet4_dump("", ch->source_addr, + pim_inet4_dump("", ch->sg.u.sg.src, ch_src_str, sizeof(ch_src_str)); - pim_inet4_dump("", ch->group_addr, + pim_inet4_dump("", ch->sg.u.sg.grp, ch_grp_str, sizeof(ch_grp_str)); pim_inet4_dump("", am.ip_address, addr_str, sizeof(addr_str)); @@ -337,9 +337,9 @@ static void pim_show_assert_winner_metric(struct vty *vty) am = &ch->ifassert_winner_metric; - pim_inet4_dump("", ch->source_addr, + pim_inet4_dump("", ch->sg.u.sg.src, ch_src_str, sizeof(ch_src_str)); - pim_inet4_dump("", ch->group_addr, + pim_inet4_dump("", ch->sg.u.sg.grp, ch_grp_str, sizeof(ch_grp_str)); pim_inet4_dump("", am->ip_address, addr_str, sizeof(addr_str)); @@ -394,9 +394,9 @@ static void pim_show_membership(struct vty *vty) char ch_src_str[100]; char ch_grp_str[100]; - pim_inet4_dump("", ch->source_addr, + pim_inet4_dump("", ch->sg.u.sg.src, ch_src_str, sizeof(ch_src_str)); - pim_inet4_dump("", ch->group_addr, + pim_inet4_dump("", ch->sg.u.sg.grp, ch_grp_str, sizeof(ch_grp_str)); 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 prune[10]; - pim_inet4_dump("", ch->source_addr, + pim_inet4_dump("", ch->sg.u.sg.src, ch_src_str, sizeof(ch_src_str)); - pim_inet4_dump("", ch->group_addr, + pim_inet4_dump("", ch->sg.u.sg.grp, ch_grp_str, sizeof(ch_grp_str)); pim_time_uptime_begin(uptime, sizeof(uptime), now, ch->ifjoin_creation); diff --git a/pimd/pim_ifchannel.c b/pimd/pim_ifchannel.c index 15dd682a50..2c34f1b72f 100644 --- a/pimd/pim_ifchannel.c +++ b/pimd/pim_ifchannel.c @@ -126,8 +126,8 @@ void pim_ifchannel_ifjoin_switch(const char *caller, if (PIM_DEBUG_PIM_EVENTS) { char src_str[100]; char grp_str[100]; - pim_inet4_dump("", ch->source_addr, src_str, sizeof(src_str)); - pim_inet4_dump("", ch->group_addr, grp_str, sizeof(grp_str)); + pim_inet4_dump("", ch->sg.u.sg.src, src_str, sizeof(src_str)); + pim_inet4_dump("", ch->sg.u.sg.grp, grp_str, sizeof(grp_str)); zlog_debug("PIM_IFCHANNEL_%s: (S,G)=(%s,%s) on interface %s", ((new_state == PIM_IFJOIN_NOINFO) ? "DOWN" : "UP"), 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)) { if ( - (source_addr.s_addr == ch->source_addr.s_addr) && - (group_addr.s_addr == ch->group_addr.s_addr) + (source_addr.s_addr == ch->sg.u.sg.src.s_addr) && + (group_addr.s_addr == ch->sg.u.sg.grp.s_addr) ) { return ch; } @@ -228,8 +228,8 @@ static void ifmembership_set(struct pim_ifchannel *ch, if (PIM_DEBUG_PIM_EVENTS) { char src_str[100]; char grp_str[100]; - pim_inet4_dump("", ch->source_addr, src_str, sizeof(src_str)); - pim_inet4_dump("", ch->group_addr, grp_str, sizeof(grp_str)); + pim_inet4_dump("", ch->sg.u.sg.src, src_str, sizeof(src_str)); + pim_inet4_dump("", ch->sg.u.sg.grp, grp_str, sizeof(grp_str)); zlog_debug("%s: (S,G)=(%s,%s) membership now is %s on interface %s", __PRETTY_FUNCTION__, src_str, grp_str, @@ -317,8 +317,8 @@ struct pim_ifchannel *pim_ifchannel_add(struct interface *ifp, ch->flags = 0; ch->upstream = up; ch->interface = ifp; - ch->source_addr = source_addr; - ch->group_addr = group_addr; + ch->sg.u.sg.src = source_addr; + ch->sg.u.sg.grp = group_addr; ch->local_ifmembership = PIM_IFMEMBERSHIP_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); /* Save (S,G) */ - ch_source = ch->source_addr; - ch_group = ch->group_addr; + ch_source = ch->sg.u.sg.src; + ch_group = ch->sg.u.sg.grp; ifjoin_to_noinfo(ch); /* 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) { char src_str[100]; char grp_str[100]; - pim_inet4_dump("", ch->source_addr, src_str, sizeof(src_str)); - pim_inet4_dump("", ch->group_addr, grp_str, sizeof(grp_str)); + pim_inet4_dump("", ch->sg.u.sg.src, src_str, sizeof(src_str)); + pim_inet4_dump("", ch->sg.u.sg.grp, grp_str, sizeof(grp_str)); zlog_debug("%s: CouldAssert(%s,%s,%s) changed from %d to %d", __PRETTY_FUNCTION__, 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 old_addr_str[100]; char new_addr_str[100]; - pim_inet4_dump("", ch->source_addr, src_str, sizeof(src_str)); - pim_inet4_dump("", ch->group_addr, grp_str, sizeof(grp_str)); + pim_inet4_dump("", ch->sg.u.sg.src, src_str, sizeof(src_str)); + pim_inet4_dump("", ch->sg.u.sg.grp, grp_str, sizeof(grp_str)); pim_inet4_dump("", ch->ifassert_my_metric.ip_address, old_addr_str, sizeof(old_addr_str)); pim_inet4_dump("", 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", @@ -839,8 +839,8 @@ void pim_ifchannel_update_assert_tracking_desired(struct pim_ifchannel *ch) if (PIM_DEBUG_PIM_EVENTS) { char src_str[100]; char grp_str[100]; - pim_inet4_dump("", ch->source_addr, src_str, sizeof(src_str)); - pim_inet4_dump("", ch->group_addr, grp_str, sizeof(grp_str)); + pim_inet4_dump("", ch->sg.u.sg.src, src_str, sizeof(src_str)); + pim_inet4_dump("", ch->sg.u.sg.grp, grp_str, sizeof(grp_str)); zlog_debug("%s: AssertTrackingDesired(%s,%s,%s) changed from %d to %d", __PRETTY_FUNCTION__, src_str, grp_str, ch->interface->name, diff --git a/pimd/pim_ifchannel.h b/pimd/pim_ifchannel.h index 5f488ddc0f..747ee39bf2 100644 --- a/pimd/pim_ifchannel.h +++ b/pimd/pim_ifchannel.h @@ -26,6 +26,7 @@ #include #include "if.h" +#include "prefix.h" #include "pim_upstream.h" @@ -73,8 +74,7 @@ struct pim_assert_metric { Per-interface (S,G) state */ struct pim_ifchannel { - struct in_addr source_addr; /* (S,G) source key */ - struct in_addr group_addr; /* (S,G) group key */ + struct prefix sg; struct interface *interface; /* backpointer to interface */ uint32_t flags; diff --git a/pimd/pim_macro.c b/pimd/pim_macro.c index 39098df526..ea9fc3b063 100644 --- a/pimd/pim_macro.c +++ b/pimd/pim_macro.c @@ -102,13 +102,9 @@ int pim_macro_ch_lost_assert(const struct pim_ifchannel *ch) ifp = ch->interface; if (!ifp) { - char src_str[100]; - char grp_str[100]; - pim_inet4_dump("", ch->source_addr, src_str, sizeof(src_str)); - pim_inet4_dump("", ch->group_addr, grp_str, sizeof(grp_str)); - zlog_warn("%s: (S,G)=(%s,%s): null interface", + zlog_warn("%s: (S,G)=%s: null interface", __PRETTY_FUNCTION__, - src_str, grp_str); + pim_str_sg_dump (&ch->sg)); return 0; /* false */ } @@ -118,13 +114,9 @@ int pim_macro_ch_lost_assert(const struct pim_ifchannel *ch) pim_ifp = ifp->info; if (!pim_ifp) { - char src_str[100]; - char grp_str[100]; - pim_inet4_dump("", ch->source_addr, src_str, sizeof(src_str)); - pim_inet4_dump("", ch->group_addr, grp_str, sizeof(grp_str)); - zlog_warn("%s: (S,G)=(%s,%s): multicast not enabled on interface %s", + zlog_warn("%s: (S,G)=%s: multicast not enabled on interface %s", __PRETTY_FUNCTION__, - src_str, grp_str, ifp->name); + pim_str_sg_dump (&ch->sg), ifp->name); 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; if (!pim_ifp) { - char src_str[100]; - char grp_str[100]; - pim_inet4_dump("", ch->source_addr, src_str, sizeof(src_str)); - pim_inet4_dump("", ch->group_addr, grp_str, sizeof(grp_str)); - zlog_warn("%s: (S,G)=(%s,%s): multicast not enabled on interface %s", + zlog_warn("%s: (S,G)=%s: multicast not enabled on interface %s", __PRETTY_FUNCTION__, - src_str, grp_str, ch->interface->name); + pim_str_sg_dump (&ch->sg), ch->interface->name); return 0; /* false */ } @@ -227,13 +215,9 @@ int pim_macro_ch_could_assert_eval(const struct pim_ifchannel *ch) ifp = ch->interface; if (!ifp) { - char src_str[100]; - char grp_str[100]; - pim_inet4_dump("", ch->source_addr, src_str, sizeof(src_str)); - pim_inet4_dump("", ch->group_addr, grp_str, sizeof(grp_str)); - zlog_warn("%s: (S,G)=(%s,%s): null interface", + zlog_warn("%s: (S,G)=%s: null interface", __PRETTY_FUNCTION__, - src_str, grp_str); + pim_str_sg_dump (&ch->sg)); return 0; /* false */ } @@ -388,25 +372,17 @@ int pim_macro_assert_tracking_desired_eval(const struct pim_ifchannel *ch) ifp = ch->interface; if (!ifp) { - char src_str[100]; - char grp_str[100]; - pim_inet4_dump("", ch->source_addr, src_str, sizeof(src_str)); - pim_inet4_dump("", ch->group_addr, grp_str, sizeof(grp_str)); - zlog_warn("%s: (S,G)=(%s,%s): null interface", + zlog_warn("%s: (S,G)=%s: null interface", __PRETTY_FUNCTION__, - src_str, grp_str); + pim_str_sg_dump (&ch->sg)); return 0; /* false */ } pim_ifp = ifp->info; if (!pim_ifp) { - char src_str[100]; - char grp_str[100]; - pim_inet4_dump("", ch->source_addr, src_str, sizeof(src_str)); - pim_inet4_dump("", ch->group_addr, grp_str, sizeof(grp_str)); - zlog_warn("%s: (S,G)=(%s,%s): multicast not enabled on interface %s", + zlog_warn("%s: (S,G)=%s: multicast not enabled on interface %s", __PRETTY_FUNCTION__, - src_str, grp_str, ch->interface->name); + pim_str_sg_dump (&ch->sg), ch->interface->name); return 0; /* false */ } diff --git a/pimd/pim_str.c b/pimd/pim_str.c index ee9c74fa36..2d647876f6 100644 --- a/pimd/pim_str.c +++ b/pimd/pim_str.c @@ -43,3 +43,16 @@ void pim_inet4_dump(const char *onfail, struct in_addr addr, char *buf, int buf_ 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 ("", sg->u.sg.src, src_str, sizeof(src_str)); + pim_inet4_dump ("", sg->u.sg.grp, grp_str, sizeof(grp_str)); + snprintf (sg_str, 200, "(%s,%s)", src_str, grp_str); + return sg_str; +} diff --git a/pimd/pim_str.h b/pimd/pim_str.h index 925f17f732..ea84362699 100644 --- a/pimd/pim_str.h +++ b/pimd/pim_str.h @@ -27,6 +27,9 @@ #include #include +#include + 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 diff --git a/pimd/pim_zebra.c b/pimd/pim_zebra.c index 1822de2299..bda5dd6845 100644 --- a/pimd/pim_zebra.c +++ b/pimd/pim_zebra.c @@ -1130,8 +1130,8 @@ void pim_forward_start(struct pim_ifchannel *ch) char group_str[100]; char upstream_str[100]; - pim_inet4_dump("", ch->source_addr, source_str, sizeof(source_str)); - pim_inet4_dump("", ch->group_addr, group_str, sizeof(group_str)); + pim_inet4_dump("", ch->sg.u.sg.src, source_str, sizeof(source_str)); + pim_inet4_dump("", ch->sg.u.sg.grp, group_str, sizeof(group_str)); pim_inet4_dump("", up->upstream_addr, upstream_str, sizeof(upstream_str)); zlog_debug("%s: (S,G)=(%s,%s) oif=%s(%s)", __PRETTY_FUNCTION__, @@ -1175,8 +1175,8 @@ void pim_forward_stop(struct pim_ifchannel *ch) if (PIM_DEBUG_PIM_TRACE) { char source_str[100]; char group_str[100]; - pim_inet4_dump("", ch->source_addr, source_str, sizeof(source_str)); - pim_inet4_dump("", ch->group_addr, group_str, sizeof(group_str)); + pim_inet4_dump("", ch->sg.u.sg.src, source_str, sizeof(source_str)); + pim_inet4_dump("", ch->sg.u.sg.grp, group_str, sizeof(group_str)); zlog_debug("%s: (S,G)=(%s,%s) oif=%s", __PRETTY_FUNCTION__, source_str, group_str, ch->interface->name); @@ -1185,8 +1185,8 @@ void pim_forward_stop(struct pim_ifchannel *ch) if (!up->channel_oil) { char source_str[100]; char group_str[100]; - pim_inet4_dump("", ch->source_addr, source_str, sizeof(source_str)); - pim_inet4_dump("", ch->group_addr, group_str, sizeof(group_str)); + pim_inet4_dump("", ch->sg.u.sg.src, source_str, sizeof(source_str)); + pim_inet4_dump("", ch->sg.u.sg.grp, group_str, sizeof(group_str)); zlog_warn("%s: (S,G)=(%s,%s) oif=%s missing channel OIL", __PRETTY_FUNCTION__, source_str, group_str, ch->interface->name); -- 2.39.5