vapier      14/11/08 18:24:47

  Added:                dhcp-4.3.1-dhclient-resolvconf.patch
  Log:
  Version bump #510006 by cilly.
  
  (Portage version: 2.2.14/cvs/Linux x86_64, signed Manifest commit with key 
D2E96200)

Revision  Changes    Path
1.1                  net-misc/dhcp/files/dhcp-4.3.1-dhclient-resolvconf.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/net-misc/dhcp/files/dhcp-4.3.1-dhclient-resolvconf.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/net-misc/dhcp/files/dhcp-4.3.1-dhclient-resolvconf.patch?rev=1.1&content-type=text/plain

Index: dhcp-4.3.1-dhclient-resolvconf.patch
===================================================================
resolvconf support in dhclient-script

--- a/client/scripts/bsdos
+++ b/client/scripts/bsdos
@@ -1,40 +1,46 @@
 #!/bin/sh
 
 make_resolv_conf() {
+  if [ x"$PEER_DNS" != x ] && [ x"$PEER_DNS" != xyes ]; then
+    return 0
+  fi
+  local conf=
   if [ x"$new_domain_name_servers" != x ]; then
-    cat /dev/null > /etc/resolv.conf.dhclient
     if [ "x$new_domain_search" != x ]; then
-      echo search $new_domain_search >> /etc/resolv.conf.dhclient
+      conf="${conf}search ${new_domain_search}\n"
     elif [ "x$new_domain_name" != x ]; then
       # Note that the DHCP 'Domain Name Option' is really just a domain
       # name, and that this practice of using the domain name option as
       # a search path is both nonstandard and deprecated.
-      echo search $new_domain_name >> /etc/resolv.conf.dhclient
+      conf="${conf}search ${new_domain_name}\n"
     fi
     for nameserver in $new_domain_name_servers; do
-      echo nameserver $nameserver >> /etc/resolv.conf.dhclient
+      conf="${conf}nameserver ${nameserver}\n"
     done
-
-    mv /etc/resolv.conf.dhclient /etc/resolv.conf
   elif [ "x${new_dhcp6_name_servers}" != x ] ; then
-    cat /dev/null > /etc/resolv.conf.dhclient6
-    chmod 644 /etc/resolv.conf.dhclient6
-
     if [ "x${new_dhcp6_domain_search}" != x ] ; then
-      echo search ${new_dhcp6_domain_search} >> /etc/resolv.conf.dhclient6
+      conf="${conf}search ${new_dhcp6_domain_search}\n"
     fi
     for nameserver in ${new_dhcp6_name_servers} ; do
       # If the nameserver has a link-local address
       # add a <zone_id> (interface name) to it.
       case $nameserver in
          fe80:*) zone_id="%$interface";;
          FE80:*) zone_id="%$interface";;
          *)      zone_id="";;
       esac
-      echo nameserver ${nameserver}$zone_id >> /etc/resolv.conf.dhclient6
+      conf="${conf}nameserver ${nameserver}$zone_id\n"
     done
+  fi
 
-    mv /etc/resolv.conf.dhclient6 /etc/resolv.conf
+  if [ x"$conf" != x ]; then
+    conf="# Generated by dhclient or interface $interface\n${conf}"
+    if type resolvconf >/dev/null 2>&1; then
+      printf "${conf}" | resolvconf -a $interface
+    else
+      printf "${conf}" > /etc/resolv.conf
+      chmod 644 /etc/resolv.conf
+    fi
   fi
 }
 
