diff options
| author | 1vivy <1vivy@tutanota.com> | 2023-07-23 13:31:00 -0400 | 
|---|---|---|
| committer | Christian Breunig <christian@breunig.cc> | 2023-07-31 13:58:24 +0200 | 
| commit | 1d86092328ef43368fcb0bf348c14a01466e5892 (patch) | |
| tree | bb234fb0cdca706f7e1cc77f40a9f1ea7819131c | |
| parent | 230c3f5b9fedf055c15fc1e968b508c0fcaf0c59 (diff) | |
| download | vyos-1x-1d86092328ef43368fcb0bf348c14a01466e5892.tar.gz vyos-1x-1d86092328ef43368fcb0bf348c14a01466e5892.zip  | |
dhcpv6-pd: T5387: add support for no-release flag
When no-release is specified, dhcp6c client will not release allocated address or prefix on client exit.
vyos.ifconfig: dhcpv6: T5387: re-use options_file for no release flag [WIP]
* Todo: render Jinja2 template and fill it
vyos.ifconfig: dhcpv6: T5387: finish options_file and no release flag in cli
vyos.ifconfig: dhcpv6: T5387: fix missing/wrong end tag
vyos.ifconfig: dhcpv6: T5387: fix options, no var for -n
dhcpv6-client: T5387: fix missing / from filepaths
| -rw-r--r-- | data/templates/dhcp-client/dhcp6c_daemon-options.j2 | 2 | ||||
| -rw-r--r-- | interface-definitions/include/interface/dhcpv6-options.xml.i | 6 | ||||
| -rw-r--r-- | python/vyos/ifconfig/interface.py | 2 | ||||
| -rw-r--r-- | src/systemd/dhcp6c@.service | 4 | 
4 files changed, 13 insertions, 1 deletions
diff --git a/data/templates/dhcp-client/dhcp6c_daemon-options.j2 b/data/templates/dhcp-client/dhcp6c_daemon-options.j2 new file mode 100644 index 000000000..d33d418fc --- /dev/null +++ b/data/templates/dhcp-client/dhcp6c_daemon-options.j2 @@ -0,0 +1,2 @@ +{% set no_release = '-n' if dhcpv6_options.no_release is vyos_defined else '' %} +DHCP6C_OPTS="-D -k /run/dhcp6c/dhcp6c.{{ ifname }}.sock -c /run/dhcp6c/dhcp6c.{{ ifname }}.conf -p /run/dhcp6c/dhcp6c.{{ ifname }}.pid {{ no_release }} {{ ifname }}" diff --git a/interface-definitions/include/interface/dhcpv6-options.xml.i b/interface-definitions/include/interface/dhcpv6-options.xml.i index 609af1a2b..5ca1d525f 100644 --- a/interface-definitions/include/interface/dhcpv6-options.xml.i +++ b/interface-definitions/include/interface/dhcpv6-options.xml.i @@ -95,6 +95,12 @@          <valueless/>        </properties>      </leafNode> +    <leafNode name="no-release"> +      <properties> +        <help>Do not send a release message on client exit</help> +        <valueless/> +      </properties> +    </leafNode>    </children>  </node>  <!-- include end --> diff --git a/python/vyos/ifconfig/interface.py b/python/vyos/ifconfig/interface.py index 120f2131b..99ddb2021 100644 --- a/python/vyos/ifconfig/interface.py +++ b/python/vyos/ifconfig/interface.py @@ -1288,9 +1288,11 @@ class Interface(Control):          ifname = self.ifname          config_file = f'/run/dhcp6c/dhcp6c.{ifname}.conf' +        options_file = f'/run/dhcp6c/dhcp6c.{ifname}.options'          systemd_service = f'dhcp6c@{ifname}.service'          if enable and 'disable' not in self._config: +            render(options_file, 'dhcp-client/dhcp6c_daemon-options.j2', self._config)              render(config_file, 'dhcp-client/ipv6.j2', self._config)              # We must ignore any return codes. This is required to enable diff --git a/src/systemd/dhcp6c@.service b/src/systemd/dhcp6c@.service index 9a97ee261..495cb7e26 100644 --- a/src/systemd/dhcp6c@.service +++ b/src/systemd/dhcp6c@.service @@ -2,14 +2,16 @@  Description=WIDE DHCPv6 client on %i  Documentation=man:dhcp6c(8) man:dhcp6c.conf(5)  ConditionPathExists=/run/dhcp6c/dhcp6c.%i.conf +ConditionPathExists=/run/dhcp6c/dhcp6c.%i.options  After=vyos-router.service  StartLimitIntervalSec=0  [Service]  WorkingDirectory=/run/dhcp6c +EnvironmentFile=-/run/dhcp6c/dhcp6c.%i.options  Type=forking  PIDFile=/run/dhcp6c/dhcp6c.%i.pid -ExecStart=/usr/sbin/dhcp6c -D -k /run/dhcp6c/dhcp6c.%i.sock -c /run/dhcp6c/dhcp6c.%i.conf -p /run/dhcp6c/dhcp6c.%i.pid %i +ExecStart=/usr/sbin/dhcp6c $DHCP6C_OPTS  Restart=on-failure  RestartSec=20  | 
