diff options
| -rwxr-xr-x | smoketest/scripts/cli/test_service_dhcp-server.py | 23 | ||||
| -rwxr-xr-x | src/conf_mode/service_dhcp-server.py | 8 | 
2 files changed, 28 insertions, 3 deletions
| diff --git a/smoketest/scripts/cli/test_service_dhcp-server.py b/smoketest/scripts/cli/test_service_dhcp-server.py index 46c4e25a1..f891bf295 100755 --- a/smoketest/scripts/cli/test_service_dhcp-server.py +++ b/smoketest/scripts/cli/test_service_dhcp-server.py @@ -557,6 +557,7 @@ class TestServiceDHCPServer(VyOSUnitTestSHIM.TestCase):          self.cli_set(pool + ['subnet-id', '1'])          self.cli_set(pool + ['option', 'default-router', router])          self.cli_set(pool + ['exclude', router]) +        self.cli_set(pool + ['range', '0', 'option', 'default-router', router])          self.cli_set(pool + ['range', '0', 'start', range_0_start])          self.cli_set(pool + ['range', '0', 'stop', range_0_stop]) @@ -569,6 +570,11 @@ class TestServiceDHCPServer(VyOSUnitTestSHIM.TestCase):          self.verify_config_value(obj, ['Dhcp4', 'shared-networks'], 'name', 'EXCLUDE-TEST')          self.verify_config_value(obj, ['Dhcp4', 'shared-networks', 0, 'subnet4'], 'subnet', subnet) +        pool_obj = { +            'pool': f'{range_0_start} - {range_0_stop}', +            'option-data': [{'name': 'routers', 'data': router}] +        } +          # Verify options          self.verify_config_object(                  obj, @@ -579,7 +585,7 @@ class TestServiceDHCPServer(VyOSUnitTestSHIM.TestCase):          self.verify_config_object(                  obj,                  ['Dhcp4', 'shared-networks', 0, 'subnet4', 0, 'pools'], -                {'pool': f'{range_0_start} - {range_0_stop}'}) +                pool_obj)          # Check for running process          self.assertTrue(process_named_running(PROCESS_NAME)) @@ -600,6 +606,7 @@ class TestServiceDHCPServer(VyOSUnitTestSHIM.TestCase):          self.cli_set(pool + ['subnet-id', '1'])          self.cli_set(pool + ['option', 'default-router', router])          self.cli_set(pool + ['exclude', exclude_addr]) +        self.cli_set(pool + ['range', '0', 'option', 'default-router', router])          self.cli_set(pool + ['range', '0', 'start', range_0_start])          self.cli_set(pool + ['range', '0', 'stop', range_0_stop]) @@ -612,6 +619,16 @@ class TestServiceDHCPServer(VyOSUnitTestSHIM.TestCase):          self.verify_config_value(obj, ['Dhcp4', 'shared-networks'], 'name', 'EXCLUDE-TEST-2')          self.verify_config_value(obj, ['Dhcp4', 'shared-networks', 0, 'subnet4'], 'subnet', subnet) +        pool_obj = { +            'pool': f'{range_0_start} - {range_0_stop_excl}', +            'option-data': [{'name': 'routers', 'data': router}] +        } + +        pool_exclude_obj = { +            'pool': f'{range_0_start_excl} - {range_0_stop}', +            'option-data': [{'name': 'routers', 'data': router}] +        } +          # Verify options          self.verify_config_object(                  obj, @@ -621,12 +638,12 @@ class TestServiceDHCPServer(VyOSUnitTestSHIM.TestCase):          self.verify_config_object(                  obj,                  ['Dhcp4', 'shared-networks', 0, 'subnet4', 0, 'pools'], -                {'pool': f'{range_0_start} - {range_0_stop_excl}'}) +                pool_obj)          self.verify_config_object(                  obj,                  ['Dhcp4', 'shared-networks', 0, 'subnet4', 0, 'pools'], -                {'pool': f'{range_0_start_excl} - {range_0_stop}'}) +                pool_exclude_obj)          # Check for running process          self.assertTrue(process_named_running(PROCESS_NAME)) diff --git a/src/conf_mode/service_dhcp-server.py b/src/conf_mode/service_dhcp-server.py index e89448e2d..9c59aa63d 100755 --- a/src/conf_mode/service_dhcp-server.py +++ b/src/conf_mode/service_dhcp-server.py @@ -87,6 +87,10 @@ def dhcp_slice_range(exclude_list, range_dict):                  'start' : range_start,                  'stop' : str(ip_address(e) -1)              } + +            if 'option' in range_dict: +                r['option'] = range_dict['option'] +              # On the next run our address range will start one address after              # the exclude address              range_start = str(ip_address(e) + 1) @@ -104,6 +108,10 @@ def dhcp_slice_range(exclude_list, range_dict):                    'start': str(ip_address(e) + 1),                    'stop': str(range_stop)                  } + +                if 'option' in range_dict: +                    r['option'] = range_dict['option'] +                  if not (ip_address(r['start']) > ip_address(r['stop'])):                      output.append(r)          else: | 
