diff options
author | zdc <zdc@users.noreply.github.com> | 2021-11-01 17:04:11 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-01 17:04:11 +0200 |
commit | 1b7c879b9fed2f4563477039bc6ddf4dc0db5829 (patch) | |
tree | a0ea609a933a4d2e54d5712e2b1671a19181c372 /src/conf_mode/dhcp_server.py | |
parent | 3fd2ff423b6c6e992b2ed531c7ba99fb9e1a2123 (diff) | |
parent | 85bf315f71b411e3cdcd19793c4f7e1e5efed917 (diff) | |
download | vyos-1x-1b7c879b9fed2f4563477039bc6ddf4dc0db5829.tar.gz vyos-1x-1b7c879b9fed2f4563477039bc6ddf4dc0db5829.zip |
Merge branch 'current' into T3350-sagitta
Diffstat (limited to 'src/conf_mode/dhcp_server.py')
-rwxr-xr-x | src/conf_mode/dhcp_server.py | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/conf_mode/dhcp_server.py b/src/conf_mode/dhcp_server.py index 28f2a4ca5..a8cef5ebf 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.') @@ -226,7 +232,7 @@ def verify(dhcp): # There must be one subnet connected to a listen interface. # This only counts if the network itself is not disabled! if 'disable' not in network_config: - if is_subnet_connected(subnet, primary=True): + if is_subnet_connected(subnet, primary=False): listen_ok = True # Subnets must be non overlapping @@ -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!') |