diff options
author | Donald Sharp <sharpd@cumulusnetworks.com> | 2016-11-17 14:17:25 +0100 |
---|---|---|
committer | Donald Sharp <sharpd@cumulusnetworks.com> | 2016-12-22 02:26:16 +0100 |
commit | 8bfb8b67ae63eb0ee81e9c928b11836dcd690d6c (patch) | |
tree | 49baa69966e7ef2aff40e05fcf8c2c2a3d3230d5 | |
parent | pimd: Cleanup handling of pim_sock_read (diff) | |
download | frr-8bfb8b67ae63eb0ee81e9c928b11836dcd690d6c.tar.xz frr-8bfb8b67ae63eb0ee81e9c928b11836dcd690d6c.zip |
pimd: Allow storing of sg in string format
Debugs are extremely expensive currently. Let's
store 'struct prefix_sg sg' string format in
the ifchannel, upstream and msdp_sa structures.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
-rw-r--r-- | pimd/pim_assert.c | 26 | ||||
-rw-r--r-- | pimd/pim_cmd.c | 2 | ||||
-rw-r--r-- | pimd/pim_ifchannel.c | 38 | ||||
-rw-r--r-- | pimd/pim_ifchannel.h | 1 | ||||
-rw-r--r-- | pimd/pim_join.c | 19 | ||||
-rw-r--r-- | pimd/pim_macro.c | 18 | ||||
-rw-r--r-- | pimd/pim_mroute.c | 23 | ||||
-rw-r--r-- | pimd/pim_msdp.c | 7 | ||||
-rw-r--r-- | pimd/pim_msdp.h | 1 | ||||
-rw-r--r-- | pimd/pim_msg.c | 16 | ||||
-rw-r--r-- | pimd/pim_register.c | 16 | ||||
-rw-r--r-- | pimd/pim_rpf.c | 8 | ||||
-rw-r--r-- | pimd/pim_ssmpingd.c | 3 | ||||
-rw-r--r-- | pimd/pim_str.c | 18 | ||||
-rw-r--r-- | pimd/pim_str.h | 10 | ||||
-rw-r--r-- | pimd/pim_upstream.c | 69 | ||||
-rw-r--r-- | pimd/pim_upstream.h | 1 | ||||
-rw-r--r-- | pimd/pim_zebra.c | 6 | ||||
-rw-r--r-- | pimd/pimd.h | 1 |
19 files changed, 146 insertions, 137 deletions
diff --git a/pimd/pim_assert.c b/pimd/pim_assert.c index 505d1f1ec..3e8f1b7d3 100644 --- a/pimd/pim_assert.c +++ b/pimd/pim_assert.c @@ -57,7 +57,7 @@ void pim_ifassert_winner_set(struct pim_ifchannel *ch, if (ch->ifassert_state != new_state) { zlog_debug("%s: (S,G)=%s assert state changed from %s to %s on interface %s", __PRETTY_FUNCTION__, - pim_str_sg_dump (&ch->sg), + ch->sg_str, pim_ifchannel_ifassert_name(ch->ifassert_state), pim_ifchannel_ifassert_name(new_state), ch->interface->name); @@ -70,7 +70,7 @@ void pim_ifassert_winner_set(struct pim_ifchannel *ch, pim_inet4_dump("<winner?>", winner, winner_str, sizeof(winner_str)); zlog_debug("%s: (S,G)=%s assert winner changed from %s to %s on interface %s", __PRETTY_FUNCTION__, - pim_str_sg_dump (&ch->sg), + ch->sg_str, was_str, winner_str, ch->interface->name); } } /* PIM_DEBUG_PIM_EVENTS */ @@ -133,7 +133,7 @@ static void if_could_assert_do_a1(const char *caller, if (assert_action_a1(ch)) { zlog_warn("%s: %s: (S,G)=%s assert_action_a1 failure on interface %s", __PRETTY_FUNCTION__, caller, - pim_str_sg_dump (&ch->sg), ch->interface->name); + ch->sg_str, ch->interface->name); /* log warning only */ } } @@ -213,7 +213,7 @@ static int dispatch_assert(struct interface *ifp, { zlog_warn("%s: (S,G)=%s invalid assert state %d on interface %s", __PRETTY_FUNCTION__, - pim_str_sg_dump (&sg), ch->ifassert_state, ifp->name); + ch->sg_str, ch->ifassert_state, ifp->name); } return -2; } @@ -468,7 +468,7 @@ static int pim_assert_do(struct pim_ifchannel *ch, if (PIM_DEBUG_PIM_TRACE) { zlog_debug("%s: to %s: (S,G)=%s pref=%u metric=%u rpt_bit=%u", __PRETTY_FUNCTION__, - ifp->name, pim_str_sg_dump (&ch->sg), + ifp->name, ch->sg_str, metric.metric_preference, metric.route_metric, PIM_FORCE_BOOLEAN(metric.rpt_bit_flag)); @@ -523,7 +523,7 @@ static int on_assert_timer(struct thread *t) if (PIM_DEBUG_PIM_TRACE) { zlog_debug("%s: (S,G)=%s timer expired on interface %s", __PRETTY_FUNCTION__, - pim_str_sg_dump (&ch->sg), ifp->name); + ch->sg_str, ifp->name); } ch->t_ifassert_timer = NULL; @@ -540,7 +540,7 @@ static int on_assert_timer(struct thread *t) { zlog_warn("%s: (S,G)=%s invalid assert state %d on interface %s", __PRETTY_FUNCTION__, - pim_str_sg_dump (&ch->sg), ch->ifassert_state, ifp->name); + ch->sg_str, ch->ifassert_state, ifp->name); } } @@ -559,7 +559,7 @@ static void assert_timer_off(struct pim_ifchannel *ch) if (ch->t_ifassert_timer) { zlog_debug("%s: (S,G)=%s cancelling timer on interface %s", __PRETTY_FUNCTION__, - pim_str_sg_dump (&ch->sg), ifp->name); + ch->sg_str, ifp->name); } } THREAD_OFF(ch->t_ifassert_timer); @@ -580,7 +580,7 @@ static void pim_assert_timer_set(struct pim_ifchannel *ch, if (PIM_DEBUG_PIM_TRACE) { zlog_debug("%s: (S,G)=%s starting %u sec timer on interface %s", __PRETTY_FUNCTION__, - pim_str_sg_dump(&ch->sg), interval, ifp->name); + ch->sg_str, interval, ifp->name); } THREAD_TIMER_ON(master, ch->t_ifassert_timer, @@ -614,7 +614,7 @@ int assert_action_a1(struct pim_ifchannel *ch) if (!pim_ifp) { zlog_warn("%s: (S,G)=%s multicast not enabled on interface %s", __PRETTY_FUNCTION__, - pim_str_sg_dump (&ch->sg), ifp->name); + ch->sg_str, ifp->name); return -1; /* must return since pim_ifp is used below */ } @@ -628,7 +628,7 @@ int assert_action_a1(struct pim_ifchannel *ch) if (assert_action_a3(ch)) { zlog_warn("%s: (S,G)=%s assert_action_a3 failure on interface %s", __PRETTY_FUNCTION__, - pim_str_sg_dump (&ch->sg), ifp->name); + ch->sg_str, ifp->name); /* warning only */ } @@ -675,7 +675,7 @@ static int assert_action_a3(struct pim_ifchannel *ch) if (pim_assert_send(ch)) { zlog_warn("%s: (S,G)=%s failure sending assert on interface %s", __PRETTY_FUNCTION__, - pim_str_sg_dump (&ch->sg), ch->interface->name); + ch->sg_str, ch->interface->name); return -1; } @@ -699,7 +699,7 @@ void assert_action_a4(struct pim_ifchannel *ch) if (pim_assert_cancel(ch)) { zlog_warn("%s: failure sending AssertCancel%s on interface %s", __PRETTY_FUNCTION__, - pim_str_sg_dump (&ch->sg), ch->interface->name); + ch->sg_str, ch->interface->name); /* log warning only */ } diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c index 0690130ed..ecfa94cba 100644 --- a/pimd/pim_cmd.c +++ b/pimd/pim_cmd.c @@ -5800,7 +5800,7 @@ ip_msdp_show_sa_entry_detail(struct pim_msdp_sa *sa, const char *src_str, json_object_string_add(json_row, "stateTime", statetimer); json_object_object_add(json_group, src_str, json_row); } else { - vty_out(vty, "SA : %s%s", pim_str_sg_dump(&sa->sg), VTY_NEWLINE); + vty_out(vty, "SA : %s%s", sa->sg_str, VTY_NEWLINE); vty_out(vty, " RP : %s%s", rp_str, VTY_NEWLINE); vty_out(vty, " Peer : %s%s", peer_str, VTY_NEWLINE); vty_out(vty, " Local : %s%s", local_str, VTY_NEWLINE); diff --git a/pimd/pim_ifchannel.c b/pimd/pim_ifchannel.c index 0da3abe99..ef4c23e95 100644 --- a/pimd/pim_ifchannel.c +++ b/pimd/pim_ifchannel.c @@ -213,7 +213,7 @@ void pim_ifchannel_ifjoin_switch(const char *caller, if (PIM_DEBUG_PIM_EVENTS) zlog_debug ("PIM_IFCHANNEL(%s): %s is switching from %s to %s", ch->interface->name, - pim_str_sg_dump (&ch->sg), + ch->sg_str, pim_ifchannel_ifjoin_name (ch->ifjoin_state), pim_ifchannel_ifjoin_name (new_state)); @@ -236,7 +236,7 @@ void pim_ifchannel_ifjoin_switch(const char *caller, if (PIM_DEBUG_PIM_EVENTS) { zlog_debug("PIM_IFCHANNEL_%s: (S,G)=%s on interface %s", ((new_state == PIM_IFJOIN_NOINFO) ? "DOWN" : "UP"), - pim_str_sg_dump (&ch->sg), ch->interface->name); + ch->sg_str, ch->interface->name); } /* @@ -331,7 +331,7 @@ static void ifmembership_set(struct pim_ifchannel *ch, if (PIM_DEBUG_PIM_EVENTS) { zlog_debug("%s: (S,G)=%s membership now is %s on interface %s", __PRETTY_FUNCTION__, - pim_str_sg_dump (&ch->sg), + ch->sg_str, membership == PIM_IFMEMBERSHIP_INCLUDE ? "INCLUDE" : "NOINFO", ch->interface->name); } @@ -426,7 +426,7 @@ pim_ifchannel_add(struct interface *ifp, if (!ch) { zlog_warn("%s: pim_ifchannel_new() failure for (S,G)=%s on interface %s", __PRETTY_FUNCTION__, - pim_str_sg_dump (sg), ifp->name); + up->sg_str, ifp->name); pim_upstream_del (up, __PRETTY_FUNCTION__); return NULL; @@ -436,6 +436,7 @@ pim_ifchannel_add(struct interface *ifp, ch->upstream = up; ch->interface = ifp; ch->sg = *sg; + pim_str_sg_set (sg, ch->sg_str); ch->parent = pim_ifchannel_find_parent (ch); if (ch->sg.src.s_addr == INADDR_ANY) { @@ -549,7 +550,7 @@ static void check_recv_upstream(int is_join, /* RPF'(S,G) not found */ zlog_warn("%s %s: RPF'%s not found", __FILE__, __PRETTY_FUNCTION__, - pim_str_sg_dump (sg)); + up->sg_str); return; } @@ -561,7 +562,7 @@ static void check_recv_upstream(int is_join, pim_addr_dump("<rpf?>", &up->rpf.rpf_addr, rpf_str, sizeof(rpf_str)); zlog_warn("%s %s: (S,G)=%s upstream=%s not directed to RPF'(S,G)=%s on interface %s", __FILE__, __PRETTY_FUNCTION__, - pim_str_sg_dump (sg), + up->sg_str, up_str, rpf_str, recv_ifp->name); return; } @@ -673,7 +674,7 @@ void pim_ifchannel_join_add(struct interface *ifp, pim_inet4_dump("<neigh?>", neigh_addr, neigh_str, sizeof(neigh_str)); zlog_warn("%s: Assert Loser recv Join%s from %s on %s", __PRETTY_FUNCTION__, - pim_str_sg_dump (sg), neigh_str, ifp->name); + ch->sg_str, neigh_str, ifp->name); assert_action_a5(ch); } @@ -879,14 +880,9 @@ void pim_ifchannel_local_membership_add(struct interface *ifp, for (ALL_LIST_ELEMENTS_RO (up->sources, up_node, child)) { if (PIM_DEBUG_EVENTS) - { - char buff[100]; - - strcpy (buff, pim_str_sg_dump (&child->sg)); - zlog_debug("%s %s: IGMP (S,G)=%s(%s) from %s", - __FILE__, __PRETTY_FUNCTION__, - buff, ifp->name, pim_str_sg_dump (sg)); - } + zlog_debug("%s %s: IGMP (S,G)=%s(%s) from %s", + __FILE__, __PRETTY_FUNCTION__, + child->sg_str, ifp->name, up->sg_str); if (pim_upstream_evaluate_join_desired (child)) { @@ -929,13 +925,9 @@ void pim_ifchannel_local_membership_del(struct interface *ifp, struct pim_interface *pim_ifp = ifp->info; if (PIM_DEBUG_EVENTS) - { - char buff[100]; - strcpy (buff, pim_str_sg_dump (&child->sg)); - zlog_debug("%s %s: Prune(S,G)=%s(%s) from %s", - __FILE__, __PRETTY_FUNCTION__, - buff, ifp->name, pim_str_sg_dump (&child->sg)); - } + zlog_debug("%s %s: Prune(S,G)=%s(%s) from %s", + __FILE__, __PRETTY_FUNCTION__, + up->sg_str, ifp->name, child->sg_str); if (c_oil && !pim_upstream_evaluate_join_desired (child)) pim_channel_del_oif (c_oil, ifp, PIM_OIF_FLAG_PROTO_PIM); @@ -1119,7 +1111,7 @@ pim_ifchannel_set_star_g_join_state (struct pim_ifchannel *ch, int eom) if (PIM_DEBUG_PIM_TRACE) zlog_debug ("%s: %s %s eom: %d", __PRETTY_FUNCTION__, pim_ifchannel_ifjoin_name(ch->ifjoin_state), - pim_str_sg_dump(&ch->sg), eom); + ch->sg_str, eom); if (!ch->sources) return; diff --git a/pimd/pim_ifchannel.h b/pimd/pim_ifchannel.h index b640cfd4d..a95f66551 100644 --- a/pimd/pim_ifchannel.h +++ b/pimd/pim_ifchannel.h @@ -86,6 +86,7 @@ struct pim_ifchannel { struct pim_ifchannel *parent; struct list *sources; struct prefix_sg sg; + char sg_str[PIM_SG_LEN]; struct interface *interface; /* backpointer to interface */ uint32_t flags; diff --git a/pimd/pim_join.c b/pimd/pim_join.c index 42d4a5187..ff41b28ba 100644 --- a/pimd/pim_join.c +++ b/pimd/pim_join.c @@ -112,13 +112,10 @@ static void recv_join(struct interface *ifp, for (ALL_LIST_ELEMENTS_RO (up->sources, up_node, child)) { - char buff[100]; - - strcpy (buff, pim_str_sg_dump (&child->sg)); if (PIM_DEBUG_PIM_TRACE) zlog_debug("%s %s: Join(S,G)=%s from %s", __FILE__, __PRETTY_FUNCTION__, - buff, pim_str_sg_dump (sg)); + child->sg_str, up->sg_str); if (pim_upstream_evaluate_join_desired (child)) { @@ -183,13 +180,9 @@ static void recv_prune(struct interface *ifp, struct pim_interface *pim_ifp = ifp->info; if (PIM_DEBUG_PIM_TRACE) - { - char buff[100]; - strcpy (buff, pim_str_sg_dump (&child->sg)); - zlog_debug("%s %s: Prune(S,G)=%s from %s", - __FILE__, __PRETTY_FUNCTION__, - buff, pim_str_sg_dump (sg)); - } + zlog_debug("%s %s: Prune(S,G)=%s from %s", + __FILE__, __PRETTY_FUNCTION__, + child->sg_str, up->sg_str); if (!c_oil) continue; @@ -408,7 +401,7 @@ int pim_joinprune_send(struct interface *ifp, zlog_debug("%s: sending %s(S,G)=%s to upstream=%s on interface %s", __PRETTY_FUNCTION__, send_join ? "Join" : "Prune", - pim_str_sg_dump (&up->sg), dst_str, ifp->name); + up->sg_str, dst_str, ifp->name); } if (PIM_INADDR_IS_ANY(upstream_addr)) { @@ -418,7 +411,7 @@ int pim_joinprune_send(struct interface *ifp, zlog_debug("%s: %s(S,G)=%s: upstream=%s is myself on interface %s", __PRETTY_FUNCTION__, send_join ? "Join" : "Prune", - pim_str_sg_dump (&up->sg), dst_str, ifp->name); + up->sg_str, dst_str, ifp->name); } return 0; } diff --git a/pimd/pim_macro.c b/pimd/pim_macro.c index da12146be..c339fce49 100644 --- a/pimd/pim_macro.c +++ b/pimd/pim_macro.c @@ -26,9 +26,8 @@ #include "vty.h" #include "plist.h" -#include "pim_macro.h" #include "pimd.h" -#include "pim_str.h" +#include "pim_macro.h" #include "pim_iface.h" #include "pim_ifchannel.h" #include "pim_rp.h" @@ -121,7 +120,7 @@ int pim_macro_ch_lost_assert(const struct pim_ifchannel *ch) if (!ifp) { zlog_warn("%s: (S,G)=%s: null interface", __PRETTY_FUNCTION__, - pim_str_sg_dump (&ch->sg)); + ch->sg_str); return 0; /* false */ } @@ -133,7 +132,7 @@ int pim_macro_ch_lost_assert(const struct pim_ifchannel *ch) if (!pim_ifp) { zlog_warn("%s: (S,G)=%s: multicast not enabled on interface %s", __PRETTY_FUNCTION__, - pim_str_sg_dump (&ch->sg), ifp->name); + ch->sg_str, ifp->name); return 0; /* false */ } @@ -170,7 +169,7 @@ int pim_macro_chisin_pim_include(const struct pim_ifchannel *ch) if (!pim_ifp) { zlog_warn("%s: (S,G)=%s: multicast not enabled on interface %s", __PRETTY_FUNCTION__, - pim_str_sg_dump (&ch->sg), ch->interface->name); + ch->sg_str, ch->interface->name); return 0; /* false */ } @@ -233,8 +232,7 @@ int pim_macro_ch_could_assert_eval(const struct pim_ifchannel *ch) ifp = ch->interface; if (!ifp) { zlog_warn("%s: (S,G)=%s: null interface", - __PRETTY_FUNCTION__, - pim_str_sg_dump (&ch->sg)); + __PRETTY_FUNCTION__, ch->sg_str); return 0; /* false */ } @@ -390,16 +388,14 @@ int pim_macro_assert_tracking_desired_eval(const struct pim_ifchannel *ch) ifp = ch->interface; if (!ifp) { zlog_warn("%s: (S,G)=%s: null interface", - __PRETTY_FUNCTION__, - pim_str_sg_dump (&ch->sg)); + __PRETTY_FUNCTION__, ch->sg_str); return 0; /* false */ } pim_ifp = ifp->info; if (!pim_ifp) { zlog_warn("%s: (S,G)=%s: multicast not enabled on interface %s", - __PRETTY_FUNCTION__, - pim_str_sg_dump (&ch->sg), ch->interface->name); + __PRETTY_FUNCTION__, ch->sg_str, ch->interface->name); return 0; /* false */ } diff --git a/pimd/pim_mroute.c b/pimd/pim_mroute.c index 3f8ec3558..c7730acc0 100644 --- a/pimd/pim_mroute.c +++ b/pimd/pim_mroute.c @@ -135,11 +135,6 @@ pim_mroute_msg_nocache (int fd, struct interface *ifp, const struct igmpmsg *msg sg.src = msg->im_src; sg.grp = msg->im_dst; - if (PIM_DEBUG_MROUTE) { - zlog_debug("%s: Adding a Route %s for WHOLEPKT consumption", - __PRETTY_FUNCTION__, pim_str_sg_dump (&sg)); - } - oil = pim_channel_oil_add (&sg, pim_ifp->mroute_vif_index); if (!oil) { if (PIM_DEBUG_MROUTE) { @@ -159,6 +154,16 @@ pim_mroute_msg_nocache (int fd, struct interface *ifp, const struct igmpmsg *msg } return 0; } + + /* + * I moved this debug till after the actual add because + * I want to take advantage of the up->sg_str being filled in. + */ + if (PIM_DEBUG_MROUTE) { + zlog_debug("%s: Adding a Route %s for WHOLEPKT consumption", + __PRETTY_FUNCTION__, up->sg_str); + } + PIM_UPSTREAM_FLAG_SET_SRC_STREAM(up->flags); pim_upstream_keep_alive_timer_start (up, qpim_keep_alive_time); @@ -294,7 +299,7 @@ pim_mroute_msg_wrongvif (int fd, struct interface *ifp, const struct igmpmsg *ms if (PIM_DEBUG_MROUTE) { zlog_debug("%s: WRONGVIF (S,G)=%s channel is not on Assert NoInfo state for interface %s", __PRETTY_FUNCTION__, - pim_str_sg_dump (&ch->sg), ifp->name); + ch->sg_str, ifp->name); } return -4; } @@ -303,7 +308,7 @@ pim_mroute_msg_wrongvif (int fd, struct interface *ifp, const struct igmpmsg *ms if (PIM_DEBUG_MROUTE) { zlog_debug("%s: WRONGVIF (S,G)=%s interface %s is not downstream for channel", __PRETTY_FUNCTION__, - pim_str_sg_dump (&ch->sg), ifp->name); + ch->sg_str, ifp->name); } return -5; } @@ -312,7 +317,7 @@ pim_mroute_msg_wrongvif (int fd, struct interface *ifp, const struct igmpmsg *ms if (PIM_DEBUG_MROUTE) { zlog_debug("%s: WRONGVIF (S,G)=%s assert_action_a1 failure on interface %s", __PRETTY_FUNCTION__, - pim_str_sg_dump (&ch->sg), ifp->name); + ch->sg_str, ifp->name); } return -6; } @@ -344,7 +349,7 @@ pim_mroute_msg_wrvifwhole (int fd, struct interface *ifp, const char *buf) { if (PIM_DEBUG_MROUTE) zlog_debug ("WRVIFWHOLE (S,G)=%s found ifchannel on interface %s", - pim_str_sg_dump (&sg), ifp->name); + ch->sg_str, ifp->name); return -1; } #if 0 diff --git a/pimd/pim_msdp.c b/pimd/pim_msdp.c index 12f363e6f..bee5e734d 100644 --- a/pimd/pim_msdp.c +++ b/pimd/pim_msdp.c @@ -65,9 +65,9 @@ pim_msdp_sa_key_dump(struct pim_msdp_sa *sa, char *buf, int buf_size, bool long_ if (long_format && (sa->flags & PIM_MSDP_SAF_PEER)) { pim_inet4_dump("<rp?>", sa->rp, rp_str, sizeof(rp_str)); snprintf(buf, buf_size, "MSDP SA %s rp %s", - pim_str_sg_dump(&sa->sg), rp_str); + sa->sg_str, rp_str); } else { - snprintf(buf, buf_size, "MSDP SA %s", pim_str_sg_dump(&sa->sg)); + snprintf(buf, buf_size, "MSDP SA %s", sa->sg_str); } return buf; @@ -268,6 +268,7 @@ pim_msdp_sa_new(struct prefix_sg *sg, struct in_addr rp) } sa->sg = *sg; + pim_str_sg_set (sg, sa->sg_str); sa->rp = rp; sa->uptime = pim_time_monotonic_sec(); @@ -569,7 +570,7 @@ pim_msdp_up_join_state_changed(struct pim_upstream *xg_up) struct pim_msdp_sa *sa; if (PIM_DEBUG_MSDP_INTERNAL) { - zlog_debug("MSDP join state changed for %s", pim_str_sg_dump(&xg_up->sg)); + zlog_debug("MSDP join state changed for %s", xg_up->sg_str); } /* If this is not really an XG entry just move on */ diff --git a/pimd/pim_msdp.h b/pimd/pim_msdp.h index 38ac4aa33..0f6402180 100644 --- a/pimd/pim_msdp.h +++ b/pimd/pim_msdp.h @@ -77,6 +77,7 @@ enum pim_msdp_sa_flags { struct pim_msdp_sa { struct prefix_sg sg; + char sg_str[PIM_SG_LEN]; struct in_addr rp; /* Last RP address associated with this SA */ struct in_addr peer; /* last peer from who we heard this SA */ enum pim_msdp_sa_flags flags; diff --git a/pimd/pim_msg.c b/pimd/pim_msg.c index c22011b57..bb73e3406 100644 --- a/pimd/pim_msg.c +++ b/pimd/pim_msg.c @@ -211,11 +211,9 @@ pim_msg_join_prune_encode (uint8_t *buf, int buf_size, int is_join, struct pim_upstream *child; struct listnode *up_node; int send_prune = 0; - char star_g[100]; - strcpy (star_g, pim_str_sg_dump (&up->sg)); zlog_debug ("%s: Considering (%s) children for (S,G,rpt) prune", - __PRETTY_FUNCTION__, star_g); + __PRETTY_FUNCTION__, up->sg_str); for (ALL_LIST_ELEMENTS_RO (up->sources, up_node, child)) { if (child->sptbit == PIM_UPSTREAM_SPTBIT_TRUE) @@ -225,12 +223,12 @@ pim_msg_join_prune_encode (uint8_t *buf, int buf_size, int is_join, send_prune = 1; if (PIM_DEBUG_PIM_PACKETS) zlog_debug ("%s: SPT Bit and RPF'(%s) != RPF'(S,G): Add Prune (%s,rpt) to compound message", - __PRETTY_FUNCTION__, star_g, pim_str_sg_dump (&child->sg)); + __PRETTY_FUNCTION__, up->sg_str, child->sg_str); } else if (PIM_DEBUG_PIM_PACKETS) zlog_debug ("%s: SPT Bit and RPF'(%s) == RPF'(S,G): Not adding Prune for (%s,rpt)", - __PRETTY_FUNCTION__, star_g, pim_str_sg_dump (&child->sg)); + __PRETTY_FUNCTION__, up->sg_str, child->sg_str); } else if (pim_upstream_is_sg_rpt (child)) { @@ -239,24 +237,24 @@ pim_msg_join_prune_encode (uint8_t *buf, int buf_size, int is_join, send_prune = 1; if (PIM_DEBUG_PIM_PACKETS) zlog_debug ("%s: inherited_olist(%s,rpt) is NULL, Add Prune to compound message", - __PRETTY_FUNCTION__, pim_str_sg_dump (&child->sg)); + __PRETTY_FUNCTION__, child->sg_str); } else if (!pim_rpf_is_same (&up->rpf, &child->rpf)) { send_prune = 1; if (PIM_DEBUG_PIM_PACKETS) zlog_debug ("%s: RPF'(%s) != RPF'(%s,rpt), Add Prune to compound message", - __PRETTY_FUNCTION__, star_g, pim_str_sg_dump (&child->sg)); + __PRETTY_FUNCTION__, up->sg_str, child->sg_str); } else if (PIM_DEBUG_PIM_PACKETS) zlog_debug ("%s: RPF'(%s) == RPF'(%s,rpt), Do not add Prune to compound message", - __PRETTY_FUNCTION__, star_g, pim_str_sg_dump (&child->sg)); + __PRETTY_FUNCTION__, up->sg_str, child->sg_str); } else if (PIM_DEBUG_PIM_PACKETS) zlog_debug ("%s: SPT bit is not set for (%s)", - __PRETTY_FUNCTION__, pim_str_sg_dump (&child->sg)); + __PRETTY_FUNCTION__, child->sg_str); if (send_prune) { pim_msg_curr = pim_msg_addr_encode_ipv4_source (pim_msg_curr, remain, diff --git a/pimd/pim_register.c b/pimd/pim_register.c index 8f3edc758..490a05be3 100644 --- a/pimd/pim_register.c +++ b/pimd/pim_register.c @@ -112,18 +112,16 @@ pim_register_stop_recv (uint8_t *buf, int buf_size) pim_parse_addr_ucast (&source, buf, buf_size); sg.src = source.u.prefix4; - if (PIM_DEBUG_PIM_REG) - { - zlog_debug ("Received Register stop for %s", - pim_str_sg_dump (&sg)); - } - upstream = pim_upstream_find (&sg); if (!upstream) { return 0; } + if (PIM_DEBUG_PIM_REG) + zlog_debug ("Received Register stop for %s", + upstream->sg_str); + switch (upstream->join_state) { case PIM_UPSTREAM_NOTJOINED: @@ -157,7 +155,7 @@ pim_register_send (const uint8_t *buf, int buf_size, struct in_addr src, struct char rp_str[INET_ADDRSTRLEN]; strcpy (rp_str, inet_ntoa (rpg->rpf_addr.u.prefix4)); zlog_debug ("Sending %s %sRegister Packet to %s", - pim_str_sg_dump (&up->sg), null_register ? "NULL " : "", rp_str); + up->sg_str, null_register ? "NULL " : "", rp_str); } ifp = rpg->source_nexthop.interface; @@ -351,7 +349,7 @@ pim_register_recv (struct interface *ifp, { if (PIM_DEBUG_PIM_REG) { - zlog_debug ("Received Register(%s), for which I have no path back", pim_str_sg_dump (&upstream->sg)); + zlog_debug ("Received Register(%s), for which I have no path back", upstream->sg_str); } PIM_UPSTREAM_FLAG_UNSET_SRC_STREAM(upstream->flags); pim_upstream_del (upstream, __PRETTY_FUNCTION__); @@ -372,7 +370,7 @@ pim_register_recv (struct interface *ifp, sentRegisterStop = 1; } else { if (PIM_DEBUG_PIM_REG) - zlog_debug ("(%s) sptbit: %d", pim_str_sg_dump (&upstream->sg), upstream->sptbit); + zlog_debug ("(%s) sptbit: %d", upstream->sg_str, upstream->sptbit); } if ((upstream->sptbit == PIM_UPSTREAM_SPTBIT_TRUE) || (SwitchToSptDesired(&sg))) { diff --git a/pimd/pim_rpf.c b/pimd/pim_rpf.c index b71024711..48cb2e401 100644 --- a/pimd/pim_rpf.c +++ b/pimd/pim_rpf.c @@ -206,7 +206,7 @@ enum pim_rpf_result pim_rpf_update(struct pim_upstream *up, struct in_addr *old_ /* RPF'(S,G) not found */ zlog_debug("%s %s: RPF'%s not found: won't send join upstream", __FILE__, __PRETTY_FUNCTION__, - pim_str_sg_dump (&up->sg)); + up->sg_str); /* warning only */ } @@ -218,7 +218,7 @@ enum pim_rpf_result pim_rpf_update(struct pim_upstream *up, struct in_addr *old_ pim_addr_dump("<addr?>", &rpf->source_nexthop.mrib_nexthop_addr, nhaddr_str, sizeof(nhaddr_str)); zlog_debug("%s %s: (S,G)=%s source nexthop now is: interface=%s address=%s pref=%d metric=%d", __FILE__, __PRETTY_FUNCTION__, - pim_str_sg_dump (&up->sg), + up->sg_str, rpf->source_nexthop.interface ? rpf->source_nexthop.interface->name : "<ifname?>", nhaddr_str, rpf->source_nexthop.mrib_metric_preference, @@ -236,7 +236,7 @@ enum pim_rpf_result pim_rpf_update(struct pim_upstream *up, struct in_addr *old_ if (PIM_DEBUG_ZEBRA) { zlog_debug("%s %s: (S,G)=%s RPF_interface(S) changed from %s to %s", __FILE__, __PRETTY_FUNCTION__, - pim_str_sg_dump (&up->sg), + up->sg_str, save_nexthop.interface ? save_nexthop.interface->name : "<oldif?>", rpf->source_nexthop.interface ? rpf->source_nexthop.interface->name : "<newif?>"); /* warning only */ @@ -282,7 +282,7 @@ static struct in_addr pim_rpf_find_rpf_addr(struct pim_upstream *up) if (!up->rpf.source_nexthop.interface) { zlog_warn("%s: missing RPF interface for upstream (S,G)=%s", __PRETTY_FUNCTION__, - pim_str_sg_dump (&up->sg)); + up->sg_str); rpf_addr.s_addr = PIM_NET_INADDR_ANY; return rpf_addr; diff --git a/pimd/pim_ssmpingd.c b/pimd/pim_ssmpingd.c index d308d80e3..00abc5f60 100644 --- a/pimd/pim_ssmpingd.c +++ b/pimd/pim_ssmpingd.c @@ -26,11 +26,10 @@ #include "memory.h" #include "sockopt.h" +#include "pimd.h" #include "pim_ssmpingd.h" #include "pim_time.h" #include "pim_sock.h" -#include "pim_str.h" -#include "pimd.h" static const char * const PIM_SSMPINGD_REPLY_GROUP = "232.43.211.234"; diff --git a/pimd/pim_str.c b/pimd/pim_str.c index 4c25c0029..514403179 100644 --- a/pimd/pim_str.c +++ b/pimd/pim_str.c @@ -67,10 +67,24 @@ pim_str_sg_dump (const struct prefix_sg *sg) { char src_str[INET_ADDRSTRLEN]; char grp_str[INET_ADDRSTRLEN]; - static char sg_str[200]; + static char sg_str[PIM_SG_LEN]; pim_inet4_dump ("<src?>", sg->src, src_str, sizeof(src_str)); pim_inet4_dump ("<grp?>", sg->grp, grp_str, sizeof(grp_str)); - snprintf (sg_str, 200, "(%s,%s)", src_str, grp_str); + snprintf (sg_str, PIM_SG_LEN, "(%s,%s)", src_str, grp_str); + + return sg_str; +} + +char * +pim_str_sg_set (const struct prefix_sg *sg, char *sg_str) +{ + char src_str[INET_ADDRSTRLEN]; + char grp_str[INET_ADDRSTRLEN]; + + pim_inet4_dump ("<src?>", sg->src, src_str, sizeof(src_str)); + pim_inet4_dump ("<grp?>", sg->grp, grp_str, sizeof(grp_str)); + snprintf (sg_str, PIM_SG_LEN, "(%s,%s)", src_str, grp_str); + return sg_str; } diff --git a/pimd/pim_str.h b/pimd/pim_str.h index 15f5227de..da7257357 100644 --- a/pimd/pim_str.h +++ b/pimd/pim_str.h @@ -28,8 +28,18 @@ #include <prefix.h> +/* + * Longest possible length of a (S,G) string is 36 bytes + * 123.123.123.123 = 16 * 2 + * (,) = 3 + * NULL Character at end = 1 + * (123.123.123.123,123,123,123,123) + */ +#define PIM_SG_LEN 36 + void pim_addr_dump (const char *onfail, struct prefix *p, 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 *sg); +char *pim_str_sg_set (const struct prefix_sg *sg, char *sg_str); #endif diff --git a/pimd/pim_upstream.c b/pimd/pim_upstream.c index 01b0b3ac6..ec985076d 100644 --- a/pimd/pim_upstream.c +++ b/pimd/pim_upstream.c @@ -160,7 +160,7 @@ pim_upstream_del(struct pim_upstream *up, const char *name) if (PIM_DEBUG_PIM_TRACE) { zlog_debug ("%s: Delete (%s) ref count: %d", - name, pim_str_sg_dump (&up->sg), up->ref_count); + name, up->sg_str, up->ref_count); } --up->ref_count; @@ -169,8 +169,8 @@ pim_upstream_del(struct pim_upstream *up, const char *name) if (PIM_DEBUG_PIM_TRACE) zlog_debug ("%s: %s is being deleted", - __PRETTY_FUNCTION__, - pim_str_sg_dump (&up->sg)); + __PRETTY_FUNCTION__, up->sg_str); + THREAD_OFF(up->t_join_timer); THREAD_OFF(up->t_ka_timer); THREAD_OFF(up->t_rs_timer); @@ -224,12 +224,12 @@ pim_upstream_send_join (struct pim_upstream *up) char rpf_str[PREFIX_STRLEN]; pim_addr_dump("<rpf?>", &up->rpf.rpf_addr, rpf_str, sizeof(rpf_str)); zlog_debug ("%s: RPF'%s=%s(%s) for Interface %s", __PRETTY_FUNCTION__, - pim_str_sg_dump (&up->sg), rpf_str, pim_upstream_state2str (up->join_state), + up->sg_str, rpf_str, pim_upstream_state2str (up->join_state), up->rpf.source_nexthop.interface->name); if (pim_rpf_addr_is_inaddr_any(&up->rpf)) { zlog_debug("%s: can't send join upstream: RPF'%s=%s", __PRETTY_FUNCTION__, - pim_str_sg_dump (&up->sg), rpf_str); + up->sg_str, rpf_str); /* warning only */ } } @@ -273,7 +273,7 @@ static void join_timer_start(struct pim_upstream *up) zlog_debug("%s: starting %d sec timer for upstream (S,G)=%s", __PRETTY_FUNCTION__, qpim_t_periodic, - pim_str_sg_dump (&up->sg)); + up->sg_str); } THREAD_OFF (up->t_join_timer); @@ -295,7 +295,7 @@ static void pim_upstream_join_timer_restart_msec(struct pim_upstream *up, zlog_debug("%s: restarting %d msec timer for upstream (S,G)=%s", __PRETTY_FUNCTION__, interval_msec, - pim_str_sg_dump (&up->sg)); + up->sg_str); } THREAD_OFF(up->t_join_timer); @@ -321,7 +321,7 @@ void pim_upstream_join_suppress(struct pim_upstream *up, pim_inet4_dump("<rpf?>", rpf_addr, rpf_str, sizeof(rpf_str)); zlog_debug("%s %s: detected Join%s to RPF'(S,G)=%s: join_timer=%ld msec t_joinsuppress=%ld msec", __FILE__, __PRETTY_FUNCTION__, - pim_str_sg_dump (&up->sg), + up->sg_str, rpf_str, join_timer_remain_msec, t_joinsuppress_msec); } @@ -330,7 +330,7 @@ void pim_upstream_join_suppress(struct pim_upstream *up, if (PIM_DEBUG_PIM_TRACE) { zlog_debug("%s %s: suppressing Join(S,G)=%s for %ld msec", __FILE__, __PRETTY_FUNCTION__, - pim_str_sg_dump (&up->sg), t_joinsuppress_msec); + up->sg_str, t_joinsuppress_msec); } pim_upstream_join_timer_restart_msec(up, t_joinsuppress_msec); @@ -352,7 +352,7 @@ void pim_upstream_join_timer_decrease_to_t_override(const char *debug_label, pim_inet4_dump("<rpf?>", rpf_addr, rpf_str, sizeof(rpf_str)); zlog_debug("%s: to RPF'%s=%s: join_timer=%ld msec t_override=%d msec", debug_label, - pim_str_sg_dump (&up->sg), rpf_str, + up->sg_str, rpf_str, join_timer_remain_msec, t_override_msec); } @@ -360,7 +360,7 @@ void pim_upstream_join_timer_decrease_to_t_override(const char *debug_label, if (PIM_DEBUG_PIM_TRACE) { zlog_debug("%s: decreasing (S,G)=%s join timer to t_override=%d msec", debug_label, - pim_str_sg_dump (&up->sg), + up->sg_str, t_override_msec); } @@ -432,7 +432,7 @@ pim_upstream_switch(struct pim_upstream *up, if (PIM_DEBUG_PIM_EVENTS) { zlog_debug("%s: PIM_UPSTREAM_%s: (S,G) old: %s new: %s", __PRETTY_FUNCTION__, - pim_str_sg_dump (&up->sg), + up->sg_str, pim_upstream_state2str (up->join_state), pim_upstream_state2str (new_state)); } @@ -537,6 +537,7 @@ static struct pim_upstream *pim_upstream_new(struct prefix_sg *sg, } up->sg = *sg; + pim_str_sg_set (sg, up->sg_str); up = hash_get (pim_upstream_hash, up, hash_alloc_intern); if (!pim_rp_set_upstream_addr (&up->upstream_addr, sg->src, sg->grp)) { @@ -584,7 +585,7 @@ static struct pim_upstream *pim_upstream_new(struct prefix_sg *sg, if (rpf_result == PIM_RPF_FAILURE) { if (PIM_DEBUG_PIM_TRACE) zlog_debug ("%s: Attempting to create upstream(%s), Unable to RPF for source", __PRETTY_FUNCTION__, - pim_str_sg_dump (&up->sg)); + up->sg_str); if (up->parent) { @@ -607,7 +608,7 @@ static struct pim_upstream *pim_upstream_new(struct prefix_sg *sg, listnode_add_sort(pim_upstream_list, up); if (PIM_DEBUG_PIM_TRACE) - zlog_debug ("%s: Created Upstream %s", __PRETTY_FUNCTION__, pim_str_sg_dump (&up->sg)); + zlog_debug ("%s: Created Upstream %s", __PRETTY_FUNCTION__, up->sg_str); return up; } @@ -648,7 +649,7 @@ struct pim_upstream *pim_upstream_add(struct prefix_sg *sg, if (up) zlog_debug("%s(%s): (%s), found: %d: ref_count: %d", __PRETTY_FUNCTION__, name, - pim_str_sg_dump (&up->sg), found, + up->sg_str, found, up->ref_count); else zlog_debug("%s(%s): (%s) failure to create", @@ -786,7 +787,7 @@ void pim_upstream_rpf_genid_changed(struct in_addr neigh_addr) pim_addr_dump("<rpf?>", &up->rpf.rpf_addr, rpf_addr_str, sizeof(rpf_addr_str)); zlog_debug("%s: matching neigh=%s against upstream (S,G)=%s joined=%d rpf_addr=%s", __PRETTY_FUNCTION__, - neigh_str, pim_str_sg_dump (&up->sg), + neigh_str, up->sg_str, up->join_state == PIM_UPSTREAM_JOINED, rpf_addr_str); } @@ -910,8 +911,8 @@ static void pim_upstream_fhr_kat_expiry(struct pim_upstream *up) return; if (PIM_DEBUG_TRACE) - zlog_debug ("kat expired on %s; clear fhr reg state", - pim_str_sg_dump (&up->sg)); + zlog_debug ("kat expired on %s; clear fhr reg state", up->sg_str); + /* stop reg-stop timer */ THREAD_OFF(up->t_rs_timer); /* remove regiface from the OIL if it is there*/ @@ -928,8 +929,8 @@ static void pim_upstream_fhr_kat_start(struct pim_upstream *up) { if (pim_upstream_could_register(up)) { if (PIM_DEBUG_TRACE) - zlog_debug ("kat started on %s; set fhr reg state to joined", - pim_str_sg_dump (&up->sg)); + zlog_debug ("kat started on %s; set fhr reg state to joined", up->sg_str); + PIM_UPSTREAM_FLAG_SET_FHR(up->flags); if (up->join_state == PIM_UPSTREAM_NOTJOINED) { pim_channel_add_oif (up->channel_oil, pim_regiface, PIM_OIF_FLAG_PROTO_PIM); @@ -969,8 +970,7 @@ pim_upstream_keep_alive_timer (struct thread *t) { pim_upstream_fhr_kat_expiry(up); if (PIM_DEBUG_TRACE) - zlog_debug ("kat expired on %s; remove stream reference", - pim_str_sg_dump (&up->sg)); + zlog_debug ("kat expired on %s; remove stream reference", up->sg_str); PIM_UPSTREAM_FLAG_UNSET_SRC_STREAM(up->flags); pim_upstream_del(up, __PRETTY_FUNCTION__); } @@ -984,8 +984,7 @@ pim_upstream_keep_alive_timer_start (struct pim_upstream *up, { if (!PIM_UPSTREAM_FLAG_TEST_SRC_STREAM(up->flags)) { if (PIM_DEBUG_TRACE) - zlog_debug ("kat start on %s with no stream reference", - pim_str_sg_dump (&up->sg)); + zlog_debug ("kat start on %s with no stream reference", up->sg_str); } THREAD_OFF (up->t_ka_timer); THREAD_TIMER_ON (master, @@ -1111,7 +1110,7 @@ pim_upstream_set_sptbit (struct pim_upstream *up, struct interface *incoming) { if (PIM_DEBUG_TRACE) zlog_debug ("%s: %s is directly connected to the source", __PRETTY_FUNCTION__, - pim_str_sg_dump (&up->sg)); + up->sg_str); up->sptbit = PIM_UPSTREAM_SPTBIT_TRUE; return; } @@ -1122,7 +1121,7 @@ pim_upstream_set_sptbit (struct pim_upstream *up, struct interface *incoming) { if (PIM_DEBUG_TRACE) zlog_debug ("%s: %s RPF_interface(S) != RPF_interface(RP(G))", - __PRETTY_FUNCTION__, pim_str_sg_dump(&up->sg)); + __PRETTY_FUNCTION__, up->sg_str); up->sptbit = PIM_UPSTREAM_SPTBIT_TRUE; return; } @@ -1132,7 +1131,7 @@ pim_upstream_set_sptbit (struct pim_upstream *up, struct interface *incoming) { if (PIM_DEBUG_TRACE) zlog_debug ("%s: %s OR inherited_olist(S,G,rpt) == NULL", __PRETTY_FUNCTION__, - pim_str_sg_dump (&up->sg)); + up->sg_str); up->sptbit = PIM_UPSTREAM_SPTBIT_TRUE; return; } @@ -1143,7 +1142,7 @@ pim_upstream_set_sptbit (struct pim_upstream *up, struct interface *incoming) { if (PIM_DEBUG_TRACE) zlog_debug ("%s: %s RPF'(S,G) is the same as RPF'(*,G)", __PRETTY_FUNCTION__, - pim_str_sg_dump (&up->sg)); + up->sg_str); up->sptbit = PIM_UPSTREAM_SPTBIT_TRUE; return; } @@ -1186,7 +1185,7 @@ pim_upstream_register_stop_timer (struct thread *t) if (PIM_DEBUG_TRACE) { zlog_debug ("%s: (S,G)=%s upstream register stop timer %s", - __PRETTY_FUNCTION__, pim_str_sg_dump (&up->sg), + __PRETTY_FUNCTION__, up->sg_str, pim_upstream_state2str(up->join_state)); } @@ -1252,7 +1251,7 @@ pim_upstream_start_register_stop_timer (struct pim_upstream *up, int null_regist if (PIM_DEBUG_TRACE) { zlog_debug ("%s: (S,G)=%s Starting upstream register stop timer %d", - __PRETTY_FUNCTION__, pim_str_sg_dump (&up->sg), time); + __PRETTY_FUNCTION__, up->sg_str, time); } THREAD_TIMER_ON (master, up->t_rs_timer, pim_upstream_register_stop_timer, @@ -1343,7 +1342,7 @@ pim_upstream_find_new_rpf (void) { if (PIM_DEBUG_PIM_TRACE) zlog_debug ("Upstream %s without a path to send join, checking", - pim_str_sg_dump (&up->sg)); + up->sg_str); pim_rpf_update (up, NULL); } } @@ -1431,7 +1430,7 @@ pim_upstream_sg_running (void *arg) { if (PIM_DEBUG_TRACE) zlog_debug ("%s: %s is not installed in mroute", - __PRETTY_FUNCTION__, pim_str_sg_dump (&up->sg)); + __PRETTY_FUNCTION__, up->sg_str); return; } @@ -1445,7 +1444,7 @@ pim_upstream_sg_running (void *arg) if (PIM_DEBUG_TRACE) { zlog_debug ("%s: %s old packet count is equal or lastused is greater than 30", - __PRETTY_FUNCTION__, pim_str_sg_dump (&up->sg)); + __PRETTY_FUNCTION__, up->sg_str); zlog_debug ("%s: %ld %ld %lld", __PRETTY_FUNCTION__, up->channel_oil->cc.oldpktcnt, up->channel_oil->cc.pktcnt, up->channel_oil->cc.lastused/100); } return; @@ -1457,8 +1456,8 @@ pim_upstream_sg_running (void *arg) if (!PIM_UPSTREAM_FLAG_TEST_SRC_STREAM(up->flags)) { if (PIM_DEBUG_TRACE) - zlog_debug ("source reference created on kat restart %s", - pim_str_sg_dump (&up->sg)); + zlog_debug ("source reference created on kat restart %s", up->sg_str); + pim_upstream_ref(up, PIM_UPSTREAM_FLAG_MASK_SRC_STREAM); PIM_UPSTREAM_FLAG_SET_SRC_STREAM(up->flags); pim_upstream_fhr_kat_start(up); diff --git a/pimd/pim_upstream.h b/pimd/pim_upstream.h index a40265a90..cc4860a21 100644 --- a/pimd/pim_upstream.h +++ b/pimd/pim_upstream.h @@ -83,6 +83,7 @@ struct pim_upstream { struct in_addr upstream_addr;/* Who we are talking to */ struct in_addr upstream_register; /*Who we received a register from*/ struct prefix_sg sg; /* (S,G) group key */ + char sg_str[PIM_SG_LEN]; uint32_t flags; struct channel_oil *channel_oil; struct list *sources; diff --git a/pimd/pim_zebra.c b/pimd/pim_zebra.c index 815fbbd2d..f5c73efe2 100644 --- a/pimd/pim_zebra.c +++ b/pimd/pim_zebra.c @@ -1188,7 +1188,7 @@ void pim_forward_start(struct pim_ifchannel *ch) if (PIM_DEBUG_PIM_TRACE) zlog_debug("%s %s: could not create OIL for channel (S,G)=%s", __FILE__, __PRETTY_FUNCTION__, - pim_str_sg_dump (&up->sg)); + up->sg_str); return; } } @@ -1205,14 +1205,14 @@ void pim_forward_stop(struct pim_ifchannel *ch) if (PIM_DEBUG_PIM_TRACE) { zlog_debug("%s: (S,G)=%s oif=%s", __PRETTY_FUNCTION__, - pim_str_sg_dump (&ch->sg), ch->interface->name); + ch->sg_str, ch->interface->name); } if (!up->channel_oil) { if (PIM_DEBUG_PIM_TRACE) zlog_debug("%s: (S,G)=%s oif=%s missing channel OIL", __PRETTY_FUNCTION__, - pim_str_sg_dump(&ch->sg), ch->interface->name); + ch->sg_str, ch->interface->name); return; } diff --git a/pimd/pimd.h b/pimd/pimd.h index 75a13a1e6..0899d831e 100644 --- a/pimd/pimd.h +++ b/pimd/pimd.h @@ -24,6 +24,7 @@ #include <stdint.h> +#include "pim_str.h" #include "pim_memory.h" #include "pim_assert.h" |