ssahani / rpms / dhcp

Forked from rpms/dhcp 6 years ago
Clone
d3e04df
diff -up dhcp-4.1.1/common/discover.c.noipv6 dhcp-4.1.1/common/discover.c
d3e04df
--- dhcp-4.1.1/common/discover.c.noipv6	2010-01-20 17:24:40.000000000 +0100
d3e04df
+++ dhcp-4.1.1/common/discover.c	2010-01-20 17:24:40.000000000 +0100
d3e04df
@@ -443,7 +443,7 @@ begin_iface_scan(struct iface_conf_list 
d3e04df
 	}
d3e04df
 
d3e04df
 #ifdef DHCPv6
d3e04df
-	if (local_family == AF_INET6) {
d3e04df
+	if ((local_family == AF_INET6) && !access("/proc/net/if_inet6", R_OK)) {
d3e04df
 		ifaces->fp6 = fopen("/proc/net/if_inet6", "re");
d3e04df
 		if (ifaces->fp6 == NULL) {
d3e04df
 			log_error("Error opening '/proc/net/if_inet6' to "
d3e04df
@@ -454,6 +454,8 @@ begin_iface_scan(struct iface_conf_list 
d3e04df
 			ifaces->fp = NULL;
d3e04df
 			return 0;
d3e04df
 		}
d3e04df
+	} else {
d3e04df
+		ifaces->fp6 = NULL;
d3e04df
 	}
d3e04df
 #endif
d3e04df
 
d3e04df
@@ -721,7 +723,7 @@ next_iface(struct iface_info *info, int 
d3e04df
 		return 1;
d3e04df
 	}
d3e04df
 #ifdef DHCPv6
d3e04df
-	if (!(*err)) {
d3e04df
+	if (!(*err) && ifaces->fp6) {
d3e04df
 		if (local_family == AF_INET6)
d3e04df
 			return next_iface6(info, err, ifaces);
d3e04df
 	}
d3e04df
@@ -740,7 +742,8 @@ end_iface_scan(struct iface_conf_list *i
d3e04df
 	ifaces->sock = -1;
d3e04df
 #ifdef DHCPv6
d3e04df
 	if (local_family == AF_INET6) {
d3e04df
-		fclose(ifaces->fp6);
d3e04df
+		if (ifaces->fp6)
d3e04df
+			fclose(ifaces->fp6);
d3e04df
 		ifaces->fp6 = NULL;
d3e04df
 	}
d3e04df
 #endif