]> git.puffer.fish Git - matthieu/frr.git/commitdiff
pimd: Modify pim_parse_addr_group to use 'struct prefix_sg'
authorDonald Sharp <sharpd@cumulusnetworks.com>
Mon, 7 Nov 2016 20:40:08 +0000 (15:40 -0500)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 22 Dec 2016 01:26:14 +0000 (20:26 -0500)
Modify the pim_parse_addr_group to use 'struct prefix_sg sg'.
This is the first of 2 commits to clean up this parsing to
be a bit better.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
pimd/pim_assert.c
pimd/pim_join.c
pimd/pim_neighbor.h
pimd/pim_register.c
pimd/pim_tlv.c
pimd/pim_tlv.h

index fced5dcd476fb2c055d657eb8cb16ef06f36ea23..ca21786aea81fdeb53b95753f8a6be9d73eb24fe 100644 (file)
@@ -226,7 +226,7 @@ int pim_assert_recv(struct interface *ifp,
                    struct in_addr src_addr,
                    uint8_t *buf, int buf_size)
 {
-  struct prefix            msg_group_addr;
+  struct prefix_sg         sg;
   struct prefix            msg_source_addr;
   struct pim_assert_metric msg_metric;
   int offset;
@@ -241,7 +241,7 @@ int pim_assert_recv(struct interface *ifp,
   /*
     Parse assert group addr
    */
-  offset = pim_parse_addr_group (&msg_group_addr, curr, curr_size);
+  offset = pim_parse_addr_group (&sg, curr, curr_size);
   if (offset < 1) {
     char src_str[INET_ADDRSTRLEN];
     pim_inet4_dump("<src?>", src_addr, src_str, sizeof(src_str));
@@ -301,7 +301,7 @@ int pim_assert_recv(struct interface *ifp,
     char group_str[INET_ADDRSTRLEN];
     pim_inet4_dump("<neigh?>", src_addr, neigh_str, sizeof(neigh_str));
     pim_inet4_dump("<src?>", msg_source_addr.u.prefix4, source_str, sizeof(source_str));
-    pim_inet4_dump("<grp?>", msg_group_addr.u.prefix4, group_str, sizeof(group_str));
+    pim_inet4_dump("<grp?>", sg.grp, group_str, sizeof(group_str));
     zlog_debug("%s: from %s on %s: (S,G)=(%s,%s) pref=%u metric=%u rpt_bit=%u",
               __PRETTY_FUNCTION__, neigh_str, ifp->name,
               source_str, group_str,
@@ -314,7 +314,7 @@ int pim_assert_recv(struct interface *ifp,
 
   return dispatch_assert(ifp,
                         msg_source_addr.u.prefix4,
-                        msg_group_addr.u.prefix4,
+                        sg.grp,
                         msg_metric);
 }
 
index 2dc9d91529e19da188879a4e7c002992be0f42c4..15d73fd1bd4c27c4ae7496ee306c50c18be1a69b 100644 (file)
@@ -301,14 +301,14 @@ int pim_joinprune_recv(struct interface *ifp,
 
   /* Scan groups */
   for (group = 0; group < msg_num_groups; ++group) {
-    struct prefix msg_group_addr;
+    struct prefix_sg sg;
     struct prefix msg_source_addr;
     uint8_t       msg_source_flags;
     uint16_t      msg_num_joined_sources;
     uint16_t      msg_num_pruned_sources;
     int           source;
 
-    addr_offset = pim_parse_addr_group (&msg_group_addr,
+    addr_offset = pim_parse_addr_group (&sg,
                                        buf, pastend - buf);
     if (addr_offset < 1) {
       return -5;
@@ -337,11 +337,11 @@ int pim_joinprune_recv(struct interface *ifp,
       pim_inet4_dump("<src?>", src_addr, src_str, sizeof(src_str));
       pim_inet4_dump("<addr?>", msg_upstream_addr.u.prefix4,
                     upstream_str, sizeof(upstream_str));
-      pim_inet4_dump("<grp?>", msg_group_addr.u.prefix4,
+      pim_inet4_dump("<grp?>", sg.grp,
                     group_str, sizeof(group_str));
-      zlog_warn("%s: join/prune upstream=%s group=%s/%d join_src=%d prune_src=%d from %s on %s",
+      zlog_warn("%s: join/prune upstream=%s group=%s/32 join_src=%d prune_src=%d from %s on %s",
                __PRETTY_FUNCTION__,
-               upstream_str, group_str, msg_group_addr.prefixlen,
+               upstream_str, group_str,
                msg_num_joined_sources, msg_num_pruned_sources,
                src_str, ifp->name);
     }
@@ -359,7 +359,7 @@ int pim_joinprune_recv(struct interface *ifp,
 
       recv_join(ifp, neigh, msg_holdtime,
                msg_upstream_addr.u.prefix4,
-               msg_group_addr.u.prefix4,
+               sg.grp,
                msg_source_addr.u.prefix4,
                msg_source_flags);
     }
@@ -377,7 +377,7 @@ int pim_joinprune_recv(struct interface *ifp,
 
       recv_prune(ifp, neigh, msg_holdtime,
                 msg_upstream_addr.u.prefix4,
-                msg_group_addr.u.prefix4,
+                sg.grp,
                 msg_source_addr.u.prefix4,
                 msg_source_flags);
     }
index 3f5a121d4c3f461c5969d37db59831668da9d19d..b5bd5f6244aab538d36527909490f5a80c0306f9 100644 (file)
@@ -26,6 +26,7 @@
 
 #include "if.h"
 #include "linklist.h"
+#include "prefix.h"
 
 #include "pim_tlv.h"
 
index 017d21b1b718d2a6086b3022bdb823d5b7b91be5..229232fde48dd8eb2c670d484c44196b7ea00b58 100644 (file)
@@ -102,17 +102,15 @@ pim_register_stop_recv (uint8_t *buf, int buf_size)
 {
   struct pim_upstream *upstream = NULL;
   struct prefix source;
-  struct prefix group;
   struct prefix_sg sg;
   int l;
 
-  l = pim_parse_addr_group (&group, buf, buf_size);
+  l = pim_parse_addr_group (&sg, buf, buf_size);
   buf += l;
   buf_size -= l;
   pim_parse_addr_ucast (&source, buf, buf_size);
   memset (&sg, 0, sizeof (struct prefix_sg));
   sg.src = source.u.prefix4;
-  sg.grp = group.u.prefix4;
 
   if (PIM_DEBUG_PIM_REG)
     {
index d083cd8f40ee3c1f8fb75ae37cb764ea017f7e3d..3d48c05afc8de25339f13e75288de47c3dc4abcc 100644 (file)
@@ -509,7 +509,7 @@ pim_parse_addr_ucast (struct prefix *p,
 }
 
 int
-pim_parse_addr_group (struct prefix *p,
+pim_parse_addr_group (struct prefix_sg *sg,
                      const uint8_t *buf,
                      int buf_size)
 {
@@ -551,17 +551,15 @@ pim_parse_addr_group (struct prefix *p,
       return -3;
     }
 
-    p->family = AF_INET; /* notice: AF_INET != PIM_MSG_ADDRESS_FAMILY_IPV4 */
-    memcpy(&p->u.prefix4, addr, sizeof(struct in_addr));
-    p->prefixlen = mask_len;
+    memcpy(&sg->grp.s_addr, addr, sizeof(struct in_addr));
 
     addr += sizeof(struct in_addr);
 
     break;
   default:
     {
-      zlog_warn("%s: unknown group address encoding family=%d from",
-               __PRETTY_FUNCTION__, family);
+      zlog_warn("%s: unknown group address encoding family=%d mask_len=%d from",
+               __PRETTY_FUNCTION__, family, mask_len);
       return -4;
     }
   }
index 3f1b7a34e7019591b7254b3efb36ac7d0ff54e0c..ee890d2895e12b2f94c7ac5656579ae351370437 100644 (file)
@@ -116,7 +116,7 @@ int pim_encode_addr_group (uint8_t *buf, afi_t afi, int bidir, int scope, struct
 int pim_parse_addr_ucast (struct prefix *p,
                          const uint8_t *buf,
                          int buf_size);
-int pim_parse_addr_group (struct prefix *p,
+int pim_parse_addr_group (struct prefix_sg *sg,
                          const uint8_t *buf,
                          int buf_size);
 int pim_parse_addr_source(struct prefix *p,