From e0ac4fd3706f8521fe343229d94dd9725ca18280 Mon Sep 17 00:00:00 2001
From: Michael Hanson <hansonorders@verizon.net>
Date: Wed, 8 Dec 2010 21:05:20 +0000
Subject: dhcp: upgrade

---
 abs/core/dhcp/ChangeLog                            |   5 +-
 abs/core/dhcp/PKGBUILD                             |  66 +++++++++---
 abs/core/dhcp/dhclient-script-pathFixes.patch      | 118 +++++++++++++++++++++
 .../dhcp/dhcp-4.1.1-missing-ipv6-not-fatal.patch   |  39 +++++++
 abs/core/dhcp/dhcp.install                         |   6 +-
 5 files changed, 214 insertions(+), 20 deletions(-)
 create mode 100644 abs/core/dhcp/dhclient-script-pathFixes.patch
 create mode 100644 abs/core/dhcp/dhcp-4.1.1-missing-ipv6-not-fatal.patch

diff --git a/abs/core/dhcp/ChangeLog b/abs/core/dhcp/ChangeLog
index 7b9cb47..9cffaa9 100644
--- a/abs/core/dhcp/ChangeLog
+++ b/abs/core/dhcp/ChangeLog
@@ -1,5 +1,8 @@
 
-2009-07-19  K. Piche  <kevin@archlinux.org>
+2010-07-16  kevin  <kevin@archlinux.org>
+	* dhcp 4.2.0-1
+
+2009-07-19  kevin  <kevin@archlinux.org>
 	* dhcp 4.1.0.p1-1
 	* Adopted RedHat patch to fix bug where dhcpd won't start if ipv6 module
 	  is not loaded.  Fixes FS#12792.
diff --git a/abs/core/dhcp/PKGBUILD b/abs/core/dhcp/PKGBUILD
index db15ac3..af4e49a 100644
--- a/abs/core/dhcp/PKGBUILD
+++ b/abs/core/dhcp/PKGBUILD
@@ -1,39 +1,77 @@
-# $Id: PKGBUILD 46754 2009-07-20 03:16:44Z kevin $
+# $Id: PKGBUILD 85736 2010-07-19 02:41:06Z kevin $
 # Maintainer: judd <jvinet@zeroflux.org>
-pkgname=dhcp
+pkgbase=dhcp
+pkgname=('dhcp'
+         'dhclient')
 # separate patch levels with a period to maintain proper versioning.
-pkgver=4.1.0.p1
-_pkgver=4.1.0p1
+pkgver=4.2.0
+_pkgver=4.2.0
 pkgrel=1
-pkgdesc="A DHCP server, client, and relay agent"
-arch=(i686 x86_64)
+arch=('i686' 'x86_64')
 license=('custom:isc-dhcp')
 url="https://www.isc.org/software/dhcp"
-depends=('openssl>=0.9.8a')
-backup=('etc/dhcpd.conf' 'etc/conf.d/dhcp')
-install=dhcp.install
 source=(http://ftp.isc.org/isc/${pkgname}/${pkgname}-${_pkgver}.tar.gz
-dhcpd dhcp.conf.d dhcp-4.1.0-missing-ipv6-not-fatal.patch)
+dhcpd dhcp.conf.d dhcp-4.1.1-missing-ipv6-not-fatal.patch dhclient-script-pathFixes.patch)
+md5sums=('83abd7c4f9c24d8dd024ca5a71380c0a'
+         'df22cffa7d7415ece7bb025b7bf774dd'
+         '49da3192e5c885e3c7d02f447c2dea5e'
+         'fd64aeb4f399dcc41ea43089a3811094'
+         'ddcc5cd576ec631ade6c4da21952b50b')
 
 build() {
   cd ${srcdir}/${pkgname}-${_pkgver}
   # Define _GNU_SOURCE to fix IPV6.
   sed '/^CFLAGS="$CFLAGS/ s/INGS"/INGS -D_GNU_SOURCE"/' -i configure
   # Make not having ipv6 non-fatal.
-  patch -Np1 -i ${srcdir}/dhcp-4.1.0-missing-ipv6-not-fatal.patch
+  patch -Np0 -i ${srcdir}/dhcp-4.1.1-missing-ipv6-not-fatal.patch
   ./configure --prefix=/usr --sysconfdir=/etc \
       --with-srv-lease-file=/var/state/dhcp/dhcpd.leases \
       --with-srv6-lease-file=/var/state/dhcp/dhcpd6.leases
   make || return 1
-  make DESTDIR=${pkgdir} install
+}
 
