diff options
author | Christian Breunig <christian@breunig.cc> | 2023-11-22 10:37:00 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-22 10:37:00 +0100 |
commit | 00a28fe512ccb56f4ca57d18c2613ac47242a66d (patch) | |
tree | 40908852df55d95dd1528ef8d7a36c9c626fdd45 /src/op_mode/bridge.py | |
parent | af08c30063fb1c68cbf1ca6cae3588efdef34b7d (diff) | |
parent | 35f6033d21053fa420e837f157cd9377a4ccd26a (diff) | |
download | vyos-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-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) |