--- a/client/scripts/freebsd
+++ b/client/scripts/freebsd
@@ -11,73 +11,45 @@
 fi
 
 make_resolv_conf() {
+  if [ x"$PEER_DNS" != x ] && [ x"$PEER_DNS" != xyes ]; then
+    return 0
+  fi
+  local conf=
   if [ x"$new_domain_name_servers" != x ]; then
-    ( cat /dev/null > /etc/resolv.conf.dhclient )
-    exit_status=$?
-    if [ $exit_status -ne 0 ]; then
-      $LOGGER "Unable to create /etc/resolv.conf.dhclient: Error $exit_status"
-    else
-      if [ "x$new_domain_search" != x ]; then
-       ( echo search $new_domain_search >> /etc/resolv.conf.dhclient )
-       exit_status=$?
-      elif [ "x$new_domain_name" != x ]; then
-       # Note that the DHCP 'Domain Name Option' is really just a domain
-       # name, and that this practice of using the domain name option as
-       # a search path is both nonstandard and deprecated.
-       ( echo search $new_domain_name >> /etc/resolv.conf.dhclient )
-       exit_status=$?
-      fi
-      for nameserver in $new_domain_name_servers; do
-       if [ $exit_status -ne 0 ]; then
-         break
-       fi
-       ( echo nameserver $nameserver >>/etc/resolv.conf.dhclient )
-       exit_status=$?
-      done
-
-      # If there were no errors, attempt to mv the new file into place.
-      if [ $exit_status -eq 0 ]; then
-       ( mv /etc/resolv.conf.dhclient /etc/resolv.conf )
-       exit_status=$?
-      fi
-
-      if [ $exit_status -ne 0 ]; then
-       $LOGGER "Error while writing new /etc/resolv.conf."
-      fi
+    if [ "x$new_domain_search" != x ]; then
+      conf="${conf}search ${new_domain_search}\n"
+    elif [ "x$new_domain_name" != x ]; then
+      # Note that the DHCP 'Domain Name Option' is really just a domain
+      # name, and that this practice of using the domain name option as
+      # a search path is both nonstandard and deprecated.
+      conf="${conf}search ${new_domain_name}\n"
     fi
+    for nameserver in $new_domain_name_servers; do
+      conf="${conf}nameserver ${nameserver}\n"
+    done
   elif [ "x${new_dhcp6_name_servers}" != x ] ; then
-    ( cat /dev/null > /etc/resolv.conf.dhclient6 )
-    exit_status=$?
-    if [ $exit_status -ne 0 ] ; then
-      $LOGGER "Unable to create /etc/resolv.conf.dhclient6: Error $exit_status"
-    else
-      if [ "x${new_dhcp6_domain_search}" != x ] ; then
-       ( echo search ${new_dhcp6_domain_search} >> /etc/resolv.conf.dhclient6 )
-       exit_status=$?
-      fi
-      for nameserver in ${new_dhcp6_name_servers} ; do
-       if [ $exit_status -ne 0 ] ; then
-         break
-       fi
        # If the nameserver has a link-local address
        # add a <zone_id> (interface name) to it.
        case $nameserver in
            fe80:*) zone_id="%$interface";;
            FE80:*) zone_id="%$interface";;
            *)      zone_id="";;
        esac
-       ( echo nameserver ${nameserver}$zone_id >> /etc/resolv.conf.dhclient6 )
-       exit_status=$?
-      done
-
-      if [ $exit_status -eq 0 ] ; then
-        ( mv /etc/resolv.conf.dhclient6 /etc/resolv.conf )
-       exit_status=$?
-      fi
+    if [ "x${new_dhcp6_domain_search}" != x ] ; then
+      conf="${conf}search ${new_dhcp6_domain_search}\n"
+    fi
+    for nameserver in ${new_dhcp6_name_servers} ; do
+      conf="${conf}nameserver ${nameserver}$zone_id\n"
+    done
+  fi
 
-      if [ $exit_status -ne 0 ] ; then
-       $LOGGER "Error while writing new /etc/resolv.conf."
-      fi
+  if [ x"$conf" != x ]; then
+    conf="# Generated by dhclient or interface $interface\n${conf}"
+    if type resolvconf >/dev/null 2>&1; then
+      printf "${conf}" | resolvconf -a $interface
+    else
+      printf "${conf}" > /etc/resolv.conf
+      chmod 644 /etc/resolv.conf
     fi
   fi
 }
--- a/client/scripts/linux
+++ b/client/scripts/linux
@@ -26,44 +26,49 @@
 ip=/sbin/ip
 
 make_resolv_conf() {
+  if [ x"$PEER_DNS" != x ] && [ x"$PEER_DNS" != xyes ]; then
+    return 0
+  fi
+  local conf=
   if [ x"$new_domain_name_servers" != x ]; then
-    cat /dev/null > /etc/resolv.conf.dhclient
-    chmod 644 /etc/resolv.conf.dhclient
-    if [ x"$new_domain_search" != x ]; then
-      echo search $new_domain_search >> /etc/resolv.conf.dhclient
-    elif [ x"$new_domain_name" != x ]; then
+    if [ "x$new_domain_search" != x ]; then
+      conf="${conf}search ${new_domain_search}\n"
+    elif [ "x$new_domain_name" != x ]; then
       # Note that the DHCP 'Domain Name Option' is really just a domain
       # name, and that this practice of using the domain name option as
       # a search path is both nonstandard and deprecated.
-      echo search $new_domain_name >> /etc/resolv.conf.dhclient
+      conf="${conf}search ${new_domain_name}\n"
     fi
     for nameserver in $new_domain_name_servers; do
-      echo nameserver $nameserver >>/etc/resolv.conf.dhclient
+      conf="${conf}nameserver ${nameserver}\n"
     done
-
-    mv /etc/resolv.conf.dhclient /etc/resolv.conf
   elif [ "x${new_dhcp6_name_servers}" != x ] ; then
-    cat /dev/null > /etc/resolv.conf.dhclient6
-    chmod 644 /etc/resolv.conf.dhclient6
-
     if [ "x${new_dhcp6_domain_search}" != x ] ; then
-      echo search ${new_dhcp6_domain_search} >> /etc/resolv.conf.dhclient6
+      conf="${conf}search ${new_dhcp6_domain_search}\n"
     fi
     shopt -s nocasematch 
     for nameserver in ${new_dhcp6_name_servers} ; do
       # If the nameserver has a link-local address
       # add a <zone_id> (interface name) to it.
       if  [[ "$nameserver" =~ ^fe80:: ]]
       then
        zone_id="%$interface"
       else
        zone_id=
       fi
-      echo nameserver ${nameserver}$zone_id >> /etc/resolv.conf.dhclient6
+      conf="${conf}nameserver ${nameserver}$zone_id\n"
     done
     shopt -u nocasematch 
+  fi
 
-    mv /etc/resolv.conf.dhclient6 /etc/resolv.conf
+  if [ x"$conf" != x ]; then
+    conf="# Generated by dhclient or interface $interface\n${conf}"
+    if type resolvconf >/dev/null 2>&1; then
+      printf "${conf}" | resolvconf -a $interface
+    else
+      printf "${conf}" > /etc/resolv.conf
+      chmod 644 /etc/resolv.conf
+    fi
   fi
 }
 
