diff options
| author | Simon <965089+sarthurdev@users.noreply.github.com> | 2025-11-24 20:48:07 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-11-24 20:48:07 +0100 |
| commit | fdda826b48688e253c30d3578ca5edd45b034ab0 (patch) | |
| tree | e23d2dce4f302de5157604501188894a2abd31c5 /src | |
| parent | 1aec97d70ceaba9f89db8c592478e10ed1c0aefc (diff) | |
| parent | cc5895fe61f938189e229dffb7746fc93aac0f3b (diff) | |
| download | vyos-1x-fdda826b48688e253c30d3578ca5edd45b034ab0.tar.gz vyos-1x-fdda826b48688e253c30d3578ca5edd45b034ab0.zip | |
Merge pull request #4672 from apschultz/zone_default_firewall_ruleset
firewall: T7739: Default ruleset for firewall zones
Diffstat (limited to 'src')
| -rwxr-xr-x | src/conf_mode/firewall.py | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/conf_mode/firewall.py b/src/conf_mode/firewall.py index 4a4212a0f..a609e305c 100755 --- a/src/conf_mode/firewall.py +++ b/src/conf_mode/firewall.py @@ -154,12 +154,15 @@ def get_config(config=None): continue local_zone_conf['from_local'] = {} + local_zone_conf['default_local'] = {} for zone, zone_conf in firewall['zone'].items(): - if zone == local_zone or 'from' not in zone_conf: + if zone == local_zone: continue - if local_zone in zone_conf['from']: + if 'from' in zone_conf and local_zone in zone_conf['from']: local_zone_conf['from_local'][zone] = zone_conf['from'][local_zone] + elif 'default_firewall' in zone_conf: + local_zone_conf['default_local'][zone] = zone_conf['default_firewall'] set_dependents('conntrack', conf) @@ -627,6 +630,18 @@ def verify(firewall): if v6_name and not dict_search_args(firewall, 'ipv6', 'name', v6_name): raise ConfigError(f'Firewall ipv6-name "{v6_name}" does not exist') + if 'default_firewall' in zone_conf: + v4_name = dict_search_args(zone_conf, 'default_firewall', 'name') + if v4_name and not dict_search_args(firewall, 'ipv4', 'name', v4_name): + raise ConfigError(f'Firewall name "{v4_name}" does not exist') + + v6_name = dict_search_args(zone_conf, 'default_firewall', 'ipv6_name') + if v6_name and not dict_search_args(firewall, 'ipv6', 'name', v6_name): + raise ConfigError(f'Firewall ipv6-name "{v6_name}" does not exist') + + if not v4_name and not v6_name: + raise ConfigError('No firewall names specified for default-firewall') + return None def generate(firewall): |
