VXLAN:validate mcast encapsulation ip/mac 34/5834/4
authorEyal Bari <ebari@cisco.com>
Thu, 23 Mar 2017 07:53:51 +0000 (09:53 +0200)
committerJohn Lo <loj@cisco.com>
Wed, 29 Mar 2017 16:59:03 +0000 (16:59 +0000)
Change-Id: I399257e372f83f4d12dc7873617980af6e46a9bc
Signed-off-by: Eyal Bari <ebari@cisco.com>
test/template_bd.py
test/test_vxlan.py

index ae17135..080b2e6 100644 (file)
@@ -132,7 +132,8 @@ class BridgeDomain(object):
         # Pick first received frame and check if it's corectly encapsulated.
         out = self.pg0.get_capture(1)
         pkt = out[0]
-        self.check_encapsulation(pkt, self.mcast_flood_bd, True)
+        self.check_encapsulation(pkt, self.mcast_flood_bd,
+                                 local_only=False, mcast_pkt=True)
 
         payload = self.decapsulate(pkt)
         self.assert_eq_pkts(payload, self.frame_reply)
index 35a0aa0..ee829a3 100644 (file)
@@ -51,17 +51,23 @@ class TestVxlan(BridgeDomain, VppTestCase):
 
     # Method for checking VXLAN encapsulation.
     #
-    def check_encapsulation(self, pkt, vni, local_only=False):
+    def check_encapsulation(self, pkt, vni, local_only=False, mcast_pkt=False):
         # TODO: add error messages
         # Verify source MAC is VPP_MAC and destination MAC is MY_MAC resolved
         #  by VPP using ARP.
         self.assertEqual(pkt[Ether].src, self.pg0.local_mac)
         if not local_only:
-            self.assertEqual(pkt[Ether].dst, self.pg0.remote_mac)
+            if not mcast_pkt:
+                self.assertEqual(pkt[Ether].dst, self.pg0.remote_mac)
+            else:
+                self.assertEqual(pkt[Ether].dst, type(self).mcast_mac)
         # Verify VXLAN tunnel source IP is VPP_IP and destination IP is MY_IP.
         self.assertEqual(pkt[IP].src, self.pg0.local_ip4)
         if not local_only:
-            self.assertEqual(pkt[IP].dst, self.pg0.remote_ip4)
+            if not mcast_pkt:
+                self.assertEqual(pkt[IP].dst, self.pg0.remote_ip4)
+            else:
+                self.assertEqual(pkt[IP].dst, type(self).mcast_ip4)
         # Verify UDP destination port is VXLAN 4789, source UDP port could be
         #  arbitrary.
         self.assertEqual(pkt[UDP].dport, type(self).dport)