--- a/client/scripts/netbsd
+++ b/client/scripts/netbsd
@@ -1,40 +1,46 @@
 #!/bin/sh
 
 make_resolv_conf() {
-  if [ "x$new_domain_name" != x ] && [ x"$new_domain_name_servers" != x ]; then
-    cat /dev/null > /etc/resolv.conf.dhclient
-    if [ "x$new_domain_search" != x ]; then
-      echo search $new_domain_search >> /etc/resolv.conf.dhclient
-    elif [ "x$new_domain_name" != x ]; then
+  if [ x"$PEER_DNS" != x ] && [ x"$PEER_DNS" != xyes ]; then
+    return 0
+  fi
+  local conf=
+  if [ x"$new_domain_name_servers" != x ]; then
+    if [ "x$new_domain_search" != x ]; then
+      conf="${conf}search ${new_domain_search}\n"
+    elif [ "x$new_domain_name" != x ]; then
       # Note that the DHCP 'Domain Name Option' is really just a domain
       # name, and that this practice of using the domain name option as
       # a search path is both nonstandard and deprecated.
-      echo search $new_domain_name >> /etc/resolv.conf.dhclient
+      conf="${conf}search ${new_domain_name}\n"
     fi
     for nameserver in $new_domain_name_servers; do
-      echo nameserver $nameserver >>/etc/resolv.conf.dhclient
+      conf="${conf}nameserver ${nameserver}\n"
     done
-
-    mv /etc/resolv.conf.dhclient /etc/resolv.conf
   elif [ "x${new_dhcp6_name_servers}" != x ] ; then
-    cat /dev/null > /etc/resolv.conf.dhclient6
-    chmod 644 /etc/resolv.conf.dhclient6
-
     if [ "x${new_dhcp6_domain_search}" != x ] ; then
-      echo search ${new_dhcp6_domain_search} >> /etc/resolv.conf.dhclient6
+      conf="${conf}search ${new_dhcp6_domain_search}\n"
     fi
     for nameserver in ${new_dhcp6_name_servers} ; do
       # If the nameserver has a link-local address
       # add a <zone_id> (interface name) to it.
       case $nameserver in
        fe80:*) zone_id="%$interface";;
        FE80:*) zone_id="%$interface";;
        *)      zone_id="";;
       esac
-      echo nameserver ${nameserver}$zone_id >> /etc/resolv.conf.dhclient6
+      conf="${conf}nameserver ${nameserver}$zone_id\n"
     done
+  fi
 
-    mv /etc/resolv.conf.dhclient6 /etc/resolv.conf
+  if [ x"$conf" != x ]; then
+    conf="# Generated by dhclient or interface $interface\n${conf}"
+    if type resolvconf >/dev/null 2>&1; then
+      printf "${conf}" | resolvconf -a $interface
+    else
+      printf "${conf}" > /etc/resolv.conf
+      chmod 644 /etc/resolv.conf
+    fi
   fi
 }
 
