]> git.puffer.fish Git - matthieu/frr.git/commitdiff
pimd: Tweak pim_ifchannel_compare to be faster
authorDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 20 Apr 2017 16:21:02 +0000 (12:21 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 20 Apr 2017 20:00:21 +0000 (16:00 -0400)
Tweak the ifchannel compare to sort based upon
interface first

Ticket: CM-15629
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
pimd/pim_ifchannel.c

index ab01c7f13ec70aa5ffbf967c56d937398fdb2095..c87320d0f8dee18b226b50e424e521a523f917a7 100644 (file)
@@ -50,30 +50,25 @@ pim_ifchannel_compare (struct pim_ifchannel *ch1, struct pim_ifchannel *ch2)
   struct pim_interface *pim_ifp1;
   struct pim_interface *pim_ifp2;
 
-  if (ntohl(ch1->sg.grp.s_addr) < ntohl(ch2->sg.grp.s_addr))
-    return -1;
-
-  if (ntohl(ch1->sg.grp.s_addr) > ntohl(ch2->sg.grp.s_addr))
-    return 1;
+  pim_ifp1 = ch1->interface->info;
+  pim_ifp2 = ch2->interface->info;
 
-  if (ntohl(ch1->sg.src.s_addr) < ntohl(ch2->sg.src.s_addr))
+  if (pim_ifp1->mroute_vif_index < pim_ifp2->mroute_vif_index)
     return -1;
 
-  if (ntohl(ch1->sg.src.s_addr) > ntohl(ch2->sg.src.s_addr))
+  if (pim_ifp1->mroute_vif_index > pim_ifp2->mroute_vif_index)
     return 1;
 
-  pim_ifp1 = ch1->interface->info;
-  pim_ifp2 = ch2->interface->info;
-  if (ntohl(pim_ifp1->primary_address.s_addr) < ntohl(pim_ifp2->primary_address.s_addr))
+  if (ntohl(ch1->sg.grp.s_addr) < ntohl(ch2->sg.grp.s_addr))
     return -1;
 
-  if (ntohl(pim_ifp1->primary_address.s_addr) > ntohl(pim_ifp2->primary_address.s_addr))
+  if (ntohl(ch1->sg.grp.s_addr) > ntohl(ch2->sg.grp.s_addr))
     return 1;
 
-  if (pim_ifp1->mroute_vif_index < pim_ifp2->mroute_vif_index)
+  if (ntohl(ch1->sg.src.s_addr) < ntohl(ch2->sg.src.s_addr))
     return -1;
 
-  if (pim_ifp1->mroute_vif_index > pim_ifp2->mroute_vif_index)
+  if (ntohl(ch1->sg.src.s_addr) > ntohl(ch2->sg.src.s_addr))
     return 1;
 
   return 0;