devices: af_packet API cleanup
[vpp.git] / test / vpp_devices.py
1 from vpp_interface import VppInterface
2
3
4 class VppAFPacketInterface(VppInterface):
5
6     @property
7     def host_if_name(self):
8         """Host interface name"""
9         return self._host_if_name
10
11     def __init__(self, test, host_if_name, mac_addr=None):
12         self._test = test
13         self._host_if_name = host_if_name
14         self._mac_addr = mac_addr
15
16     def get_vpp_dump(self):
17         dump = self._test.vapi.af_packet_dump()
18         for entry in dump:
19             if entry.sw_if_index == self.sw_if_index:
20                 return entry
21
22     def add_vpp_config(self):
23         use_random_mac = True if self._mac_addr else False
24         reply = self._test.vapi.af_packet_create(
25             host_if_name=self._host_if_name,
26             use_random_hw_addr=use_random_mac,
27             hw_addr=self._mac_addr)
28         self.set_sw_if_index(reply.sw_if_index)
29         self._test.registry.register(self, self.test.logger)
30
31     def remove_vpp_config(self):
32         self._test.vapi.af_packet_delete(host_if_name=self._host_if_name)
33
34     def query_vpp_config(self):
35         dump = self.get_vpp_dump()
36         if dump:
37             return True
38         return False
39
40     def object_id(self):
41         return "af_packet-%s" % self._host_if_name