--- a/client/scripts/openbsd
+++ b/client/scripts/openbsd
@@ -1,40 +1,46 @@
 #!/bin/sh
 
 make_resolv_conf() {
-  if [ x"$new_domain_name_servers" != x ]; then
-    cat /dev/null > /etc/resolv.conf.dhclient
-    if [ x"$new_domain_search" != x ]; then
-      echo search $new_domain_search >> /etc/resolv.conf.dhclient
-    elif [ x"$new_domain_name" != x ]; then
+  if [ x"$PEER_DNS" != x ] && [ x"$PEER_DNS" != xyes ]; then
+    return 0
+  fi
+  local conf=
+  if [ x"$new_domain_name_servers" != x ]; then
+    if [ "x$new_domain_search" != x ]; then
+      conf="${conf}search ${new_domain_search}\n"
+    elif [ "x$new_domain_name" != x ]; then
       # Note that the DHCP 'Domain Name Option' is really just a domain
       # name, and that this practice of using the domain name option as
       # a search path is both nonstandard and deprecated.
-      echo search $new_domain_name >> /etc/resolv.conf.dhclient
+      conf="${conf}search ${new_domain_name}\n"
     fi
     for nameserver in $new_domain_name_servers; do
-      echo nameserver $nameserver >>/etc/resolv.conf.dhclient
+      conf="${conf}nameserver ${nameserver}\n"
     done
-
-    mv /etc/resolv.conf.dhclient /etc/resolv.conf
   elif [ "x${new_dhcp6_name_servers}" != x ] ; then
-    cat /dev/null > /etc/resolv.conf.dhclient6
-    chmod 644 /etc/resolv.conf.dhclient6
-
     if [ "x${new_dhcp6_domain_search}" != x ] ; then
-      echo search ${new_dhcp6_domain_search} >> /etc/resolv.conf.dhclient6
+      conf="${conf}search ${new_dhcp6_domain_search}\n"
     fi
     for nameserver in ${new_dhcp6_name_servers} ; do
       # If the nameserver has a link-local address
       # add a <zone_id> (interface name) to it.
       case $nameserver in
        fe80:*) zone_id="%$interface";;
        FE80:*) zone_id="%$interface";;
        *)      zone_id="";;
       esac
-      echo nameserver ${nameserver}$zone_id >> /etc/resolv.conf.dhclient6
+      conf="${conf}nameserver ${nameserver}$zone_id\n"
     done
+  fi
 
-    mv /etc/resolv.conf.dhclient6 /etc/resolv.conf
+  if [ x"$conf" != x ]; then
+    conf="# Generated by dhclient or interface $interface\n${conf}"
+    if type resolvconf >/dev/null 2>&1; then
+      printf "${conf}" | resolvconf -a $interface
+    else
+      printf "${conf}" > /etc/resolv.conf
+      chmod 644 /etc/resolv.conf
+    fi
   fi
 }
 
--- a/client/scripts/solaris
+++ b/client/scripts/solaris
@@ -1,21 +1,39 @@
 #!/bin/sh  
 
 make_resolv_conf() {
+  if [ x"$PEER_DNS" != x ] && [ x"$PEER_DNS" != xyes ]; then
+    return 0
+  fi
+  local conf=
   if [ x"$new_domain_name_servers" != x ]; then
-    cat /dev/null > /etc/resolv.conf.dhclient
-    if [ x"$new_domain_search" != x ]; then
-      echo search $new_domain_search >> /etc/resolv.conf.dhclient
-    elif [ x"$new_domain_name" != x ]; then
+    if [ "x$new_domain_search" != x ]; then
+      conf="${conf}search ${new_domain_search}\n"
+    elif [ "x$new_domain_name" != x ]; then
       # Note that the DHCP 'Domain Name Option' is really just a domain
       # name, and that this practice of using the domain name option as
       # a search path is both nonstandard and deprecated.
-      echo search $new_domain_name >> /etc/resolv.conf.dhclient
+      conf="${conf}search ${new_domain_name}\n"
     fi
     for nameserver in $new_domain_name_servers; do
-      echo nameserver $nameserver >>/etc/resolv.conf.dhclient
+      conf="${conf}nameserver ${nameserver}\n"
+    done
+  elif [ "x${new_dhcp6_name_servers}" != x ] ; then
+    if [ "x${new_dhcp6_domain_search}" != x ] ; then
+      conf="${conf}search ${new_dhcp6_domain_search}\n"
+    fi
+    for nameserver in ${new_dhcp6_name_servers} ; do
+      conf="${conf}nameserver ${nameserver}\n"
     done
+  fi
 
-    mv /etc/resolv.conf.dhclient /etc/resolv.conf
+  if [ x"$conf" != x ]; then
+    conf="# Generated by dhclient or interface $interface\n${conf}"
+    if type resolvconf >/dev/null 2>&1; then
+      printf "${conf}" | resolvconf -a $interface
+    else
+      printf "${conf}" > /etc/resolv.conf
+      chmod 644 /etc/resolv.conf
+    fi
   fi
 }
 




Reply via email to