mirror of
https://abf.rosa.ru/djam/dhcp.git
synced 2025-02-23 21:42:48 +00:00
51 lines
1.5 KiB
Diff
51 lines
1.5 KiB
Diff
diff -p -up dhcp-4.1.1/common/discover.c.ipv6_not_fatal dhcp-4.1.1/common/discover.c
|
|
--- dhcp-4.1.1/common/discover.c.ipv6_not_fatal 2009-09-29 16:44:49.000000000 -0300
|
|
+++ dhcp-4.1.1/common/discover.c 2010-02-25 11:35:34.000000000 -0300
|
|
@@ -444,15 +444,19 @@ begin_iface_scan(struct iface_conf_list
|
|
|
|
#ifdef DHCPv6
|
|
if (local_family == AF_INET6) {
|
|
- ifaces->fp6 = fopen("/proc/net/if_inet6", "r");
|
|
- if (ifaces->fp6 == NULL) {
|
|
- log_error("Error opening '/proc/net/if_inet6' to "
|
|
- "list IPv6 interfaces; %m");
|
|
- close(ifaces->sock);
|
|
- ifaces->sock = -1;
|
|
- fclose(ifaces->fp);
|
|
- ifaces->fp = NULL;
|
|
- return 0;
|
|
+ if (!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 "
|
|
+ "list IPv6 interfaces; %m");
|
|
+ close(ifaces->sock);
|
|
+ ifaces->sock = -1;
|
|
+ fclose(ifaces->fp);
|
|
+ ifaces->fp = NULL;
|
|
+ return 0;
|
|
+ }
|
|
+ } else {
|
|
+ ifaces->fp6 = NULL;
|
|
}
|
|
}
|
|
#endif
|
|
@@ -721,7 +725,7 @@ next_iface(struct iface_info *info, int
|
|
return 1;
|
|
}
|
|
#ifdef DHCPv6
|
|
- if (!(*err)) {
|
|
+ if (!(*err) && ifaces->fp6) {
|
|
if (local_family == AF_INET6)
|
|
return next_iface6(info, err, ifaces);
|
|
}
|
|
@@ -740,7 +744,8 @@ end_iface_scan(struct iface_conf_list *i
|
|
ifaces->sock = -1;
|
|
#ifdef DHCPv6
|
|
if (local_family == AF_INET6) {
|
|
- fclose(ifaces->fp6);
|
|
+ if (ifaces->fp6)
|
|
+ fclose(ifaces->fp6);
|
|
ifaces->fp6 = NULL;
|
|
}
|
|
#endif
|