diff options
| -rw-r--r-- | src/etc/dhcp/dhclient-enter-hooks.d/04-vyos-resolvconf | 53 | ||||
| -rw-r--r-- | src/etc/dhcp/dhclient-exit-hooks.d/01-vyos-cleanup | 28 | 
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 | 
