VPP-540 : pbb tag rewrite details
[vpp.git] / test / vpp_sub_interface.py
index cd98a68..b4c415c 100644 (file)
@@ -1,9 +1,10 @@
 from scapy.layers.l2 import Ether, Dot1Q
 from abc import abstractmethod, ABCMeta
 from vpp_interface import VppInterface
+from vpp_pg_interface import VppPGInterface
 
 
-class VppSubInterface(VppInterface):
+class VppSubInterface(VppPGInterface):
     __metaclass__ = ABCMeta
 
     @property
@@ -17,7 +18,7 @@ class VppSubInterface(VppInterface):
         return self._sub_id
 
     def __init__(self, test, parent, sub_id):
-        self._test = test
+        VppInterface.__init__(self, test)
         self._parent = parent
         self._parent.add_sub_if(self)
         self._sub_id = sub_id
@@ -40,6 +41,9 @@ class VppSubInterface(VppInterface):
     def add_dot1_layer(self, pkt):
         pass
 
+    def remove_vpp_config(self):
+        self.test.vapi.delete_subif(self._sw_if_index)
+
 
 class VppDot1QSubint(VppSubInterface):
 
@@ -51,18 +55,17 @@ class VppDot1QSubint(VppSubInterface):
     def __init__(self, test, parent, sub_id, vlan=None):
         if vlan is None:
             vlan = sub_id
-        super(VppDot1QSubint, self).__init__(test, parent, sub_id)
         self._vlan = vlan
-        r = self.test.vapi.create_vlan_subif(parent.sw_if_index, self.vlan)
+        r = test.vapi.create_vlan_subif(parent.sw_if_index, vlan)
         self._sw_if_index = r.sw_if_index
-        self.post_init_setup()
+        super(VppDot1QSubint, self).__init__(test, parent, sub_id)
 
     def create_arp_req(self):
-        packet = VppInterface.create_arp_req(self)
+        packet = VppPGInterface.create_arp_req(self)
         return self.add_dot1_layer(packet)
 
     def create_ndp_req(self):
-        packet = VppInterface.create_ndp_req(self)
+        packet = VppPGInterface.create_ndp_req(self)
         return self.add_dot1_layer(packet)
 
     def add_dot1_layer(self, packet):
@@ -94,28 +97,22 @@ class VppDot1ADSubint(VppSubInterface):
         return self._inner_vlan
 
     def __init__(self, test, parent, sub_id, outer_vlan, inner_vlan):
+        r = test.vapi.create_subif(parent.sw_if_index, sub_id, outer_vlan,
+                                   inner_vlan, dot1ad=1, two_tags=1,
+                                   exact_match=1)
+        self._sw_if_index = r.sw_if_index
         super(VppDot1ADSubint, self).__init__(test, parent, sub_id)
         self.DOT1AD_TYPE = 0x88A8
         self.DOT1Q_TYPE = 0x8100
         self._outer_vlan = outer_vlan
         self._inner_vlan = inner_vlan
-        r = self.test.vapi.create_subif(
-            parent.sw_if_index,
-            self.sub_id,
-            self.outer_vlan,
-            self.inner_vlan,
-            dot1ad=1,
-            two_tags=1,
-            exact_match=1)
-        self._sw_if_index = r.sw_if_index
-        self.post_init_setup()
 
     def create_arp_req(self):
-        packet = VppInterface.create_arp_req(self)
+        packet = VppPGInterface.create_arp_req(self)
         return self.add_dot1_layer(packet)
 
     def create_ndp_req(self):
-        packet = VppInterface.create_ndp_req(self)
+        packet = VppPGInterface.create_ndp_req(self)
         return self.add_dot1_layer(packet)
 
     def add_dot1_layer(self, packet):