| #!/usr/bin/env python3 |
| """ |
| TEIB objects |
| """ |
| |
| from vpp_object import VppObject |
| |
| |
| def find_teib(test, ne): |
| ns = test.vapi.teib_dump() |
| for n in ns: |
| if ne.peer == str(n.entry.peer) and ne.itf._sw_if_index == n.entry.sw_if_index: |
| return True |
| return False |
| |
| |
| class VppTeib(VppObject): |
| def __init__(self, test, itf, peer, nh, table_id=0): |
| self._test = test |
| self.table_id = table_id |
| self.peer = peer |
| self.itf = itf |
| self.nh = nh |
| |
| def add_vpp_config(self): |
| r = self._test.vapi.teib_entry_add_del( |
| is_add=1, |
| entry={ |
| "nh_table_id": self.table_id, |
| "sw_if_index": self.itf.sw_if_index, |
| "peer": self.peer, |
| "nh": self.nh, |
| }, |
| ) |
| self._test.registry.register(self, self._test.logger) |
| return self |
| |
| def remove_vpp_config(self): |
| r = self._test.vapi.teib_entry_add_del( |
| is_add=0, |
| entry={ |
| "nh_table_id": self.table_id, |
| "sw_if_index": self.itf.sw_if_index, |
| "peer": self.peer, |
| }, |
| ) |
| |
| def query_vpp_config(self): |
| return find_teib(self._test, self) |
| |
| def object_id(self): |
| return "teib-%s-%s" % (self.itf, self.peer) |