Submitted By: Ken Moffat <ken at linuxfromscratch dot org>
Date: 2011-11-23
Initial Package Version: 4.2.2
Upstream Status: unknown
Origin: found at fedora
Description: Allow dhcp4 to work even if the kernel doesn't support ipv6.
Fixed up by hand to apply to 4.2.2 (to me, it looks identical to the 4.2.0
version, but patch failed in one hunk when I tried to apply that one).

--- dhcp-4.2.2/common/discover.c.orig	2011-07-19 23:22:48.000000000 +0100
+++ dhcp-4.2.2/common/discover.c	2011-09-06 01:28:15.000000000 +0100
@@ -455,7 +455,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 "
@@ -466,6 +466,8 @@
 			ifaces->fp = NULL;
 			return 0;
 		}
+	} else {
+		ifaces->fp6 = NULL;
 	}
 #endif
 
@@ -733,7 +735,7 @@
 		return 1;
 	}
 #ifdef DHCPv6
-	if (!(*err)) {
+	if (!(*err) && ifaces->fp6) {
 		if (local_family == AF_INET6)
 			return next_iface6(info, err, ifaces);
 	}
@@ -752,7 +754,8 @@
 	ifaces->sock = -1;
 #ifdef DHCPv6
 	if (local_family == AF_INET6) {
-		fclose(ifaces->fp6);
+		if (ifaces->fp6)
+			fclose(ifaces->fp6);
 		ifaces->fp6 = NULL;
 	}
 #endif