summaryrefslogtreecommitdiffstats
path: root/src/vnet
diff options
context:
space:
mode:
authorJohn Lo <loj@cisco.com>2017-11-07 17:23:49 -0500
committerFlorin Coras <florin.coras@gmail.com>2017-11-08 02:36:25 +0000
commit9e7c13f8793e95bd0aad5c2799ff10731312c92c (patch)
tree942429a608f1de4a894bc86d2bbe2e84731be004 /src/vnet
parente1682c40447137a055af4e61a32cd605a5ad3c4f (diff)
Fix SHG handling for ARP/ICMPv6 received from BVI in a BD
This change makes sure ARP/ICMPv6 brodcast packets received from the BVI of a BD can be flooded to all remote VTEPs via its VXLAN tunnels irrespective of SHG setting. Similar processing was done for unicast packets already and needs to be extpanded to ARP and ICMPv6 broadcast packets. Change-Id: I26ac43ecdbc81a769f742a583a156506f7e70d49 Signed-off-by: John Lo <loj@cisco.com> (cherry picked from commit c97b4aca0db8d84b17ceb03a14ab44346a2b3466)
Diffstat (limited to 'src/vnet')
-rw-r--r--src/vnet/l2/l2_input.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/vnet/l2/l2_input.c b/src/vnet/l2/l2_input.c
index f60dd189e0a..041684fb410 100644
--- a/src/vnet/l2/l2_input.c
+++ b/src/vnet/l2/l2_input.c
@@ -193,6 +193,14 @@ classify_and_dispatch (l2input_main_t * msm, vlib_buffer_t * b0, u32 * next0)
if (ethertype != ETHERNET_TYPE_ARP &&
(ethertype != ETHERNET_TYPE_IP6 || protocol != IP_PROTOCOL_ICMP6))
feat_mask &= ~(L2INPUT_FEAT_ARP_TERM);
+ /*
+ * Check for from-BVI processing - set SHG of ARP/ICMP6 packets from BVI
+ * to 0 so it can also flood to VXLAN tunnels or other ports with the
+ * same SHG as that of the BVI.
+ */
+ else if (PREDICT_FALSE (vnet_buffer (b0)->sw_if_index[VLIB_TX] ==
+ L2INPUT_BVI))
+ vnet_buffer (b0)->l2.shg = 0;
}
else
{