#!/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)