+package_dhcp(){
+  pkgdesc="A DHCP server, client, and relay agent"
+  depends=('openssl>=0.9.8a')
+  backup=('etc/dhcpd.conf' 'etc/conf.d/dhcp')
+  install=dhcp.install
+  
+  cd ${srcdir}/${pkgname}-${_pkgver}
+  make DESTDIR=${pkgdir} install
   install -D -m755 ${srcdir}/dhcpd ${pkgdir}/etc/rc.d/dhcpd
-  install -D -m644 ${srcdir}/dhcp.conf.d ${pkgdir}/etc/conf.d/${pkgname}
+  install -D -m644 ${srcdir}/dhcp.conf.d ${pkgdir}/etc/conf.d/${pkgbase}
   mkdir -p ${pkgdir}/var/state/dhcp
   rm -f ${pkgdir}/etc/dhclient.conf
   rm -f ${pkgdir}/usr/sbin/dhclient
   rm -f ${pkgdir}/usr/share/man/man{5,8}/dhclient*
+  
   # install licenses
-  install -m644 -D ${srcdir}/${pkgname}-${_pkgver}/LICENSE \
+  install -m644 -D ${srcdir}/${pkgbase}-${_pkgver}/LICENSE \
                    ${pkgdir}/usr/share/licenses/dhcp/LICENSE
 }
