]> git.proxmox.com Git - mirror_frr.git/commitdiff
pimd: Convert ifchannel to using a prefix to store (s,g)
authorDonald Sharp <sharpd@cumulusnetworks.com>
Fri, 22 Jul 2016 12:01:43 +0000 (08:01 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 22 Dec 2016 01:26:02 +0000 (20:26 -0500)
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>
pimd/pim_assert.c
pimd/pim_cmd.c
pimd/pim_ifchannel.c
pimd/pim_ifchannel.h
pimd/pim_macro.c
pimd/pim_str.c
pimd/pim_str.h
pimd/pim_zebra.c

index 590a7e1da5bce7ee3f6bbc5b619b62667b102a6d..63f4e338684c59eb34d7f9eb37414ff26e721096 100644 (file)
@@ -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("<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__,
-               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("<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("<winner?>", 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("<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",
+      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("<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",
+    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("<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",
+    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("<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",
+      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("<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",
+      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("<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",
+    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("<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",
+    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("<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",
+    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("<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",
+    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("<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",
+    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 */
   }
 
index b595d337e7d8af2ffcf199eed27a735a3d8b5a0c..726a033343318554c714305d58821edc723667f6 100644 (file)
@@ -178,9 +178,9 @@ static void pim_show_assert(struct vty *vty)
       char uptime[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));
-      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));
       pim_inet4_dump("<assrt_win?>", 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_src?>", ch->source_addr,
+      pim_inet4_dump("<ch_src?>", ch->sg.u.sg.src,
                     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));
       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_src?>", ch->source_addr,
+      pim_inet4_dump("<ch_src?>", ch->sg.u.sg.src,
                     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));
       pim_inet4_dump("<addr?>", 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_src?>", ch->source_addr,
+      pim_inet4_dump("<ch_src?>", ch->sg.u.sg.src,
                     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));
       pim_inet4_dump("<addr?>", 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_src?>", ch->source_addr,
+      pim_inet4_dump("<ch_src?>", ch->sg.u.sg.src,
                     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));
 
       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_src?>", ch->source_addr,
+      pim_inet4_dump("<ch_src?>", ch->sg.u.sg.src,
                     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));
 
       pim_time_uptime_begin(uptime, sizeof(uptime), now, ch->ifjoin_creation);
index 15dd682a506ba5d32f2992f7b66abf19c727671c..2c34f1b72f83512dd72ae43a6eb45b2bbba28b66 100644 (file)
@@ -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("<src?>", ch->source_addr, src_str, sizeof(src_str));
-      pim_inet4_dump("<grp?>", ch->group_addr, grp_str, sizeof(grp_str));
+      pim_inet4_dump("<src?>", ch->sg.u.sg.src, src_str, sizeof(src_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",
                 ((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("<src?>", ch->source_addr, src_str, sizeof(src_str));
-    pim_inet4_dump("<grp?>", ch->group_addr, grp_str, sizeof(grp_str));
+    pim_inet4_dump("<src?>", ch->sg.u.sg.src, src_str, sizeof(src_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",
               __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("<src?>", ch->source_addr, src_str, sizeof(src_str));
-    pim_inet4_dump("<grp?>", ch->group_addr, grp_str, sizeof(grp_str));
+    pim_inet4_dump("<src?>", ch->sg.u.sg.src, src_str, sizeof(src_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",
               __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("<src?>", ch->source_addr, src_str, sizeof(src_str));
-    pim_inet4_dump("<grp?>", ch->group_addr, grp_str, sizeof(grp_str));
+    pim_inet4_dump("<src?>", ch->sg.u.sg.src, src_str, sizeof(src_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("<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",
@@ -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("<src?>", ch->source_addr, src_str, sizeof(src_str));
-    pim_inet4_dump("<grp?>", ch->group_addr, grp_str, sizeof(grp_str));
+    pim_inet4_dump("<src?>", ch->sg.u.sg.src, src_str, sizeof(src_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",
               __PRETTY_FUNCTION__,
               src_str, grp_str, ch->interface->name,
index 5f488ddc0fd88f2eaa782f204a23fab36b5661c3..747ee39bf2fe83fa1588b408c371c6882921a440 100644 (file)
@@ -26,6 +26,7 @@
 #include <zebra.h>
 
 #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;
 
index 39098df526f759766079989f8331d95585e0473c..ea9fc3b0638618aedd5a99f6422df5c68eeecbc0 100644 (file)
@@ -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("<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",
+    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("<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",
+    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("<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",
+    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("<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",
+    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("<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",
+    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("<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",
+    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 */
   }
 
index ee9c74fa36bfb5a98909c03edc20dccafd7e99dc..2d647876f61e5d588280ef4bf696b55d71c59836 100644 (file)
@@ -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 ("<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;
+}
index 925f17f7325ab3a3651fade5af20529ff8067125..ea8436269970732772decb83f1ce524b2925ef07 100644 (file)
@@ -27,6 +27,9 @@
 #include <sys/socket.h>
 #include <arpa/inet.h>
 
+#include <prefix.h>
+
 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
index 1822de22997d6870f1851232a39fca364876b6db..bda5dd6845e57a4fadba3cf0d033f7cd5314ed13 100644 (file)
@@ -1130,8 +1130,8 @@ void pim_forward_start(struct pim_ifchannel *ch)
     char group_str[100]; 
     char upstream_str[100];
 
-    pim_inet4_dump("<source?>", ch->source_addr, source_str, sizeof(source_str));
-    pim_inet4_dump("<group?>", ch->group_addr, group_str, sizeof(group_str));
+    pim_inet4_dump("<source?>", ch->sg.u.sg.src, source_str, sizeof(source_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));
     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("<source?>", ch->source_addr, source_str, sizeof(source_str));
-    pim_inet4_dump("<group?>", ch->group_addr, group_str, sizeof(group_str));
+    pim_inet4_dump("<source?>", ch->sg.u.sg.src, source_str, sizeof(source_str));
+    pim_inet4_dump("<group?>", 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("<source?>", ch->source_addr, source_str, sizeof(source_str));
-    pim_inet4_dump("<group?>", ch->group_addr, group_str, sizeof(group_str));
+    pim_inet4_dump("<source?>", ch->sg.u.sg.src, source_str, sizeof(source_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",
               __PRETTY_FUNCTION__,
               source_str, group_str, ch->interface->name);