diff options
author | DmitriyEshenko <dmitriy.eshenko@vyos.io> | 2021-12-03 14:10:08 +0000 |
---|---|---|
committer | DmitriyEshenko <dmitriy.eshenko@vyos.io> | 2021-12-03 15:02:33 +0000 |
commit | 748ebb81cf36a6db766510891d619a0d76e73d9e (patch) | |
tree | a032f1507a8d07fd4c62a3b2d42f56d37d9229e9 /src | |
parent | 28f40317f178a2825ebecc521da9d9d694415453 (diff) | |
download | vyos-1x-748ebb81cf36a6db766510891d619a0d76e73d9e.tar.gz vyos-1x-748ebb81cf36a6db766510891d619a0d76e73d9e.zip |
tftp: T4012: Add TFTP VRF support
Diffstat (limited to 'src')
-rwxr-xr-x | src/conf_mode/tftp_server.py | 9 | ||||
-rw-r--r-- | src/systemd/tftpd@.service | 5 |
2 files changed, 10 insertions, 4 deletions
diff --git a/src/conf_mode/tftp_server.py b/src/conf_mode/tftp_server.py index 2409eec1f..ef726670c 100755 --- a/src/conf_mode/tftp_server.py +++ b/src/conf_mode/tftp_server.py @@ -24,6 +24,7 @@ from sys import exit from vyos.config import Config from vyos.configdict import dict_merge +from vyos.configverify import verify_vrf from vyos.template import render from vyos.template import is_ipv4 from vyos.util import call @@ -65,10 +66,11 @@ def verify(tftpd): if 'listen_address' not in tftpd: raise ConfigError('TFTP server listen address must be configured!') - for address in tftpd['listen_address']: + for address, address_config in tftpd['listen_address'].items(): if not is_addr_assigned(address): print(f'WARNING: TFTP server listen address "{address}" not ' \ 'assigned to any interface!') + verify_vrf(address_config) return None @@ -83,7 +85,7 @@ def generate(tftpd): return None idx = 0 - for address in tftpd['listen_address']: + for address, address_config in tftpd['listen_address'].items(): config = deepcopy(tftpd) port = tftpd['port'] if is_ipv4(address): @@ -91,6 +93,9 @@ def generate(tftpd): else: config['listen_address'] = f'[{address}]:{port} -6' + if 'vrf' in address_config: + config['vrf'] = address_config['vrf'] + file = config_file + str(idx) render(file, 'tftp-server/default.tmpl', config) idx = idx + 1 diff --git a/src/systemd/tftpd@.service b/src/systemd/tftpd@.service index 266bc0962..f34db8ea5 100644 --- a/src/systemd/tftpd@.service +++ b/src/systemd/tftpd@.service @@ -7,8 +7,9 @@ RequiresMountsFor=/run Type=forking #NotifyAccess=main EnvironmentFile=-/etc/default/tftpd%I -ExecStart=/usr/sbin/in.tftpd "$DAEMON_ARGS" -Restart=on-failure +ExecStart=/bin/sh -c "${VRF_ARGS} /usr/sbin/in.tftpd ${DAEMON_ARGS}" +Restart=always +RestartSec=10 [Install] WantedBy=multi-user.target |