aboutsummaryrefslogtreecommitdiffstats
path: root/extras/vpp_config
AgeCommit message (Expand)AuthorFilesLines
2022-05-10tests: replace pycodestyle with blackKlement Sekera11-1520/+1724
2021-10-13docs: convert extras doc md->rstNathan Skrzypczak1-514/+517
2021-09-16dpdk: add support for outer udp and ipv4 checksumsMohsin Kazmi1-0/+4
2020-08-31vpp_config: update node variants to skx and iclRay Kinsella1-2/+2
2020-06-21vpp_config: Updates for 20.05John DeNisco7-97/+141
2020-05-12misc: remove useless assignmentDave Barach1-1/+0
2020-04-28vlib: startup multi-arch variant configurationRay Kinsella1-0/+10
2020-04-06misc: fix python sonarcloud BLOCKER level issuesPaul Vinciguerra2-58/+58
2019-11-05misc: Fix python scripts shebang lineRenato Botelho do Couto2-2/+2
2019-10-30vpp_config: fix typos in templatesPaul Vinciguerra2-3/+3
2019-05-02Add the packages for 19.04jdenisco2-6/+6
2019-05-01vpp_config: Update deprecated platform.linux_distribution()Paul Vinciguerra2-8/+9
2019-05-01vpp_config: correct usage of 'is' for equality tests.Paul Vinciguerra2-16/+16
2019-04-09Fix some python3, cleanup cpu allocationjdenisco3-19/+34
2019-02-27Fix centos build and build documentationjdenisco1-2/+2
2019-02-23Add support for 19.01jdenisco2-121/+59
2019-02-19VPP-1504: Remove JVPPMichal Cmarada1-4/+0
2019-01-10vpp_config: Rework for Python2/3 compatibility.Paul Vinciguerra12-406/+554
2018-12-19Allow the user to select master or release during the installjdenisco3-51/+38
2018-11-20Fix inspection for 18.10, requirementsjdenisco5-42/+68
2018-11-13docs and Config utility, package cloud supportjdenisco1-53/+80
2018-11-07Update the vpp config utilityjdenisco3-15/+19
2018-09-12Always use 'lib' instead of 'lib64'Damjan Marion1-2/+2
2018-03-30Fix minor issues.John DeNisco4-8/+24
2018-03-01Change tcp config to reflect some recent changes.John DeNisco7-3/+3
2018-02-16Add iperf VM/vhost creationJohn DeNisco12-19/+452
2018-01-30VPP-899: Run VPP under SELinuxBilly McFall2-3/+3
2018-01-26Add support for 18.01.John DeNisco5-62/+89
2017-11-17Add a non interactive modeJohn DeNisco5-131/+221
2017-11-01A bit of cleanup, updated the README, started vhost test.John DeNisco7-42/+245
2017-10-17Initial commit for phase 2, Add some simple validation.John DeNisco4-8/+235
2017-10-11Redhat and small system supportJohn DeNisco23-0/+6148
class="n">vapi.lisp_add_del_locator_set(locator_set_name=self._ls_name, is_add=0) def object_id(self): return 'lisp-locator-set-%s' % self._ls_name class VppLispLocator(VppObject): """ Represents LISP locator in VPP """ def __init__(self, test, sw_if_index, ls_name, priority=1, weight=1): self._test = test self._sw_if_index = sw_if_index self._ls_name = ls_name self._priority = priority self._weight = weight @property def test(self): """ Test which created this locator """ return self._test @property def ls_name(self): """ Locator set name """ return self._ls_name @property def sw_if_index(self): return self._sw_if_index @property def priority(self): return self._priority @property def weight(self): return self._weight def add_vpp_config(self): self.test.vapi.lisp_add_del_locator(locator_set_name=self._ls_name, sw_if_index=self._sw_if_index, priority=self._priority, weight=self._weight) self._test.registry.register(self, self.test.logger) def get_lisp_locator_dump_entry(self): locators = self.test.vapi.lisp_locator_dump( is_index_set=0, ls_name=self._ls_name) for locator in locators: if locator.sw_if_index == self._sw_if_index: return locator return None def query_vpp_config(self): locator = self.get_lisp_locator_dump_entry() return locator is not None def remove_vpp_config(self): self.test.vapi.lisp_add_del_locator( locator_set_name=self._ls_name, sw_if_index=self._sw_if_index, priority=self._priority, weight=self._weight, is_add=0) self._test.registry.register(self, self.test.logger) def object_id(self): return 'lisp-locator-%s-%d' % (self._ls_name, self._sw_if_index) class LispEIDType: PREFIX = 0 MAC = 1 NSH = 2 class LispKeyIdType: NONE = 0 SHA1 = 1 SHA256 = 2 class LispEID: """ Lisp endpoint identifier """ def __init__(self, eid): self.eid = eid self._type = -1 # find out whether EID is ip prefix, or MAC try: self.prefix = ip_network(self.eid) self._type = LispEIDType.PREFIX return except ValueError: if self.eid.count(":") == 5: # MAC address self.mac = self.eid self._type = LispEIDType.MAC return raise Exception('Unsupported EID format {!s}!'.format(eid)) @property def eid_type(self): return self._type @property def address(self): if self.eid_type == LispEIDType.PREFIX: return self.prefix elif self.eid_type == LispEIDType.MAC: return self.mac elif self.eid_type == LispEIDType.NSH: return Exception('Unimplemented') @property def packed(self): if self.eid_type == LispEIDType.PREFIX: return {"type": self._type, "address": {"prefix": self.prefix}} elif self.eid_type == LispEIDType.MAC: return {"type": self._type, "address": {"mac": self.mac}} elif self.eid_type == LispEIDType.NSH: return Exception('Unimplemented') class LispKey: """ Lisp Key """ def __init__(self, key_type, key): self._key_type = key_type self._key = key @property def packed(self): return {"id": self._key_type, "key": self._key} class VppLispMapping(VppObject): """ Represents common features for remote and local LISP mapping in VPP """ def __init__(self, test, eid, vni=0, priority=1, weight=1): self._eid = LispEID(eid) self._test = test self._priority = priority self._weight = weight self._vni = vni @property def test(self): return self._test @property def vni(self): return self._vni @property def eid(self): return self._eid @property def priority(self): return self._priority @property def weight(self): return self._weight def get_lisp_mapping_dump_entry(self): return self.test.vapi.lisp_eid_table_dump( eid_set=1, vni=self._vni, eid=self._eid.packed) def query_vpp_config(self): mapping = self.get_lisp_mapping_dump_entry() return mapping def object_id(self): return 'lisp-mapping-[%s]-%s-%s-%s' % ( self.vni, self.eid.address, self.priority, self.weight) class VppLocalMapping(VppLispMapping): """ LISP Local mapping """ def __init__(self, test, eid, ls_name, vni=0, priority=1, weight=1, key_id=LispKeyIdType.NONE, key=''): super(VppLocalMapping, self).__init__(test, eid, vni, priority, weight) self._ls_name = ls_name self._key = LispKey(key_id, key) @property def ls_name(self): return self._ls_name @property def key_id(self): return self._key_id @property def key(self): return self._key def add_vpp_config(self): self.test.vapi.lisp_add_del_local_eid( locator_set_name=self._ls_name, eid=self._eid.packed, vni=self._vni, key=self._key.packed) self._test.registry.register(self, self.test.logger) def remove_vpp_config(self): self.test.vapi.lisp_add_del_local_eid( locator_set_name=self._ls_name, eid=self._eid.packed, vni=self._vni, is_add=0) def object_id(self): return 'lisp-eid-local-mapping-%s[%d]' % (self._eid.address, self._vni) class LispRemoteLocator: def __init__(self, addr, priority=1, weight=1): self.addr = addr self.priority = priority self.weight = weight @property def packed(self): return {"priority": self.priority, "weight": self.weight, "ip_address": self.addr} class VppRemoteMapping(VppLispMapping): def __init__(self, test, eid, rlocs=None, vni=0, priority=1, weight=1): super(VppRemoteMapping, self).__init__(test, eid, vni, priority, weight) self._rlocs = rlocs @property def rlocs(self): rlocs = [] for rloc in self._rlocs: rlocs.append(rloc.packed) return rlocs def add_vpp_config(self): self.test.vapi.lisp_add_del_remote_mapping( rlocs=self.rlocs, deid=self._eid.packed, vni=self._vni, rloc_num=len(self._rlocs)) self._test.registry.register(self, self.test.logger) def remove_vpp_config(self): self.test.vapi.lisp_add_del_remote_mapping( deid=self._eid.packed, vni=self._vni, is_add=0, rloc_num=0) def object_id(self): return 'lisp-eid-remote-mapping-%s[%d]' % (self._eid.address, self._vni) class VppLispAdjacency(VppObject): """ Represents LISP adjacency in VPP """ def __init__(self, test, leid, reid, vni=0): self._leid = LispEID(leid) self._reid = LispEID(reid) if self._leid.eid_type != self._reid.eid_type: raise Exception('remote and local EID are different types!') self._vni = vni self._test = test @property def test(self): return self._test @property def leid(self): return self._leid @property def reid(self): return self._reid @property def vni(self): return self._vni def add_vpp_config(self): self.test.vapi.lisp_add_del_adjacency( leid=self._leid.packed, reid=self._reid.packed, vni=self._vni) self._test.registry.register(self, self.test.logger) @staticmethod def eid_equal(eid, eid_api): if eid.eid_type != eid_api.type: return False if eid_api.type == LispEIDType.PREFIX: if eid.address.prefixlen != eid_api.address.prefix.prefixlen: return False if eid.address != eid_api.address: return False return True def query_vpp_config(self): res = self.test.vapi.lisp_adjacencies_get(vni=self._vni) for adj in res.adjacencies: if self.eid_equal(self._leid, adj.leid) and \ self.eid_equal(self._reid, adj.reid): return True return False def remove_vpp_config(self): self.test.vapi.lisp_add_del_adjacency( leid=self._leid.packed, reid=self._reid.packed, vni=self._vni, is_add=0) def object_id(self): return 'lisp-adjacency-%s-%s[%d]' % (self._leid, self._reid, self._vni)