diff options
author | Viacheslav <v.gletenko@vyos.io> | 2021-10-21 16:58:32 +0000 |
---|---|---|
committer | Viacheslav <v.gletenko@vyos.io> | 2021-10-21 16:58:32 +0000 |
commit | 9c825a3457a88a4eebc6475f92332822e5102889 (patch) | |
tree | 80d1d017739bc721d7553f93dc4007e59039e825 | |
parent | 1d89e5196611f06bc1d0f925fc2ac1cb4a5536ec (diff) | |
download | vyos-1x-9c825a3457a88a4eebc6475f92332822e5102889.tar.gz vyos-1x-9c825a3457a88a4eebc6475f92332822e5102889.zip |
dhcp: T3626: Prevent to disable only one configured network
-rwxr-xr-x | src/conf_mode/dhcp_server.py | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/conf_mode/dhcp_server.py b/src/conf_mode/dhcp_server.py index 28f2a4ca5..71b71879c 100755 --- a/src/conf_mode/dhcp_server.py +++ b/src/conf_mode/dhcp_server.py @@ -151,9 +151,15 @@ def verify(dhcp): listen_ok = False subnets = [] failover_ok = False + shared_networks = len(dhcp['shared_network_name']) + disabled_shared_networks = 0 + # A shared-network requires a subnet definition for network, network_config in dhcp['shared_network_name'].items(): + if 'disable' in network_config: + disabled_shared_networks += 1 + if 'subnet' not in network_config: raise ConfigError(f'No subnets defined for {network}. At least one\n' \ 'lease subnet must be configured.') @@ -243,6 +249,10 @@ def verify(dhcp): if net.overlaps(net2): raise ConfigError('Conflicting subnet ranges: "{net}" overlaps "{net2}"!') + # Prevent 'disable' for shared-network if only one network is configured + if (shared_networks - disabled_shared_networks) < 1: + raise ConfigError(f'At least one shared network must be active!') + if 'failover' in dhcp: if not failover_ok: raise ConfigError('DHCP failover must be enabled for at least one subnet!') |