summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJernej Jakob <jernej.jakob@gmail.com>2020-06-11 09:32:58 +0200
committerJernej Jakob <jernej.jakob@gmail.com>2020-06-11 22:10:47 +0200
commit0ccdf15c0acb0be128fa2346b72cfdd8ce16b694 (patch)
tree45bfaa5b4a7f4e3f9243420aee518e4e09a0a682
parentf9b601ef78f9f3b46ca66ae945a7e9d2dadb521b (diff)
downloadvyos-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.
-rw-r--r--src/etc/dhcp/dhclient-enter-hooks.d/04-vyos-resolvconf53
-rw-r--r--src/etc/dhcp/dhclient-exit-hooks.d/01-vyos-cleanup28
2 files changed, 53 insertions, 28 deletions
diff --git a/src/etc/dhcp/dhclient-enter-hooks.d/04-vyos-resolvconf b/src/etc/dhcp/dhclient-enter-hooks.d/04-vyos-resolvconf
index ea5562ea8..24090e2a8 100644
--- a/src/etc/dhcp/dhclient-enter-hooks.d/04-vyos-resolvconf
+++ b/src/etc/dhcp/dhclient-enter-hooks.d/04-vyos-resolvconf
@@ -1,39 +1,44 @@
-# modified make_resolv_conf () for Vyatta system below
+# modified make_resolv_conf () for VyOS
make_resolv_conf() {
+ hostsd_client="/usr/bin/vyos-hostsd-client"
+ hostsd_changes=
+
if [ -n "$new_domain_name" ]; then
- logmsg info "Adding search-domain \"$new_domain_name\" via vyos-hostsd-client"
- /usr/bin/vyos-hostsd-client --set-host-name --search-domain $new_domain_name
+ logmsg info "Deleting search domains with tag \"dhcp-$interface\" via vyos-hostsd-client"
+ $hostsd_client --delete-search-domains --tag "dhcp-$interface"
+ logmsg info "Adding domain name \"$new_domain_name\" as search domain with tag \"dhcp-$interface\" via vyos-hostsd-client"
+ $hostsd_client --add-search-domains "$new_domain_name" --tag "dhcp-$interface"
+ hostsd_changes=y
fi
if [ -n "$new_dhcp6_domain_search" ]; then
- logmsg info "Adding search-domain \"$new_dhcp6_domain_search\" via vyos-hostsd-client"
- /usr/bin/vyos-hostsd-client --set-host-name --search-domain $new_dhcp6_domain_search
+ logmsg info "Deleting search domains with tag \"dhcpv6-$interface\" via vyos-hostsd-client"
+ $hostsd_client --delete-search-domains --tag "dhcpv6-$interface"
+ logmsg info "Adding search domain \"$new_dhcp6_domain_search\" with tag \"dhcpv6-$interface\" via vyos-hostsd-client"
+ $hostsd_client --add-search-domains "$new_dhcp6_domain_search" --tag "dhcpv6-$interface"
+ hostsd_changes=y
fi
- if [ -n "$new_domain_name_servers" ] && ! cli-shell-api existsEffective system disable-dhcp-nameservers && [ "$new_domain_name_servers" != "$old_domain_name_servers" ] ; then
+ if [ -n "$new_domain_name_servers" ]; then
logmsg info "Deleting nameservers with tag \"dhcp-$interface\" via vyos-hostsd-client"
- vyos-hostsd-client --delete-name-servers --tag dhcp-$interface
- NEW_SERVERS=""
- for nameserver in $new_domain_name_servers; do
- NEW_SERVERS="$NEW_SERVERS --name-server $nameserver"
- done
- logmsg info "Adding nameservers \"$NEW_SERVERS\" with tag \"dhcp-$interface\" via vyos-hostsd-client"
- /usr/bin/vyos-hostsd-client --add-name-servers $NEW_SERVERS --tag dhcp-$interface
+ $hostsd_client --delete-name-servers --tag "dhcp-$interface"
+ logmsg info "Adding nameservers \"$new_domain_name_servers\" with tag \"dhcp-$interface\" via vyos-hostsd-client"
+ $hostsd_client --add-name-servers $new_domain_name_servers --tag "dhcp-$interface"
+ hostsd_changes=y
fi
- if [ -n "$new_dhcp6_name_servers" ] && ! cli-shell-api existsEffective system disable-dhcp-nameservers && [ "$new_dhcp6_name_servers" != "$old_dhcp6_name_servers" ] ; then
+ if [ -n "$new_dhcp6_name_servers" ]; then
logmsg info "Deleting nameservers with tag \"dhcpv6-$interface\" via vyos-hostsd-client"
- vyos-hostsd-client --delete-name-servers --tag dhcpv6-$interface
- NEW_SERVERS=""
- for nameserver in $new_dhcp6_name_servers; do
- NEW_SERVERS="$NEW_SERVERS --name-server $nameserver"
- done
- logmsg info "Adding nameservers \"$NEW_SERVERS\" with tag \"dhcpv6-$interface\" via vyos-hostsd-client"
- /usr/bin/vyos-hostsd-client --add-name-servers $NEW_SERVERS --tag dhcpv6-$interface
+ $hostsd_client --delete-name-servers --tag "dhcpv6-$interface"
+ logmsg info "Adding nameservers \"$new_dhcpv6_name_servers\" with tag \"dhcpv6-$interface\" via vyos-hostsd-client"
+ $hostsd_client --add-name-servers $new_dhcpv6_name_servers --tag "dhcpv6-$interface"
+ hostsd_changes=y
fi
- if cli-shell-api existsEffective service dns forwarding; then
- logmsg info "Enabling DNS forwarding"
- /usr/libexec/vyos/conf_mode/dns_forwarding.py --dhclient
+ 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
}
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