VPP-1110 BVI reply ARP that doesn't request BVI loacl IP. 02/9902/5
authorzhaoqingling <zhao.qingling@zte.com.cn>
Sat, 23 Dec 2017 07:20:59 +0000 (15:20 +0800)
committerNeale Ranns <nranns@cisco.com>
Sat, 6 Jan 2018 12:24:48 +0000 (12:24 +0000)
Change-Id: I66ae618edaa12c2b4e4afe276da689673b02c9cd
Signed-off-by: zhaoqingling <zhao.qingling@zte.com.cn>
src/vnet/ethernet/arp.c
test/test_neighbor.py

index f46e6f5..149f0a5 100644 (file)
@@ -1123,6 +1123,12 @@ arp_input (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame)
                                  &arp0->ip4_over_ethernet[0]);
              goto drop1;
            }
+         else if (arp0->opcode ==
+                  clib_host_to_net_u16 (ETHERNET_ARP_OPCODE_request) &&
+                  (dst_is_local0 == 0))
+           {
+             goto drop1;
+           }
 
        send_reply:
          /* Send a reply.
index 68dde2f..565a8b4 100644 (file)
@@ -641,7 +641,6 @@ class ARPTestCase(VppTestCase):
         #
         #  4 - don't respond to ARP requests that has mac source different
         #      from ARP request HW source
-        #      the router
         #
         p = (Ether(dst="ff:ff:ff:ff:ff:ff", src=self.pg0.remote_mac) /
              ARP(op="who-has",
@@ -651,6 +650,19 @@ class ARPTestCase(VppTestCase):
         self.send_and_assert_no_replies(self.pg0, p,
                                         "ARP req for non-local source")
 
+        #
+        #  5 - don't respond to ARP requests for address within the
+        #      interface's sub-net but not the interface's address
+        #
+        self.pg0.generate_remote_hosts(2)
+        p = (Ether(dst="ff:ff:ff:ff:ff:ff", src=self.pg0.remote_mac) /
+             ARP(op="who-has",
+                 hwsrc=self.pg0.remote_mac,
+                 psrc=self.pg0.remote_hosts[0].ip4,
+                 pdst=self.pg0.remote_hosts[1].ip4))
+        self.send_and_assert_no_replies(self.pg0, p,
+                                        "ARP req for non-local destination")
+
         #
         # cleanup
         #