]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd: Further refinement of switch on a stick
authorDonald Sharp <sharpd@cumulusnetworks.com>
Fri, 26 Aug 2016 13:40:08 +0000 (09:40 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 22 Dec 2016 01:26:07 +0000 (20:26 -0500)
The original modification to allow the RP to receive
packets on the incoming interface when it has
no outgoing interfaces was a bit aggressive and
turned all register events into a join event.

This further divides up the code to do the
right thing in each situation.

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

index 0f86e8bdfd6e1fa1f090ce2520ca913eacf17ca3..84b64fd7094325d584196a3d65d92b833ea47b2b 100644 (file)
@@ -1089,7 +1089,16 @@ pim_upstream_inherited_olist (struct pim_upstream *up)
        }
     }
 
-  pim_upstream_switch (up, PIM_UPSTREAM_JOINED);
+  /*
+   * If we have output_intf switch state to Join and work like normal
+   * If we don't have an output_intf that means we are probably a
+   * switch on a stick so turn on forwarding to just accept the
+   * incoming packets so we don't bother the other stuff!
+   */
+  if (output_intf)
+    pim_upstream_switch (up, PIM_UPSTREAM_JOINED);
+  else
+    forward_on (up);
 
   return output_intf;
 }