]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd: Narrow inheritance search down to interface we are interested in.
authorDonald Sharp <sharpd@cumulusnetworks.com>
Sat, 11 Feb 2017 11:53:00 +0000 (06:53 -0500)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Fri, 24 Feb 2017 15:03:41 +0000 (10:03 -0500)
When we are only looking at one ifchannel, for inheritance, narrow
the search down to only the interface/ifchannel we are interested in

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

index 0b5baf9756490cf4b0d2abea995aadeb3a65f37f..6bff65c1adae634fbc3f89b1641d9c160888f654 100644 (file)
@@ -969,7 +969,7 @@ pim_ifchannel_local_membership_add(struct interface *ifp,
                       __FILE__, __PRETTY_FUNCTION__,
                       child->sg_str, ifp->name, up->sg_str);
 
-         if (pim_upstream_evaluate_join_desired (child))
+         if (pim_upstream_evaluate_join_desired_interface (child, ch))
            {
              pim_channel_add_oif (child->channel_oil, ifp, PIM_OIF_FLAG_PROTO_STAR);
              pim_upstream_switch (child, PIM_UPSTREAM_JOINED);
@@ -1016,7 +1016,7 @@ void pim_ifchannel_local_membership_del(struct interface *ifp,
                       __FILE__, __PRETTY_FUNCTION__,
                       up->sg_str, ifp->name, child->sg_str);
 
-         if (c_oil && !pim_upstream_evaluate_join_desired (child))
+         if (c_oil && !pim_upstream_evaluate_join_desired_interface (child, ch))
             pim_channel_del_oif (c_oil, ifp, PIM_OIF_FLAG_PROTO_STAR);
 
          /*
index a3dc0e9d83fc8d5da402eefefafffe55d843d92f..5cac0318c6ed28ddb00e9e7c789724a4a56debd6 100644 (file)
@@ -26,6 +26,7 @@
 #include "if.h"
 #include "prefix.h"
 
+struct pim_ifchannel;
 #include "pim_upstream.h"
 
 enum pim_ifmembership {
index 4f63b20da56587200559ff46e83a8891277aaf87..b7526c290a8b0720568b19f6b185557b44dc8ed8 100644 (file)
@@ -661,7 +661,7 @@ struct pim_upstream *pim_upstream_add(struct prefix_sg *sg,
   return up;
 }
 
-static int
+int
 pim_upstream_evaluate_join_desired_interface (struct pim_upstream *up,
                                              struct pim_ifchannel *ch)
 {
index 271f2dfbdeeb7f5e37d977dba95c632a1b30c756..f36b6fba8b0c0e8abd37183271997ea3e5ea4a02 100644 (file)
@@ -129,6 +129,8 @@ struct pim_upstream *pim_upstream_add (struct prefix_sg *sg,
 void pim_upstream_del(struct pim_upstream *up, const char *name);
 
 int pim_upstream_evaluate_join_desired(struct pim_upstream *up);
+int pim_upstream_evaluate_join_desired_interface(struct pim_upstream *up,
+                                                 struct pim_ifchannel *ch);
 void pim_upstream_update_join_desired(struct pim_upstream *up);
 
 void pim_upstream_join_suppress(struct pim_upstream *up,