diff options
author | Christian Poessinger <christian@poessinger.com> | 2022-07-07 16:42:27 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-07 16:42:27 +0200 |
commit | 7b998593c931757994a8965999366f2d7c9c93f3 (patch) | |
tree | 1a7b3c6f054bf700ad5b857e1ba037bd5c9ddc92 /src/conf_mode | |
parent | 5b563a78e1bd20c03a77527052585f025d6e7b4b (diff) | |
parent | 8638fda374b06d6775e78bccbb61368fe0637afb (diff) | |
download | vyos-1x-7b998593c931757994a8965999366f2d7c9c93f3.tar.gz vyos-1x-7b998593c931757994a8965999366f2d7c9c93f3.zip |
Merge pull request #1390 from c-po/t4456-ntp-equuleus
ntp: T4456: support listening on specified interface (equuleus)
Diffstat (limited to 'src/conf_mode')
-rwxr-xr-x | src/conf_mode/ntp.py | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/conf_mode/ntp.py b/src/conf_mode/ntp.py index 52070aabc..181c9e322 100755 --- a/src/conf_mode/ntp.py +++ b/src/conf_mode/ntp.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 # -# Copyright (C) 2018-2021 VyOS maintainers and contributors +# Copyright (C) 2018-2022 VyOS maintainers and contributors # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or later as @@ -18,9 +18,11 @@ import os from vyos.config import Config from vyos.configverify import verify_vrf -from vyos import ConfigError +from vyos.configverify import verify_interface_exists from vyos.util import call +from vyos.util import get_interface_config from vyos.template import render +from vyos import ConfigError from vyos import airbag airbag.enable() @@ -49,6 +51,20 @@ def verify(ntp): raise ConfigError('NTP server not configured') verify_vrf(ntp) + + if 'interface' in ntp: + # If ntpd should listen on a given interface, ensure it exists + for interface in ntp['interface']: + verify_interface_exists(interface) + + # If we run in a VRF, our interface must belong to this VRF, too + if 'vrf' in ntp: + tmp = get_interface_config(interface) + vrf_name = ntp['vrf'] + if 'master' not in tmp or tmp['master'] != vrf_name: + raise ConfigError(f'NTP runs in VRF "{vrf_name}" - "{interface}" '\ + f'does not belong to this VRF!') + return None def generate(ntp): |