diff options
author | Jernej Jakob <jernej.jakob@gmail.com> | 2020-06-11 09:32:58 +0200 |
---|---|---|
committer | Jernej Jakob <jernej.jakob@gmail.com> | 2020-06-11 22:10:47 +0200 |
commit | 0ccdf15c0acb0be128fa2346b72cfdd8ce16b694 (patch) | |
tree | 45bfaa5b4a7f4e3f9243420aee518e4e09a0a682 /src/etc/dhcp/dhclient-exit-hooks.d/01-vyos-cleanup | |
parent | f9b601ef78f9f3b46ca66ae945a7e9d2dadb521b (diff) | |
download | vyos-1x-0ccdf15c0acb0be128fa2346b72cfdd8ce16b694.tar.gz vyos-1x-0ccdf15c0acb0be128fa2346b72cfdd8ce16b694.zip |
dhclient hooks: T2486: update for vyos-hostsd rewrite
- vyos-hostsd-client syntax changed
- track changes in changes variable
- call apply only once at the end if any changes were made
- remove 'cli-shell-api existsEffective system disable-dhcp-nameservers'
condition check as the functionality was moved into vyos-hostsd
- remove comparison between old_ and new_ variables as it caused a bug
as the nameservers didn't get updated on renew or system restart,
the dhclient lease file persists across reboots, so on boot the old
variables will contain the values from previous dhclient run so they
will usually be equal to the new variables.
Diffstat (limited to 'src/etc/dhcp/dhclient-exit-hooks.d/01-vyos-cleanup')
-rw-r--r-- | src/etc/dhcp/dhclient-exit-hooks.d/01-vyos-cleanup | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/src/etc/dhcp/dhclient-exit-hooks.d/01-vyos-cleanup b/src/etc/dhcp/dhclient-exit-hooks.d/01-vyos-cleanup index 88a4d9db9..01981ad04 100644 --- a/src/etc/dhcp/dhclient-exit-hooks.d/01-vyos-cleanup +++ b/src/etc/dhcp/dhclient-exit-hooks.d/01-vyos-cleanup @@ -1,14 +1,24 @@ +## +## VyOS cleanup +## # NOTE: here we use 'ip' wrapper, therefore a route will be actually deleted via /usr/sbin/ip or vtysh, according to the system state +hostsd_client="/usr/bin/vyos-hostsd-client" +hostsd_changes= if [[ $reason =~ (EXPIRE|FAIL|RELEASE|STOP) ]]; then - # delete dynamic nameservers from a configuration if lease was deleted + # delete search domains and nameservers via vyos-hostsd + logmsg info "Deleting search domains with tag \"dhcp-$interface\" via vyos-hostsd-client" + $hostsd_client --delete-search-domains --tag "dhcp-$interface" logmsg info "Deleting nameservers with tag \"dhcp-${interface}\" via vyos-hostsd-client" - vyos-hostsd-client --delete-name-servers --tag dhcp-${interface} + $hostsd_client --delete-name-servers --tag "dhcp-${interface}" + hostsd_changes=y + # try to delete default ip route for router in $old_routers; do logmsg info "Deleting default route: via $router dev ${interface}" ip -4 route del default via $router dev ${interface} done + # delete rfc3442 routes if [ -n "$old_rfc3442_classless_static_routes" ]; then set -- $old_rfc3442_classless_static_routes @@ -72,7 +82,17 @@ if [[ $reason =~ (EXPIRE|FAIL|RELEASE|STOP) ]]; then fi if [[ $reason =~ (EXPIRE6|RELEASE6|STOP6) ]]; then - # delete dynamic nameservers from a configuration if lease was deleted + # delete search domains and nameservers via vyos-hostsd + logmsg info "Deleting search domains with tag \"dhcpv6-$interface\" via vyos-hostsd-client" + $hostsd_client --delete-search-domains --tag "dhcpv6-$interface" logmsg info "Deleting nameservers with tag \"dhcpv6-${interface}\" via vyos-hostsd-client" - vyos-hostsd-client --delete-name-servers --tag dhcpv6-${interface} + $hostsd_client --delete-name-servers --tag "dhcpv6-${interface}" + hostsd_changes=y +fi + +if [ $hostsd_changes ]; then + logmsg info "Applying changes via vyos-hostsd-client" + $hostsd_client --apply +else + logmsg info "No changes to apply via vyos-hostsd-client" fi |