l2: BD ARP termination entry API update
[vpp.git] / test / vpp_l2.py
index b606ff0..3ee0d35 100644 (file)
@@ -7,6 +7,11 @@ from vpp_object import VppObject
 from vpp_ip import VppIpAddress
 from vpp_lo_interface import VppLoInterface
 from vpp_papi import MACAddress
+from vpp_sub_interface import L2_VTR_OP
+try:
+    text_type = unicode
+except NameError:
+    text_type = str
 
 
 class L2_PORT_TYPE:
@@ -22,6 +27,7 @@ class BRIDGE_FLAGS:
     FLOOD = 4
     UU_FLOOD = 8
     ARP_TERM = 16
+    ARP_UFWD = 32
 
 
 def find_bridge_domain(test, bd_id):
@@ -39,19 +45,11 @@ def find_bridge_domain_port(test, bd_id, sw_if_index):
 
 
 def find_bridge_domain_arp_entry(test, bd_id, mac, ip):
-    vmac = MACAddress(mac)
-    vip = VppIpAddress(ip)
-
-    if vip.version == 4:
-        n = 4
-    else:
-        n = 16
-
     arps = test.vapi.bd_ip_mac_dump(bd_id)
     for arp in arps:
         # do IP addr comparison too once .api is fixed...
-        if vmac.packed == arp.mac_address and \
-                vip.bytes == arp.ip_address[:n]:
+        if mac == str(arp.entry.mac) and \
+           ip == str(arp.entry.ip):
             return True
     return False
 
@@ -69,7 +67,7 @@ class VppBridgeDomain(VppObject):
 
     def __init__(self, test, bd_id,
                  flood=1, uu_flood=1, forward=1,
-                 learn=1, arp_term=1):
+                 learn=1, arp_term=1, arp_ufwd=0):
         self._test = test
         self.bd_id = bd_id
         self.flood = flood
@@ -77,6 +75,7 @@ class VppBridgeDomain(VppObject):
         self.forward = forward
         self.learn = learn
         self.arp_term = arp_term
+        self.arp_ufwd = arp_ufwd
 
     def add_vpp_config(self):
         self._test.vapi.bridge_domain_add_del(bd_id=self.bd_id,
@@ -84,7 +83,9 @@ class VppBridgeDomain(VppObject):
                                               uu_flood=self.uu_flood,
                                               forward=self.forward,
                                               learn=self.learn,
-                                              arp_term=self.arp_term, is_add=1)
+                                              arp_term=self.arp_term,
+                                              arp_ufwd=self.arp_ufwd,
+                                              is_add=1)
         self._test.registry.register(self, self._test.logger)
 
     def remove_vpp_config(self):
@@ -131,28 +132,32 @@ class VppBridgeDomainArpEntry(VppObject):
     def __init__(self, test, bd, mac, ip):
         self._test = test
         self.bd = bd
-        self.mac = MACAddress(mac)
-        self.ip = VppIpAddress(ip)
+        self.mac = mac
+        self.ip = ip
 
     def add_vpp_config(self):
-        self._test.vapi.bd_ip_mac_add_del(bd_id=self.bd.bd_id, is_add=1,
-                                          ip=self.ip.encode(),
-                                          mac=self.mac.packed)
+        self._test.vapi.bd_ip_mac_add_del(is_add=1,
+                                          entry={
+                                              'bd_id': self.bd.bd_id,
+                                              'ip': self.ip,
+                                              'mac': self.mac})
         self._test.registry.register(self, self._test.logger)
 
     def remove_vpp_config(self):
-        self._test.vapi.bd_ip_mac_add_del(bd_id=self.bd.bd_id, is_add=0,
-                                          ip=self.ip.encode(),
-                                          mac=self.mac.packed)
+        self._test.vapi.bd_ip_mac_add_del(is_add=0,
+                                          entry={
+                                              'bd_id': self.bd.bd_id,
+                                              'ip': self.ip,
+                                              'mac': self.mac})
 
     def query_vpp_config(self):
         return find_bridge_domain_arp_entry(self._test,
                                             self.bd.bd_id,
-                                            self.mac.packed,
-                                            self.ip.address)
+                                            self.mac,
+                                            self.ip)
 
     def object_id(self):
-        return "BD-Arp-Entry-%s-%s-%s" % (self.bd, self.mac, self.ip.address)
+        return "BD-Arp-Entry-%s-%s-%s" % (self.bd, self.mac, self.ip)
 
 
 class VppL2FibEntry(VppObject):