summaryrefslogtreecommitdiff
path: root/src/op_mode/bridge.py
diff options
context:
space:
mode:
authorChristian Breunig <christian@breunig.cc>2023-11-22 11:04:28 +0100
committerGitHub <noreply@github.com>2023-11-22 11:04:28 +0100
commitb1ef7ba3e5f66d446cd83609b25e05ab47f92060 (patch)
treed36cc170a706e632816324a2feee55257c4c2b4c /src/op_mode/bridge.py
parent756bd6d45ab76cca7155fb76a0d3c8e4dbe6d517 (diff)
parent449ab85212983078e21c839ff63c2fe2ba6e76ff (diff)
downloadvyos-1x-b1ef7ba3e5f66d446cd83609b25e05ab47f92060.tar.gz
vyos-1x-b1ef7ba3e5f66d446cd83609b25e05ab47f92060.zip
Merge pull request #2525 from vyos/mergify/bp/sagitta/pr-2499
vxlan: T5753: add support for VNI filtering (backport #2499)
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)