diff -Nru isc-dhcp-4.4.1/debian/changelog isc-dhcp-4.4.1/debian/changelog --- isc-dhcp-4.4.1/debian/changelog 2019-03-13 01:26:56.000000000 +0000 +++ isc-dhcp-4.4.1/debian/changelog 2019-09-02 22:10:56.000000000 +0000 @@ -1,3 +1,11 @@ +isc-dhcp (4.4.1-2ubuntu5) eoan; urgency=medium + + * Apply patch from Alkis Georgopoulos to generate correct + net{,6}-${iface}.conf files when DHCP supplies multiple DNS servers. + (LP: #1840965). + + -- Michael Hudson-Doyle Tue, 03 Sep 2019 10:10:56 +1200 + isc-dhcp (4.4.1-2ubuntu4) disco; urgency=medium * Write pidfile before informing parent of success. (LP: #1819747) diff -Nru isc-dhcp-4.4.1/debian/initramfs-tools/lib/etc/dhcp/dhclient-enter-hooks.d/config isc-dhcp-4.4.1/debian/initramfs-tools/lib/etc/dhcp/dhclient-enter-hooks.d/config --- isc-dhcp-4.4.1/debian/initramfs-tools/lib/etc/dhcp/dhclient-enter-hooks.d/config 2018-08-30 21:43:53.000000000 +0000 +++ isc-dhcp-4.4.1/debian/initramfs-tools/lib/etc/dhcp/dhclient-enter-hooks.d/config 2019-09-02 22:07:27.000000000 +0000 @@ -2,48 +2,57 @@ case "$reason" in BOUND) - echo "DEVICE=$interface" >> /run/net-$interface.conf - echo "PROTO=dhcp" >> /run/net-$interface.conf - echo "IPV4PROTO=dhcp" >> /run/net-$interface.conf - echo "IPV4ADDR=$new_ip_address" >> /run/net-$interface.conf - echo "IPV4NETMASK=$new_subnet_mask" >> /run/net-$interface.conf - echo "IPV4BROADCAST=$new_broadcast_address" >> /run/net-$interface.conf - echo "IPV4GATEWAY=$new_routers" >> /run/net-$interface.conf - echo "IPV4DNS0=$new_domain_name_servers" >> /run/net-$interface.conf - echo "ROOTSERVER=$new_routers" >> /run/net-$interface.conf - if [ -n "$host_name"]; then - echo "HOSTNAME=$new_host_name" >> /run/net-$interface.conf - fi - if [ -n "$domain_name"]; then - echo "DNSDOMAIN=$new_domain_name" >> /run/net-$interface.conf - fi - if [ -n "$new_domain_search" ]; then - if [ -n "$new_domain_name" ]; then - domain_in_search_list="" - for domain in $new_domain_search; do - if [ "$domain" = "${new_domain_name}" ] || - [ "$domain" = "${new_domain_name}." ]; then - domain_in_search_list="Yes" + { + echo "DEVICE='$interface'" + echo "PROTO='dhcp'" + echo "IPV4PROTO='dhcp'" + echo "IPV4ADDR='$new_ip_address'" + echo "IPV4NETMASK='$new_subnet_mask'" + echo "IPV4BROADCAST='$new_broadcast_address'" + # Only keep the first router + echo "IPV4GATEWAY='${new_routers%% *}'" + i=0 + for name in $new_domain_name_servers; do + echo "IPV4DNS$i='$name'" + i=$((i+1)) + done + echo "ROOTSERVER='${new_routers%% *}'" + echo "HOSTNAME='$new_host_name'" + echo "DNSDOMAIN='$new_domain_name'" + if [ -n "$new_domain_search" ]; then + if [ -n "$new_domain_name" ]; then + domain_in_search_list="" + for domain in $new_domain_search; do + if [ "$domain" = "${new_domain_name}" ] || + [ "$domain" = "${new_domain_name}." ]; then + domain_in_search_list="Yes" + fi + done + if [ -z "$domain_in_search_list" ]; then + new_domain_search="$new_domain_name $new_domain_search" fi - done - if [ -z "$domain_in_search_list" ]; then - new_domain_search="$new_domain_name $new_domain_search" fi + echo "DOMAINSEARCH='${new_domain_search}'" + elif [ -n "$new_domain_name" ]; then + echo "DOMAINSEARCH='${new_domain_name}'" fi - echo "DOMAINSEARCH=${new_domain_search}" >> /run/net-$interface.conf - elif [ -n "$new_domain_name" ]; then - echo "DOMAINSEARCH=${new_domain_name}" >> /run/net-$interface.conf - fi + } >"/run/net-$interface.conf" ;; BOUND6) - echo "DEVICE6=$interface" > /run/net6-$interface.conf - echo "IPV6PROTO=dhcp6" >> /run/net6-$interface.conf - echo "IPV6ADDR=$new_ip6_address" >> /run/net6-$interface.conf - echo "IPV6NETMASK=$new_ip6_prefixlen" >> /run/net6-$interface.conf - echo "IPV6DNS0=$new_dhcp6_name_servers" >> /run/net6-$interface.conf - if [ -n "$new_dhcp6_domain_search" ]; then - echo "IPV6DOMAINSEARCH=$new_dhcp6_domain_search" >> /run/net6-$interface.conf - fi + { + echo "DEVICE6='$interface'" + echo "IPV6PROTO='dhcp6'" + echo "IPV6ADDR='$new_ip6_address'" + echo "IPV6NETMASK='$new_ip6_prefixlen'" + i=0 + for name in $new_dhcp6_name_servers; do + echo "IPV6DNS$i='$name'" + i=$((i+1)) + done + if [ -n "$new_dhcp6_domain_search" ]; then + echo "IPV6DOMAINSEARCH='$new_dhcp6_domain_search'" + fi + } >"/run/net6-$interface.conf" ;; esac