+
+package_dhclient(){
+  
+  pkgdesc="dhclient is standalone client from the dhcp package"
+  depends=('bash')
+
+  cd ${srcdir}/${pkgname}-${_pkgver}/client/scripts
+  patch -Np1 -i ${srcdir}/dhclient-script-pathFixes.patch linux || return 1
+  cd ${srcdir}/${pkgname}-${_pkgver}/client
+  make DESTDIR=${pkgdir} install
+  install -m755 -d ${startdir}/pkg/var/lib/dhclient
+
+  #not needed after fresh install
+  rm -f ${pkgdir}/var/lib/dhclient/dhcpd.leases
+
+  #move dhclient.conf to dhclient.conf.example
+  mv ${pkgdir}/etc/dhclient.conf ${pkgdir}/etc/dhclient.conf.example
+
+  # install dhclient linux script
+  mkdir ${pkgdir}/sbin
+  install -m755 -D ${srcdir}/${pkgname}-${_pkgver}/client/scripts/linux \
+                   ${pkgdir}/sbin/dhclient-script
+  # install licenses
+  install -m644 -D ${srcdir}/${pkgname}-${_pkgver}/LICENSE \
+                   ${pkgdir}/usr/share/licenses/dhclient/LICENSE
+}
diff --git a/abs/core/dhcp/dhclient-script-pathFixes.patch b/abs/core/dhcp/dhclient-script-pathFixes.patch
new file mode 100644
index 0000000..e19c328
--- /dev/null
+++ b/abs/core/dhcp/dhclient-script-pathFixes.patch
@@ -0,0 +1,118 @@
+--- linux	2009-04-21 16:21:09.000000000 +0200
++++ linux_new	2010-06-30 19:06:20.000000000 +0200
+@@ -23,7 +23,7 @@
+ # of the $1 in its args.
+ 
+ # 'ip' just looks too weird.  /sbin/ip looks less weird.
+-ip=/sbin/ip
++ip=/usr/sbin/ip
+ 
+ make_resolv_conf() {
+   if [ x"$new_domain_name_servers" != x ]; then
+@@ -112,9 +112,9 @@
+ if [ x$reason = xPREINIT ]; then
+   if [ x$alias_ip_address != x ]; then
+     # Bring down alias interface. Its routes will disappear too.
+-    ifconfig $interface:0- inet 0
++    /sbin/ifconfig $interface:0- inet 0
+   fi
+-  ifconfig $interface 0 up
++  /sbin/ifconfig $interface 0 up
+ 
+   # We need to give the kernel some time to get the interface up.
+   sleep 1
+@@ -141,32 +141,32 @@
+   if [ x$old_ip_address != x ] && [ x$alias_ip_address != x ] && \
+ 		[ x$alias_ip_address != x$old_ip_address ]; then
+     # Possible new alias. Remove old alias.
+-    ifconfig $interface:0- inet 0
++    /sbin/ifconfig $interface:0- inet 0
+   fi
+   if [ x$old_ip_address != x ] && [ x$old_ip_address != x$new_ip_address ]; then
+     # IP address changed. Bringing down the interface will delete all routes,
+     # and clear the ARP cache.
+-    ifconfig $interface inet 0 down
++    /sbin/ifconfig $interface inet 0 down
+ 
+   fi
+   if [ x$old_ip_address = x ] || [ x$old_ip_address != x$new_ip_address ] || \
+      [ x$reason = xBOUND ] || [ x$reason = xREBOOT ]; then
+ 
+-    ifconfig $interface inet $new_ip_address $new_subnet_arg \
++    /sbin/ifconfig $interface inet $new_ip_address $new_subnet_arg \
+ 					$new_broadcast_arg $mtu_arg
+     # Add a network route to the computed network address.
+     for router in $new_routers; do
+       if [ "x$new_subnet_mask" = "x255.255.255.255" ] ; then
+-	route add -host $router dev $interface
++	/sbin/route add -host $router dev $interface
+       fi
+-      route add default gw $router $metric_arg dev $interface
++      /sbin/route add default gw $router $metric_arg dev $interface
+     done
+   fi
+   if [ x$new_ip_address != x$alias_ip_address ] && [ x$alias_ip_address != x ];
+    then
+-    ifconfig $interface:0- inet 0
+-    ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
+-    route add -host $alias_ip_address $interface:0
++    /sbin/ifconfig $interface:0- inet 0
++    /sbin/ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
++    /sbin/route add -host $alias_ip_address $interface:0
+   fi
+   make_resolv_conf
+   exit_with_hooks 0
+@@ -176,42 +176,42 @@
+    || [ x$reason = xSTOP ]; then
+   if [ x$alias_ip_address != x ]; then
+     # Turn off alias interface.
+-    ifconfig $interface:0- inet 0
++    /sbin/ifconfig $interface:0- inet 0
+   fi
+   if [ x$old_ip_address != x ]; then
+     # Shut down interface, which will delete routes and clear arp cache.
+-    ifconfig $interface inet 0 down
++    /sbin/ifconfig $interface inet 0 down
+   fi
+   if [ x$alias_ip_address != x ]; then
+-    ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
+-    route add -host $alias_ip_address $interface:0
++    /sbin/ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
++    /sbin/route add -host $alias_ip_address $interface:0
+   fi
+   exit_with_hooks 0
+ fi
+ 
+ if [ x$reason = xTIMEOUT ]; then
+   if [ x$alias_ip_address != x ]; then
+-    ifconfig $interface:0- inet 0
++    /sbin/ifconfig $interface:0- inet 0
+   fi
+-  ifconfig $interface inet $new_ip_address $new_subnet_arg \
++  /sbin/ifconfig $interface inet $new_ip_address $new_subnet_arg \
+ 					$new_broadcast_arg $mtu_arg
+   set $new_routers
+   if ping -q -c 1 $1; then
+     if [ x$new_ip_address != x$alias_ip_address ] && \
+ 			[ x$alias_ip_address != x ]; then
+-      ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
+-      route add -host $alias_ip_address dev $interface:0
++      /sbin/ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
++      /sbin/route add -host $alias_ip_address dev $interface:0
+     fi
+     for router in $new_routers; do
+       if [ "x$new_subnet_mask" = "x255.255.255.255" ] ; then
+-	route add -host $router dev $interface
++	/sbin/route add -host $router dev $interface
+       fi
+-      route add default gw $router $metric_arg dev $interface
++      /sbin/route add default gw $router $metric_arg dev $interface
+     done
+     make_resolv_conf
+     exit_with_hooks 0
+   fi
+-  ifconfig $interface inet 0 down
++  /sbin/ifconfig $interface inet 0 down
+   exit_with_hooks 1
+ fi
+ 
diff --git a/abs/core/dhcp/dhcp-4.1.1-missing-ipv6-not-fatal.patch b/abs/core/dhcp/dhcp-4.1.1-missing-ipv6-not-fatal.patch
new file mode 100644
index 0000000..cc5ddb8
--- /dev/null
+++ b/abs/core/dhcp/dhcp-4.1.1-missing-ipv6-not-fatal.patch
@@ -0,0 +1,39 @@
+--- common/discover.c	2009-09-29 21:44:49.000000000 +0200
++++ common/discover.c_new	2010-06-30 19:40:02.000000000 +0200
+@@ -443,7 +443,7 @@
+ 	}
+ 
+ #ifdef DHCPv6
+-	if (local_family == AF_INET6) {
++	if ((local_family == AF_INET6) && !access("/proc/net/if_inet6", R_OK)) {
+ 		ifaces->fp6 = fopen("/proc/net/if_inet6", "r");
+ 		if (ifaces->fp6 == NULL) {
+ 			log_error("Error opening '/proc/net/if_inet6' to "
+@@ -454,6 +454,8 @@
+ 			ifaces->fp = NULL;
+ 			return 0;
+ 		}
++	} else {
++		ifaces->fp6 = NULL;
+ 	}
+ #endif
+ 
+@@ -721,7 +723,7 @@
+ 		return 1;
+ 	}
+ #ifdef DHCPv6
+-	if (!(*err)) {
++	if (!(*err) && ifaces->fp6) {
+ 		if (local_family == AF_INET6)
+ 			return next_iface6(info, err, ifaces);
+ 	}
+@@ -740,7 +742,8 @@
+ 	ifaces->sock = -1;
+ #ifdef DHCPv6
+ 	if (local_family == AF_INET6) {
+-		fclose(ifaces->fp6);
++		if(ifaces->fp6)
++			fclose(ifaces->fp6);
+ 		ifaces->fp6 = NULL;
+ 	}
+ #endif
diff --git a/abs/core/dhcp/dhcp.install b/abs/core/dhcp/dhcp.install
index edb84b1..c0ad39e 100644
--- a/abs/core/dhcp/dhcp.install
+++ b/abs/core/dhcp/dhcp.install
@@ -1,7 +1,7 @@
 # arg 1:  the new package version
 post_install() {
   [ -f var/state/dhcp/dhcpd.leases ] || : >var/state/dhcp/dhcpd.leases
-  echo "If dhcpd doesn' start ensure the ipv6 kernel module is loaded."
+  #echo "If dhcpd doesn't start, ensure the ipv6 kernel module is loaded."
 }
 
 # arg 1:  the new package version
@@ -9,7 +9,3 @@ post_install() {
 post_upgrade() {
   post_install $1
 }
-
-op=$1
-shift
-$op $*
-- 
cgit v0.12