diff options
author | Viacheslav Hletenko <v.gletenko@vyos.io> | 2023-08-17 09:34:48 +0000 |
---|---|---|
committer | Viacheslav Hletenko <v.gletenko@vyos.io> | 2023-08-17 09:34:48 +0000 |
commit | 477c2def5fb4a3daab2ffa2a6f5808b69e0ad9fe (patch) | |
tree | 404193aa4df4208e940b82469fb877661d9ac506 /src/conf_mode | |
parent | 616bdb5299bf8252dfdab26f21a4b356cff6724e (diff) | |
download | vyos-1x-477c2def5fb4a3daab2ffa2a6f5808b69e0ad9fe.tar.gz vyos-1x-477c2def5fb4a3daab2ffa2a6f5808b69e0ad9fe.zip |
T5223: Fix removing key id for GRE tunnel
Fix for removing key id from GRE tunnel
Before fix:
del interfaces tunnel tun10 parameters ip key
commit
sudo ip tunnel show tun10
tun10: gre/ip remote 203.0.113.254 local 192.168.122.11 ttl 64 tos inherit key 1234
After the fix:
sudo ip tunnel show tun10
tun10: gre/ip remote 203.0.113.254 local 192.168.122.11 ttl 64 tos inherit
Diffstat (limited to 'src/conf_mode')
-rwxr-xr-x | src/conf_mode/interfaces-tunnel.py | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/conf_mode/interfaces-tunnel.py b/src/conf_mode/interfaces-tunnel.py index 681caff8e..d3a486549 100755 --- a/src/conf_mode/interfaces-tunnel.py +++ b/src/conf_mode/interfaces-tunnel.py @@ -54,6 +54,9 @@ def get_config(config=None): tmp = leaf_node_changed(conf, ['encapsulation']) if tmp: tunnel.update({'encapsulation_changed': {}}) + tmp = leaf_node_changed(conf, ['parameters', 'ip', 'key']) + if tmp: tunnel.update({'key_changed': {}}) + # We also need to inspect other configured tunnels as there are Kernel # restrictions where we need to comply. E.g. GRE tunnel key can't be used # twice, or with multiple GRE tunnels to the same location we must specify @@ -174,8 +177,9 @@ def apply(tunnel): encap = dict_search('linkinfo.info_kind', tmp) remote = dict_search('linkinfo.info_data.remote', tmp) - if ('deleted' in tunnel or 'encapsulation_changed' in tunnel or encap in - ['gretap', 'ip6gretap'] or remote in ['any']): + if ('deleted' in tunnel or 'encapsulation_changed' in tunnel or + encap in ['gretap', 'ip6gretap'] or remote in ['any'] or + 'key_changed' in tunnel): if interface in interfaces(): tmp = Interface(interface) tmp.remove() |