]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd: Modify pim_parse_addr_source to use 'struct prefix_sg'
authorDonald Sharp <sharpd@cumulusnetworks.com>
Mon, 7 Nov 2016 20:45:40 +0000 (15:45 -0500)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 22 Dec 2016 01:26:14 +0000 (20:26 -0500)
Modify the pim_parse_addr_source function to take
a 'struct prefix_sg' and to fill in the src data.

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

index 15d73fd1bd4c27c4ae7496ee306c50c18be1a69b..3185b60108683f6b6326b7b2e80d48f90f8adafc 100644 (file)
@@ -302,7 +302,6 @@ int pim_joinprune_recv(struct interface *ifp,
   /* Scan groups */
   for (group = 0; group < msg_num_groups; ++group) {
     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;
@@ -348,7 +347,7 @@ int pim_joinprune_recv(struct interface *ifp,
 
     /* Scan joined sources */
     for (source = 0; source < msg_num_joined_sources; ++source) {
-      addr_offset = pim_parse_addr_source (&msg_source_addr,
+      addr_offset = pim_parse_addr_source (&sg,
                                           &msg_source_flags,
                                           buf, pastend - buf);
       if (addr_offset < 1) {
@@ -360,13 +359,13 @@ int pim_joinprune_recv(struct interface *ifp,
       recv_join(ifp, neigh, msg_holdtime,
                msg_upstream_addr.u.prefix4,
                sg.grp,
-               msg_source_addr.u.prefix4,
+               sg.src,
                msg_source_flags);
     }
 
     /* Scan pruned sources */
     for (source = 0; source < msg_num_pruned_sources; ++source) {
-      addr_offset = pim_parse_addr_source (&msg_source_addr,
+      addr_offset = pim_parse_addr_source (&sg,
                                           &msg_source_flags,
                                           buf, pastend - buf);
       if (addr_offset < 1) {
@@ -378,7 +377,7 @@ int pim_joinprune_recv(struct interface *ifp,
       recv_prune(ifp, neigh, msg_holdtime,
                 msg_upstream_addr.u.prefix4,
                 sg.grp,
-                msg_source_addr.u.prefix4,
+                sg.src,
                 msg_source_flags);
     }
 
index 3d48c05afc8de25339f13e75288de47c3dc4abcc..dcded95035b59999be819e12fdd04e7c7ccb6740 100644 (file)
@@ -568,7 +568,7 @@ pim_parse_addr_group (struct prefix_sg *sg,
 }
 
 int
-pim_parse_addr_source(struct prefix *p,
+pim_parse_addr_source(struct prefix_sg *sg,
                      uint8_t *flags,
                      const uint8_t *buf,
                      int buf_size)
@@ -612,9 +612,7 @@ pim_parse_addr_source(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->src, addr, sizeof(struct in_addr));
 
     /* 
        RFC 4601: 4.9.1  Encoded Source and Group Address Formats
@@ -626,9 +624,9 @@ pim_parse_addr_source(struct prefix *p,
        and 128 for IPv6 native).  A router SHOULD ignore any messages
        received with any other mask length.
     */
-    if (p->prefixlen != 32) {
+    if (mask_len != 32) {
       zlog_warn("%s: IPv4 bad source address mask: %d",
-               __PRETTY_FUNCTION__, p->prefixlen);
+               __PRETTY_FUNCTION__, mask_len);
       return -4;
     }
 
index ee890d2895e12b2f94c7ac5656579ae351370437..ee7692ab806e8310c739b660fb8ccd5771c501ca 100644 (file)
@@ -119,7 +119,7 @@ int pim_parse_addr_ucast (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,
+int pim_parse_addr_source(struct prefix_sg *sg,
                          uint8_t *flags,
                          const uint8_t *buf,
                          int buf_size);