diff options
author | Christian Breunig <christian@breunig.cc> | 2023-11-22 11:04:28 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-22 11:04:28 +0100 |
commit | b1ef7ba3e5f66d446cd83609b25e05ab47f92060 (patch) | |
tree | d36cc170a706e632816324a2feee55257c4c2b4c /src/op_mode/bridge.py | |
parent | 756bd6d45ab76cca7155fb76a0d3c8e4dbe6d517 (diff) | |
parent | 449ab85212983078e21c839ff63c2fe2ba6e76ff (diff) | |
download | vyos-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-x | src/op_mode/bridge.py | 29 |
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) |