From 36697b32a0ea243447430d8c72ebfd55bc2736c2 Mon Sep 17 00:00:00 2001 From: Bill Nottingham Date: Fri, 8 Jan 2010 17:12:09 -0500 Subject: Run '/sbin/dhclient -6' instead of /sbin/dhcp6c (#553017, ) The ISC software is now used for DHCPv6 support, so run dhclient in DHCPv6 mode instead of the older /sbin/dhcp6c program. Still honor the same configuration variables. --- sysconfig.txt | 6 +++--- sysconfig/network-scripts/ifdown-eth | 18 ++++++++---------- sysconfig/network-scripts/ifup-eth | 6 ++---- 3 files changed, 13 insertions(+), 17 deletions(-) diff --git a/sysconfig.txt b/sysconfig.txt index 55dd4ca5..44db524c 100644 --- a/sysconfig.txt +++ b/sysconfig.txt @@ -672,11 +672,11 @@ Files in /etc/sysconfig/network-scripts/ IPv6-only option to enable DHCPv6 client: DHCPV6C=yes|no - This will enable the DHCPv6 client, dhcp6c, to be run for the interface. - See man dhcp6c(8) and dhcp6c.conf(5). + This will enable the DHCPv6 features of dhclient to be run for the interface. + See man dhclient(8) and dhclient.conf(5). DHCPV6C_OPTIONS=... This will pass given arguments to the DHCPv6 client. For example, - "-I" option will request network information (e.g., DNS addresses) + "-S" option will request network information (e.g., DNS addresses) only, not IPv6 addresses. Ethernet-only items: diff --git a/sysconfig/network-scripts/ifdown-eth b/sysconfig/network-scripts/ifdown-eth index 5e6d7d35..1ca6a6f2 100755 --- a/sysconfig/network-scripts/ifdown-eth +++ b/sysconfig/network-scripts/ifdown-eth @@ -63,28 +63,26 @@ if is_bonding_device ${DEVICE} ; then fi /etc/sysconfig/network-scripts/ifdown-ipv6 ${CONFIG} -if [[ "${DHCPV6C}" = [Yy1]* ]] && [ -f /var/run/dhcp6c_${DEVICE}.pid ]; then - kill $(cat /var/run/dhcp6c_${DEVICE}.pid); - rm -f /var/run/dhcp6c_${DEVICE}.pid; -fi retcode=0 [ -n "$(pidof -x dhclient)" ] && { - if [ -f "/var/run/dhclient-${DEVICE}.pid" ]; then - dhcpid=$(cat /var/run/dhclient-${DEVICE}.pid) + for VER in "" 6 ; do + if [ -f "/var/run/dhclient$VER-${DEVICE}.pid" ]; then + dhcpid=$(cat /var/run/dhclient$VER-${DEVICE}.pid) if [[ "$DHCPRELEASE" = [yY1]* ]]; then - /sbin/dhclient -r -lf /var/lib/dhclient/dhclient-${DEVICE}.leases -pf /var/run/dhclient-${DEVICE}.pid ${DEVICE} >/dev/null 2>&1 + /sbin/dhclient -r -lf /var/lib/dhclient/dhclient$VER-${DEVICE}.leases -pf /var/run/dhclient-${DEVICE}.pid ${DEVICE} >/dev/null 2>&1 retcode=$? else kill $dhcpid >/dev/null 2>&1 retcode=$? - reason=STOP interface=${DEVICE} /sbin/dhclient-script + reason=STOP$VER interface=${DEVICE} /sbin/dhclient-script fi - if [ -f "/var/run/dhclient-${DEVICE}.pid" ]; then - rm -f /var/run/dhclient-${DEVICE}.pid + if [ -f "/var/run/dhclient$VER-${DEVICE}.pid" ]; then + rm -f /var/run/dhclient$VER-${DEVICE}.pid kill $dhcpid >/dev/null 2>&1 fi fi + done } # we can't just delete the configured address because that address # may have been changed in the config file since the device was diff --git a/sysconfig/network-scripts/ifup-eth b/sysconfig/network-scripts/ifup-eth index 35be659d..2aead689 100755 --- a/sysconfig/network-scripts/ifup-eth +++ b/sysconfig/network-scripts/ifup-eth @@ -305,10 +305,8 @@ fi # IPv6 initialisation? /etc/sysconfig/network-scripts/ifup-ipv6 ${CONFIG} -if [[ "${DHCPV6C}" = [Yy1]* ]] && [ -x /sbin/dhcp6c ]; then - /sbin/dhcp6c ${DHCPV6C_OPTIONS} ${DEVICE} - dhcp6_pid=($(/bin/ps -eo 'pid,args' | /bin/grep "dhcp6c ${DHCPV6C_OPTIONS} ${DEVICE}" | egrep -v grep)) - [ -n "$dhcp6_pid" ] && echo ${dhcp6_pid[0]} > /var/run/dhcp6c_${DEVICE}.pid +if [[ "${DHCPV6C}" = [Yy1]* ]] && [ -x /sbin/dhclient ]; then + /sbin/dhclient -6 ${DHCPV6C_OPTIONS} ${DEVICE} -lf /var/lib/dhclient/dhclient6-${DEVICE}.leases -pf /var/run/dhclient6-${DEVICE}.pid fi if [ "${IPX}" = yes ]; then -- cgit v1.2.1