| from vpp_object import VppObject |
| from socket import inet_pton, inet_ntop, AF_INET, AF_INET6 |
| |
| |
| class SRv6MobileNhtype: |
| SRV6_NHTYPE_API_NONE = 0 |
| SRV6_NHTYPE_API_IPV4 = 1 |
| SRV6_NHTYPE_API_IPV6 = 2 |
| SRV6_NHTYPE_API_NON_IP = 3 |
| |
| |
| class VppSRv6MobileLocalSID(VppObject): |
| """ |
| SRv6 LocalSID |
| """ |
| |
| def __init__( |
| self, |
| test, |
| localsid_prefix, |
| behavior, |
| fib_table=0, |
| local_fib_table=0, |
| drop_in=0, |
| nhtype=SRv6MobileNhtype.SRV6_NHTYPE_API_NONE, |
| sr_prefix="", |
| v4src_addr="", |
| v4src_position=0, |
| ): |
| self._test = test |
| self.localsid_prefix = localsid_prefix |
| self.behavior = behavior |
| self.fib_table = fib_table |
| self.local_fib_table = local_fib_table |
| self.drop_in = drop_in |
| self.nhtype = nhtype |
| self.sr_prefix = sr_prefix |
| self.v4src_addr = v4src_addr |
| self.v4src_position = v4src_position |
| self._configured = False |
| |
| def add_vpp_config(self): |
| self._test.vapi.sr_mobile_localsid_add_del( |
| localsid_prefix=self.localsid_prefix, |
| behavior=self.behavior, |
| fib_table=self.fib_table, |
| local_fib_table=self.local_fib_table, |
| drop_in=self.drop_in, |
| sr_prefix=self.sr_prefix, |
| v4src_addr=self.v4src_addr, |
| v4src_position=self.v4src_position, |
| is_del=0, |
| ) |
| self._configured = True |
| |
| def remove_vpp_config(self): |
| self._test.vapi.sr_mobile_localsid_add_del( |
| localsid_prefix=self.localsid_prefix, |
| behavior=self.behavior, |
| fib_table=self.fib_table, |
| local_fib_table=self.local_fib_table, |
| drop_in=self.drop_in, |
| sr_prefix=self.sr_prefix, |
| v4src_addr=self.v4src_addr, |
| v4src_position=self.v4src_position, |
| is_del=1, |
| ) |
| self._configured = False |
| |
| def query_vpp_config(self): |
| return self._configured |
| |
| def object_id(self): |
| return "%d;%s,%s" % (self.fib_table, self.localsid_prefix, self.behavior) |
| |
| |
| class VppSRv6MobilePolicy(VppObject): |
| """ |
| SRv6 Policy |
| """ |
| |
| def __init__( |
| self, |
| test, |
| bsid_addr, |
| sr_prefix, |
| v6src_prefix, |
| behavior, |
| fib_table=0, |
| local_fib_table=0, |
| encap_src=None, |
| drop_in=0, |
| nhtype=SRv6MobileNhtype.SRV6_NHTYPE_API_NONE, |
| ): |
| self._test = test |
| self.bsid_addr = bsid_addr |
| self.sr_prefix = sr_prefix |
| self.v6src_prefix = v6src_prefix |
| self.behavior = behavior |
| self.fib_table = fib_table |
| self.local_fib_table = local_fib_table |
| self.drop_in = drop_in |
| self.nhtype = nhtype |
| self.encap_src = encap_src |
| self._configured = False |
| |
| def add_vpp_config(self): |
| self._test.vapi.sr_mobile_policy_add( |
| bsid_addr=self.bsid_addr, |
| sr_prefix=self.sr_prefix, |
| v6src_prefix=self.v6src_prefix, |
| behavior=self.behavior, |
| fib_table=self.fib_table, |
| local_fib_table=self.local_fib_table, |
| encap_src=self.encap_src, |
| drop_in=self.drop_in, |
| nhtype=self.nhtype, |
| ) |
| self._configured = True |
| |
| def remove_vpp_config(self): |
| self._test.vapi.sr_policy_del(self.bsid_addr) |
| self._configured = False |
| |
| def query_vpp_config(self): |
| # no API to query SR Policies |
| # use _configured flag for now |
| return self._configured |
| |
| def object_id(self): |
| return "%d;%s-><%s>;%d" % ( |
| self.sr_type, |
| self.bsid, |
| ",".join(self.segments), |
| self.is_encap, |
| ) |