summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorViacheslav Hletenko <v.gletenko@vyos.io>2025-01-11 14:20:29 +0000
committerViacheslav Hletenko <v.gletenko@vyos.io>2025-01-11 14:20:29 +0000
commit10de7ce46af1d38edfc449800ce730ad9bb4fbaa (patch)
tree11ce1e60099be7bf68eb0a428e370b8fefa702bd /python
parent55b846e604dc5117f7e37181a532ebae5cc2470e (diff)
downloadvyos-1x-10de7ce46af1d38edfc449800ce730ad9bb4fbaa.tar.gz
vyos-1x-10de7ce46af1d38edfc449800ce730ad9bb4fbaa.zip
Move VPPContron to interface init
Diffstat (limited to 'python')
-rw-r--r--python/vyos/vpp/interface/bond.py33
-rw-r--r--python/vyos/vpp/interface/bridge.py17
-rw-r--r--python/vyos/vpp/interface/ethernet.py9
-rw-r--r--python/vyos/vpp/interface/geneve.py13
-rw-r--r--python/vyos/vpp/interface/gre.py13
-rw-r--r--python/vyos/vpp/interface/ipip.py15
-rw-r--r--python/vyos/vpp/interface/loopback.py17
-rw-r--r--python/vyos/vpp/interface/vxlan.py13
-rw-r--r--python/vyos/vpp/interface/wireguard.py13
-rw-r--r--python/vyos/vpp/interface/xconnect.py21
10 files changed, 79 insertions, 85 deletions
diff --git a/python/vyos/vpp/interface/bond.py b/python/vyos/vpp/interface/bond.py
index 1cc306670..28aae74a1 100644
--- a/python/vyos/vpp/interface/bond.py
+++ b/python/vyos/vpp/interface/bond.py
@@ -1,5 +1,5 @@
#
-# Copyright (C) 2023 VyOS Inc.
+# Copyright (C) 2023-2025 VyOS Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -18,8 +18,6 @@
from vyos.vpp import VPPControl
from vyos.vpp.control_host import set_promisc
-vpp = VPPControl()
-
class BondInterface:
def __init__(
@@ -36,6 +34,7 @@ class BondInterface:
self.load_balance = load_balance
self.mac = mac
self.kernel_interface = kernel_interface
+ self.vpp = VPPControl()
def add(self):
"""Create Bond interface
@@ -53,9 +52,9 @@ class BondInterface:
}
if self.mac:
create_args.update({'use_custom_mac': True, 'mac_address': self.mac})
- vpp.api.bond_create2(**create_args)
+ self.vpp.api.bond_create2(**create_args)
if self.kernel_interface:
- vpp.lcp_pair_add(self.ifname, self.kernel_interface)
+ self.vpp.lcp_pair_add(self.ifname, self.kernel_interface)
def delete(self):
"""Delete Bond interface
@@ -64,8 +63,8 @@ class BondInterface:
a = BondInterface(ifname='bond0')
a.delete()
"""
- bond_if_index = vpp.get_sw_if_index(self.ifname)
- vpp.api.bond_delete(sw_if_index=bond_if_index)
+ bond_if_index = self.vpp.get_sw_if_index(self.ifname)
+ self.vpp.api.bond_delete(sw_if_index=bond_if_index)
def add_member(self, interface):
"""Add member to Bond interface
@@ -74,13 +73,15 @@ class BondInterface:
a = BondInterface(ifname='bond0')
a.add_member(interface='eth0')
"""
- bond_if_index = vpp.get_sw_if_index(f'BondEthernet{self.instance}')
- member_if_index = vpp.get_sw_if_index(interface)
- member_if_type = vpp.get_sw_if_dev_type(interface)
- vpp.api.bond_add_member(
+ bond_if_index = self.vpp.get_sw_if_index(f'BondEthernet{self.instance}')
+ member_if_index = self.vpp.get_sw_if_index(interface)
+ member_if_type = self.vpp.get_sw_if_dev_type(interface)
+ self.vpp.api.bond_add_member(
bond_sw_if_index=bond_if_index, sw_if_index=member_if_index
)
- vpp.api.sw_interface_set_promisc(sw_if_index=member_if_index, promisc_on=True)
+ self.vpp.api.sw_interface_set_promisc(
+ sw_if_index=member_if_index, promisc_on=True
+ )
if member_if_type == 'AF_XDP interface':
set_promisc(f'defunct_{interface}', 'on')
@@ -91,8 +92,8 @@ class BondInterface:
a = BondInterface(ifname='bond0')
a.detach_member(interface='eth0')
"""
- member_if_index = vpp.get_sw_if_index(interface)
- vpp.api.bond_detach_member(sw_if_index=member_if_index)
+ member_if_index = self.vpp.get_sw_if_index(interface)
+ self.vpp.api.bond_detach_member(sw_if_index=member_if_index)
def kernel_add(self):
"""Add LCP pair
@@ -101,7 +102,7 @@ class BondInterface:
a = BondInterface(ifname='bond0', mode=5)
a.kernel_add()
"""
- vpp.lcp_pair_add(self.ifname, self.kernel_interface)
+ self.vpp.lcp_pair_add(self.ifname, self.kernel_interface)
def kernel_delete(self):
"""Delete LCP pair
@@ -110,4 +111,4 @@ class BondInterface:
a = BondInterface(ifname='bond0', mode=5)
a.kernel_delete()
"""
- vpp.lcp_pair_del(self.ifname, self.kernel_interface)
+ self.vpp.lcp_pair_del(self.ifname, self.kernel_interface)
diff --git a/python/vyos/vpp/interface/bridge.py b/python/vyos/vpp/interface/bridge.py
index e220547de..407eab08c 100644
--- a/python/vyos/vpp/interface/bridge.py
+++ b/python/vyos/vpp/interface/bridge.py
@@ -1,5 +1,5 @@
#
-# Copyright (C) 2023-2024 VyOS Inc.
+# Copyright (C) 2023-2025 VyOS Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -17,8 +17,6 @@
from vyos.vpp import VPPControl
-vpp = VPPControl()
-
class BridgeInterface:
def __init__(
@@ -37,6 +35,7 @@ class BridgeInterface:
self.learn = learn
self.uu_flood = uu_flood
self.arp_term = arp_term
+ self.vpp = VPPControl()
def add(self):
"""Create Bridge interface
@@ -49,7 +48,7 @@ class BridgeInterface:
a = BridgeInterface(ifname='br23')
a.add()
"""
- vpp.api.bridge_domain_add_del_v2(
+ self.vpp.api.bridge_domain_add_del_v2(
is_add=True,
bd_id=self.interface_suffix,
flood=self.flood,
@@ -69,7 +68,7 @@ class BridgeInterface:
a = BridgeInterface(ifname='br23')
a.delete()
"""
- vpp.api.bridge_domain_add_del_v2(is_add=False, bd_id=self.interface_suffix)
+ self.vpp.api.bridge_domain_add_del_v2(is_add=False, bd_id=self.interface_suffix)
def add_member(self, member: str | int):
"""Add member to Bridge interface
@@ -94,9 +93,9 @@ class BridgeInterface:
elif member.isdigit():
member_if_index = int(member)
else:
- member_if_index = vpp.get_sw_if_index(member)
+ member_if_index = self.vpp.get_sw_if_index(member)
- return vpp.api.sw_interface_set_l2_bridge(
+ return self.vpp.api.sw_interface_set_l2_bridge(
rx_sw_if_index=member_if_index, bd_id=bridge_index, port_type=0
)
@@ -121,8 +120,8 @@ class BridgeInterface:
elif member.isdigit():
member_if_index = int(member)
else:
- member_if_index = vpp.get_sw_if_index(member)
+ member_if_index = self.vpp.get_sw_if_index(member)
- return vpp.api.sw_interface_set_l2_bridge(
+ return self.vpp.api.sw_interface_set_l2_bridge(
rx_sw_if_index=member_if_index, bd_id=0, port_type=0
)
diff --git a/python/vyos/vpp/interface/ethernet.py b/python/vyos/vpp/interface/ethernet.py
index ddd3dc42f..368d94c7f 100644
--- a/python/vyos/vpp/interface/ethernet.py
+++ b/python/vyos/vpp/interface/ethernet.py
@@ -1,6 +1,6 @@
# VyOS implementation of VPP Ethernet interface
#
-# Copyright (C) 2023 VyOS Inc.
+# Copyright (C) 2023-2025 VyOS Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -18,8 +18,6 @@
from vyos.vpp import VPPControl
-vpp = VPPControl()
-
class EthernetInterface:
"""Interface Ethernet"""
@@ -28,6 +26,7 @@ class EthernetInterface:
self.instance = int(ifname.removeprefix('eth'))
self.ifname = ifname
self.kernel_interface = kernel_interface
+ self.vpp = VPPControl()
def add(self):
pass
@@ -42,7 +41,7 @@ class EthernetInterface:
a = EthernetInterface(ifname='eth0')
a.kernel_add()
"""
- vpp.lcp_pair_add(self.ifname, self.kernel_interface)
+ self.vpp.lcp_pair_add(self.ifname, self.kernel_interface)
def kernel_delete(self):
"""Delete LCP pair
@@ -51,4 +50,4 @@ class EthernetInterface:
a = EthernetInterface(ifname='eth0')
a.kernel_delete()
"""
- vpp.lcp_pair_del(self.ifname, self.kernel_interface)
+ self.vpp.lcp_pair_del(self.ifname, self.kernel_interface)
diff --git a/python/vyos/vpp/interface/geneve.py b/python/vyos/vpp/interface/geneve.py
index 3d5e75003..a55e29d80 100644
--- a/python/vyos/vpp/interface/geneve.py
+++ b/python/vyos/vpp/interface/geneve.py
@@ -1,6 +1,6 @@
# VyOS implementation of Geneve interface
#
-# Copyright (C) 2023 VyOS Inc.
+# Copyright (C) 2023-2025 VyOS Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -18,8 +18,6 @@
from vyos.vpp import VPPControl
-vpp = VPPControl()
-
def show():
"""Show Geneve interface
@@ -38,6 +36,7 @@ class GeneveInterface:
self.dst_address = remote
self.vni = vni
self.kernel_interface = kernel_interface
+ self.vpp = VPPControl()
def add(self):
"""Create Geneve interface
@@ -48,7 +47,7 @@ class GeneveInterface:
a = GeneveInterface(ifname='geneve25', source_address='192.0.2.1', remote='203.0.113.25', vni=25)
a.add()
"""
- return vpp.api.geneve_add_del_tunnel2(
+ return self.vpp.api.geneve_add_del_tunnel2(
is_add=True,
local_address=self.src_address,
remote_address=self.dst_address,
@@ -63,7 +62,7 @@ class GeneveInterface:
a = GeneveInterface(ifname='vxlan25', source_address='192.0.2.1', remote='203.0.113.25', vni=25)
a.delete()
"""
- return vpp.api.geneve_add_del_tunnel2(
+ return self.vpp.api.geneve_add_del_tunnel2(
is_add=False,
local_address=self.src_address,
remote_address=self.dst_address,
@@ -78,7 +77,7 @@ class GeneveInterface:
a = GeneveInterface(ifname='vxlan25', source_address='192.0.2.1', remote='203.0.113.25', vni=25)
a.kernel_add()
"""
- vpp.lcp_pair_add(self.ifname, self.kernel_interface, 'tun')
+ self.vpp.lcp_pair_add(self.ifname, self.kernel_interface, 'tun')
def kernel_delete(self):
"""Delete LCP pair
@@ -87,4 +86,4 @@ class GeneveInterface:
a = GeneveInterface(ifname='vxlan25', source_address='192.0.2.1', remote='203.0.113.25', vni=25)
a.kernel_delete()
"""
- vpp.lcp_pair_del(self.ifname, self.kernel_interface)
+ self.vpp.lcp_pair_del(self.ifname, self.kernel_interface)
diff --git a/python/vyos/vpp/interface/gre.py b/python/vyos/vpp/interface/gre.py
index 0017127ec..8a9128836 100644
--- a/python/vyos/vpp/interface/gre.py
+++ b/python/vyos/vpp/interface/gre.py
@@ -1,6 +1,6 @@
# VyOS implementation of VPP GRE interface
#
-# Copyright (C) 2023 VyOS Inc.
+# Copyright (C) 2023-2025 VyOS Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -18,8 +18,6 @@
from vyos.vpp import VPPControl
-vpp = VPPControl()
-
def show():
"""Show GRE interface
@@ -37,6 +35,7 @@ class GREInterface:
self.src_address = source_address
self.dst_address = remote
self.kernel_interface = kernel_interface
+ self.vpp = VPPControl()
def add(self):
"""Create GRE interface
@@ -46,7 +45,7 @@ class GREInterface:
a = GREInterface(ifname='gre0', source_address='192.0.2.1', remote='203.0.113.25')
a.add()
"""
- vpp.api.gre_tunnel_add_del(
+ self.vpp.api.gre_tunnel_add_del(
is_add=True,
tunnel={
'src': self.src_address,
@@ -62,7 +61,7 @@ class GREInterface:
a = GREInterface(ifname='gre0', source_address='192.0.2.1', remote='203.0.113.25')
a.delete()
"""
- return vpp.api.gre_tunnel_add_del(
+ return self.vpp.api.gre_tunnel_add_del(
is_add=False, tunnel={'src': self.src_address, 'dst': self.dst_address}
)
@@ -73,7 +72,7 @@ class GREInterface:
a = GREInterface(ifname='gre0', source_address='192.0.2.1', remote='203.0.113.25')
a.kernel_add()
"""
- vpp.lcp_pair_add(self.ifname, self.kernel_interface, 'tun')
+ self.vpp.lcp_pair_add(self.ifname, self.kernel_interface, 'tun')
def kernel_delete(self):
"""Delete LCP pair
@@ -82,4 +81,4 @@ class GREInterface:
a = GREInterface(ifname='gre0', source_address='192.0.2.1', remote='203.0.113.25')
a.kernel_delete()
"""
- vpp.lcp_pair_del(self.ifname, self.kernel_interface)
+ self.vpp.lcp_pair_del(self.ifname, self.kernel_interface)
diff --git a/python/vyos/vpp/interface/ipip.py b/python/vyos/vpp/interface/ipip.py
index e1f19735b..031b0a698 100644
--- a/python/vyos/vpp/interface/ipip.py
+++ b/python/vyos/vpp/interface/ipip.py
@@ -1,6 +1,6 @@
# VyOS implementation of VPP IPIP interface
#
-# Copyright (C) 2023 VyOS Inc.
+# Copyright (C) 2023-2025 VyOS Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -18,8 +18,6 @@
from vyos.vpp import VPPControl
-vpp = VPPControl()
-
def show():
"""Show IPIP interface
@@ -37,6 +35,7 @@ class IPIPInterface:
self.src_address = source_address
self.dst_address = remote
self.kernel_interface = kernel_interface
+ self.vpp = VPPControl()
def add(self):
"""Create IPIP interface
@@ -46,7 +45,7 @@ class IPIPInterface:
a = IPIPInterface(ifname='ipip0', source_address='192.0.2.1', remote='192.0.2.5')
a.add()
"""
- vpp.api.ipip_add_tunnel(
+ self.vpp.api.ipip_add_tunnel(
tunnel={
'src': self.src_address,
'dst': self.dst_address,
@@ -61,8 +60,8 @@ class IPIPInterface:
a = IPIPInterface(ifname='ipip0', source_address='192.0.2.1', remote='192.0.2.5')
a.delete()
"""
- ipip_if_index = vpp.get_sw_if_index(f'ipip{self.instance}')
- return vpp.api.ipip_del_tunnel(sw_if_index=ipip_if_index)
+ ipip_if_index = self.vpp.get_sw_if_index(f'ipip{self.instance}')
+ return self.vpp.api.ipip_del_tunnel(sw_if_index=ipip_if_index)
def kernel_add(self):
"""Add LCP pair
@@ -71,7 +70,7 @@ class IPIPInterface:
a = IPIPInterface(ifname='ipip0', source_address='192.0.2.1', remote='192.0.2.5')
a.kernel_add()
"""
- vpp.lcp_pair_add(self.ifname, self.kernel_interface, 'tun')
+ self.vpp.lcp_pair_add(self.ifname, self.kernel_interface, 'tun')
def kernel_delete(self):
"""Delete LCP pair
@@ -80,4 +79,4 @@ class IPIPInterface:
a = IPIPInterface(ifname='ipip0', source_address='192.0.2.1', remote='192.0.2.5')
a.kernel_delete()
"""
- vpp.lcp_pair_del(self.ifname, self.kernel_interface)
+ self.vpp.lcp_pair_del(self.ifname, self.kernel_interface)
diff --git a/python/vyos/vpp/interface/loopback.py b/python/vyos/vpp/interface/loopback.py
index df7b82356..8a5414d54 100644
--- a/python/vyos/vpp/interface/loopback.py
+++ b/python/vyos/vpp/interface/loopback.py
@@ -1,6 +1,6 @@
# VyOS implementation of VPP Loopback interface
#
-# Copyright (C) 2023 VyOS Inc.
+# Copyright (C) 2023-2025 VyOS Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -18,8 +18,6 @@
from vyos.vpp import VPPControl
-vpp = VPPControl()
-
class LoopbackInterface:
"""Interface Loopback"""
@@ -28,6 +26,7 @@ class LoopbackInterface:
self.instance = int(ifname.removeprefix('lo'))
self.ifname = f'loop{self.instance}'
self.kernel_interface = kernel_interface
+ self.vpp = VPPControl()
def add(self):
"""Create Loopback interface
@@ -37,7 +36,9 @@ class LoopbackInterface:
a = LoopbackInterface(ifname='lo1')
a.add()
"""
- vpp.api.create_loopback_instance(is_specified=True, user_instance=self.instance)
+ self.vpp.api.create_loopback_instance(
+ is_specified=True, user_instance=self.instance
+ )
def delete(self):
"""Delete Loopback interface
@@ -46,8 +47,8 @@ class LoopbackInterface:
a = LoopbackInterface(ifname='lo1')
a.delete()
"""
- loopback_if_index = vpp.get_sw_if_index(f'loop{self.instance}')
- return vpp.api.delete_loopback(sw_if_index=loopback_if_index)
+ loopback_if_index = self.vpp.get_sw_if_index(f'loop{self.instance}')
+ return self.vpp.api.delete_loopback(sw_if_index=loopback_if_index)
def kernel_add(self):
"""Add LCP pair
@@ -56,7 +57,7 @@ class LoopbackInterface:
a = LoopbackInterface(ifname='lo1')
a.kernel_add()
"""
- vpp.lcp_pair_add(self.ifname, self.kernel_interface)
+ self.vpp.lcp_pair_add(self.ifname, self.kernel_interface)
def kernel_delete(self):
"""Delete LCP pair
@@ -65,4 +66,4 @@ class LoopbackInterface:
a = LoopbackInterface(ifname='lo1')
a.kernel_delete()
"""
- vpp.lcp_pair_del(self.ifname, self.kernel_interface)
+ self.vpp.lcp_pair_del(self.ifname, self.kernel_interface)
diff --git a/python/vyos/vpp/interface/vxlan.py b/python/vyos/vpp/interface/vxlan.py
index 907fcbee0..91e7b3059 100644
--- a/python/vyos/vpp/interface/vxlan.py
+++ b/python/vyos/vpp/interface/vxlan.py
@@ -1,6 +1,6 @@
# VyOS implementation of VPP VXLAN interface
#
-# Copyright (C) 2023-2024 VyOS Inc.
+# Copyright (C) 2023-2025 VyOS Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -18,8 +18,6 @@
from vyos.vpp import VPPControl
-vpp = VPPControl()
-
def show():
"""Show VXLAN interface
@@ -40,6 +38,7 @@ class VXLANInterface:
self.dst_address = remote
self.vni = vni
self.kernel_interface = kernel_interface
+ self.vpp = VPPControl()
def add(self):
"""Create VXLAN interface
@@ -50,7 +49,7 @@ class VXLANInterface:
a = VXLANInterface(ifname='vxlan23', source_address='192.0.2.1', remote='203.0.113.23', vni=23)
a.add()
"""
- vpp.api.vxlan_add_del_tunnel_v3(
+ self.vpp.api.vxlan_add_del_tunnel_v3(
is_add=True,
src_address=self.src_address,
dst_address=self.dst_address,
@@ -67,7 +66,7 @@ class VXLANInterface:
a = VXLANInterface(ifname='vxlan23', source_address='192.0.2.1', remote='203.0.113.23', vni=23)
a.delete()
"""
- return vpp.api.vxlan_add_del_tunnel_v3(
+ return self.vpp.api.vxlan_add_del_tunnel_v3(
is_add=False,
src_address=self.src_address,
dst_address=self.dst_address,
@@ -82,7 +81,7 @@ class VXLANInterface:
a = VXLANInterface(ifname='vxlan23', source_address='192.0.2.1', remote='203.0.113.23', vni=23)
a.kernel_add()
"""
- vpp.lcp_pair_add(self.ifname, self.kernel_interface)
+ self.vpp.lcp_pair_add(self.ifname, self.kernel_interface)
def kernel_delete(self):
"""Delete LCP pair
@@ -91,4 +90,4 @@ class VXLANInterface:
a = VXLANInterface(ifname='vxlan23', source_address='192.0.2.1', remote='203.0.113.23', vni=23)
a.kernel_delete()
"""
- vpp.lcp_pair_del(self.ifname, self.kernel_interface)
+ self.vpp.lcp_pair_del(self.ifname, self.kernel_interface)
diff --git a/python/vyos/vpp/interface/wireguard.py b/python/vyos/vpp/interface/wireguard.py
index 582929851..649ed5b05 100644
--- a/python/vyos/vpp/interface/wireguard.py
+++ b/python/vyos/vpp/interface/wireguard.py
@@ -1,6 +1,6 @@
# VyOS implementation of VPP Wireguard interface
#
-# Copyright (C) 2023 VyOS Inc.
+# Copyright (C) 2023-2025 VyOS Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -18,8 +18,6 @@
from vyos.vpp import VPPControl
-vpp = VPPControl()
-
class WireguardInterface:
"""Interface Wireguard"""
@@ -29,6 +27,7 @@ class WireguardInterface:
self.ifname = ifname
self.listen_port = listen_port
self.kernel_interface = kernel_interface
+ self.vpp = VPPControl()
def add(self):
"""Create Wireguard interface
@@ -38,12 +37,12 @@ class WireguardInterface:
a = WireguardInterface(ifname='wg5', listen_port=51820, generate_key=True)
a.add()
"""
- vpp.api.wireguard_interface_create(
+ self.vpp.api.wireguard_interface_create(
generate_key=True,
interface={'user_instance': self.instance, 'listen_port': self.listen_port},
)
if self.kernel_interface:
- vpp.lcp_pair_add(self.ifname, self.kernel_interface, 'tun')
+ self.vpp.lcp_pair_add(self.ifname, self.kernel_interface, 'tun')
def delete(self):
"""Delete Wireguard interface
@@ -52,5 +51,5 @@ class WireguardInterface:
a = WireguardInterface(ifname='wg5')
a.delete()
"""
- wg_if_index = vpp.get_sw_if_index(f'wg{self.instance}')
- return vpp.api.wireguard_interface_delete(sw_if_index=wg_if_index)
+ wg_if_index = self.vpp.get_sw_if_index(f'wg{self.instance}')
+ return self.vpp.api.wireguard_interface_delete(sw_if_index=wg_if_index)
diff --git a/python/vyos/vpp/interface/xconnect.py b/python/vyos/vpp/interface/xconnect.py
index b4bec3321..41cf773d9 100644
--- a/python/vyos/vpp/interface/xconnect.py
+++ b/python/vyos/vpp/interface/xconnect.py
@@ -1,6 +1,6 @@
# VyOS implementation of VPP bridge interface
#
-# Copyright (C) 2023 VyOS Inc.
+# Copyright (C) 2023-2025 VyOS Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -19,8 +19,6 @@
from vyos.vpp import VPPControl
from vyos.vpp.utils import iftunnel_transform
-vpp = VPPControl()
-
class XconnectInterface:
def __init__(
@@ -30,6 +28,7 @@ class XconnectInterface:
):
self.ifname = ifname
self.members = members
+ self.vpp = VPPControl()
def add_l2_xconnect(self):
"""Add l2 cross connect
@@ -49,14 +48,14 @@ class XconnectInterface:
if second_member.startswith(interface_transform_filter):
second_member = iftunnel_transform(second_member)
- member_first_if_index = vpp.get_sw_if_index(first_member)
- member_second_if_index = vpp.get_sw_if_index(second_member)
- vpp.api.sw_interface_set_l2_xconnect(
+ member_first_if_index = self.vpp.get_sw_if_index(first_member)
+ member_second_if_index = self.vpp.get_sw_if_index(second_member)
+ self.vpp.api.sw_interface_set_l2_xconnect(
rx_sw_if_index=member_first_if_index,
tx_sw_if_index=member_second_if_index,
enable=True,
)
- vpp.api.sw_interface_set_l2_xconnect(
+ self.vpp.api.sw_interface_set_l2_xconnect(
rx_sw_if_index=member_second_if_index,
tx_sw_if_index=member_first_if_index,
enable=True,
@@ -80,14 +79,14 @@ class XconnectInterface:
if second_member.startswith(interface_transform_filter):
second_member = iftunnel_transform(second_member)
- member_first_if_index = vpp.get_sw_if_index(first_member)
- member_second_if_index = vpp.get_sw_if_index(second_member)
- vpp.api.sw_interface_set_l2_xconnect(
+ member_first_if_index = self.vpp.get_sw_if_index(first_member)
+ member_second_if_index = self.vpp.get_sw_if_index(second_member)
+ self.vpp.api.sw_interface_set_l2_xconnect(
rx_sw_if_index=member_first_if_index,
tx_sw_if_index=member_second_if_index,
enable=False,
)
- vpp.api.sw_interface_set_l2_xconnect(
+ self.vpp.api.sw_interface_set_l2_xconnect(
rx_sw_if_index=member_second_if_index,
tx_sw_if_index=member_first_if_index,
enable=False,