]> git.proxmox.com Git - mirror_frr.git/commitdiff
pimd: Optimize group size figuring out.
authorDonald Sharp <sharpd@cumulusnetworks.com>
Fri, 17 Mar 2017 12:07:19 +0000 (08:07 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 23 Mar 2017 16:58:24 +0000 (12:58 -0400)
We were figuring out the group size 2 times.  Figure it out
1 time and then pass it around.

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

index c531545541af607bb7bffaf1d4ae44dec3d4793f..884aa35bc563d3d6b21e1154f71e81a38597dd3f 100644 (file)
@@ -493,7 +493,7 @@ int pim_joinprune_send(struct pim_rpf *rpf,
       curr_ptr += group_size;
       packet_left -= group_size;
       packet_size += group_size;
-      pim_msg_build_jp_groups (grp, group);
+      pim_msg_build_jp_groups (grp, group, group_size);
 
       grp = (struct pim_jp_groups *)curr_ptr;
       if (packet_left < sizeof (struct pim_jp_groups) || msg->num_groups == 255)
index 4018fd639e0c2ecd9bb5ac48dd1be6cac0470a01..5468b8144d938ef987bd1be97d326cb36617a309 100644 (file)
@@ -112,13 +112,12 @@ pim_msg_get_jp_group_size (struct list *sources)
 }
 
 size_t
-pim_msg_build_jp_groups (struct pim_jp_groups *grp, struct pim_jp_agg_group *sgs)
+pim_msg_build_jp_groups (struct pim_jp_groups *grp, struct pim_jp_agg_group *sgs, size_t size)
 {
   struct listnode *node, *nnode;
   struct pim_jp_sources *source;
   struct in_addr stosend;
   uint8_t bits;
-  size_t size = pim_msg_get_jp_group_size (sgs->sources);
   uint8_t tgroups = 0;
 
   memset (grp, 0, size);
index 9774ef3ed025d4ea68d67bf1ce2bcc15a30b1f00..de663aa3b52007d2e0c7823bda21e3a5ce908a6c 100644 (file)
@@ -96,5 +96,5 @@ uint8_t *pim_msg_addr_encode_ipv4_source(uint8_t *buf,
 
 
 size_t pim_msg_get_jp_group_size (struct list *sources);
-size_t pim_msg_build_jp_groups (struct pim_jp_groups *grp, struct pim_jp_agg_group *sgs);
+size_t pim_msg_build_jp_groups (struct pim_jp_groups *grp, struct pim_jp_agg_group *sgs, size_t size);
 #endif /* PIM_MSG_H */