diff options
| author | Oleksandr Kuchmystyi <o.kuchmystyi@vyos.io> | 2025-11-05 10:21:10 +0300 |
|---|---|---|
| committer | Oleksandr Kuchmystyi <o.kuchmystyi@vyos.io> | 2025-11-05 10:30:31 +0300 |
| commit | 909780c13714bcba488467165494af84bc7262cf (patch) | |
| tree | 2c8ba9c2f88c69577fa9ff7d72cc7c2568dadc60 /src | |
| parent | cc60275ab0db2c45f2ad7387d6a91a96fa9d6337 (diff) | |
| download | vyos-1x-909780c13714bcba488467165494af84bc7262cf.tar.gz vyos-1x-909780c13714bcba488467165494af84bc7262cf.zip | |
firewall: T7112: Default action drop fails
Prevent `KeyError` by safely handling missing 'member' dict in zone config.
Add smoketest to verify commit fails gracefully when zone has no interfaces.
Diffstat (limited to 'src')
| -rwxr-xr-x | src/conf_mode/firewall.py | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/conf_mode/firewall.py b/src/conf_mode/firewall.py index 6630b811d..4a4212a0f 100755 --- a/src/conf_mode/firewall.py +++ b/src/conf_mode/firewall.py @@ -146,9 +146,10 @@ def get_config(config=None): for local_zone, local_zone_conf in firewall['zone'].items(): if 'local_zone' not in local_zone_conf: # Get physical interfaces assigned to the zone if vrf is used: - if 'vrf' in local_zone_conf['member']: + local_zone_member = local_zone_conf.get('member', {}) + if 'vrf' in local_zone_member: local_zone_conf['vrf_interfaces'] = {} - for vrf_name in local_zone_conf['member']['vrf']: + for vrf_name in local_zone_member['vrf']: local_zone_conf['vrf_interfaces'][vrf_name] = ','.join(get_vrf_members(vrf_name)) continue |
