summaryrefslogtreecommitdiff
path: root/src/op_mode/bridge.py
diff options
context:
space:
mode:
authorChristian Breunig <christian@breunig.cc>2023-11-22 10:37:00 +0100
committerGitHub <noreply@github.com>2023-11-22 10:37:00 +0100
commit00a28fe512ccb56f4ca57d18c2613ac47242a66d (patch)
tree40908852df55d95dd1528ef8d7a36c9c626fdd45 /src/op_mode/bridge.py
parentaf08c30063fb1c68cbf1ca6cae3588efdef34b7d (diff)
parent35f6033d21053fa420e837f157cd9377a4ccd26a (diff)
downloadvyos-1x-00a28fe512ccb56f4ca57d18c2613ac47242a66d.tar.gz
vyos-1x-00a28fe512ccb56f4ca57d18c2613ac47242a66d.zip
Merge pull request #2499 from c-po/t5753-vxlan-vnifilter
vxlan: T5753: add support for VNI filtering
Diffstat (limited to 'src/op_mode/bridge.py')
-rwxr-xr-xsrc/op_mode/bridge.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/op_mode/bridge.py b/src/op_mode/bridge.py
index 185db4f20..412a4eba8 100755
--- a/src/op_mode/bridge.py
+++ b/src/op_mode/bridge.py
@@ -56,6 +56,13 @@ def _get_raw_data_vlan(tunnel:bool=False):
data_dict = json.loads(json_data)
return data_dict
+def _get_raw_data_vni() -> dict:
+ """
+ :returns dict
+ """
+ json_data = cmd(f'bridge --json vni show')
+ data_dict = json.loads(json_data)
+ return data_dict
def _get_raw_data_fdb(bridge):
"""Get MAC-address for the bridge brX
@@ -165,6 +172,22 @@ def _get_formatted_output_vlan_tunnel(data):
output = tabulate(data_entries, headers)
return output
+def _get_formatted_output_vni(data):
+ data_entries = []
+ for entry in data:
+ interface = entry.get('ifname')
+ vlans = entry.get('vnis')
+ for vlan_entry in vlans:
+ vlan = vlan_entry.get('vni')
+ if vlan_entry.get('vniEnd'):
+ vlan_end = vlan_entry.get('vniEnd')
+ vlan = f'{vlan}-{vlan_end}'
+ data_entries.append([interface, vlan])
+
+ headers = ["Interface", "VNI"]
+ output = tabulate(data_entries, headers)
+ return output
+
def _get_formatted_output_fdb(data):
data_entries = []
for entry in data:
@@ -228,6 +251,12 @@ def show_vlan(raw: bool, tunnel: typing.Optional[bool]):
else:
return _get_formatted_output_vlan(bridge_vlan)
+def show_vni(raw: bool):
+ bridge_vni = _get_raw_data_vni()
+ if raw:
+ return bridge_vni
+ else:
+ return _get_formatted_output_vni(bridge_vni)
def show_fdb(raw: bool, interface: str):
fdb_data = _get_raw_data_fdb(interface)