- Duplicate dhclient-script updates for DHCPv6 to all provided scripts.
+- DHCPv4 I/O methods that failed to sense hardware address were corrected.
+
+- DHCPv4 is now the default (as documented) rather than DHCPv6. The default
+ was set to DHCPv6 to facilitate ease early development, and forgotten.
+
+- Corrected a segmentation violation in DHCPv4 socket processing.
+
Changes since 3.1.0 (NEW FEATURES)
- DHCPv6 Client and Server protocol support. Use '-6' to run the daemons
#ifndef lint
static char copyright[] =
-"$Id: bpf.c,v 1.52 2007/05/16 22:27:34 shane Exp $ Copyright (c) 2004 Internet Systems Consortium. All rights reserved.\n";
+"$Id: bpf.c,v 1.53 2007/05/18 17:21:46 dhankins Exp $ Copyright (c) 2004 Internet Systems Consortium. All rights reserved.\n";
#endif /* not lint */
#include "dhcpd.h"
log_fatal ("Can't attach interface %s to bpf device %s: %m",
info -> name, filename);
+ get_hw_addr(info->name, &info->hw_address);
+
return sock;
}
#endif /* USE_BPF_SEND || USE_BPF_RECEIVE */
#ifndef lint
static char copyright[] =
-"$Id: discover.c,v 1.54 2007/05/16 22:27:34 shane Exp $ Copyright (c) 2004-2006 Internet Systems Consortium. All rights reserved.\n";
+"$Id: discover.c,v 1.55 2007/05/18 17:21:46 dhankins Exp $ Copyright (c) 2004-2006 Internet Systems Consortium. All rights reserved.\n";
#endif /* not lint */
#include "dhcpd.h"
struct in_addr limited_broadcast;
-int local_family = AF_INET6;
+int local_family = AF_INET;
struct in_addr local_address;
struct in6_addr local_address6;
end_iface_scan(&ifaces);
+ /* Mock-up an 'ifp' structure which is no longer used in the
+ * new interface-sensing code, but is used in higher layers
+ * (for example to sense fallback interfaces).
+ */
+ for (tmp = interfaces ; tmp != NULL ; tmp = tmp->next) {
+ if (tmp->ifp == NULL) {
+ struct ifreq *tif;
+
+ tif = (struct ifreq *)dmalloc(sizeof(struct ifreq),
+ MDL);
+ if (tif == NULL)
+ log_fatal("no space for ifp mockup.");
+ strcpy(tif->ifr_name, tmp->name);
+ tmp->ifp = tif;
+ }
+ }
+
+
/* Now cycle through all the interfaces we found, looking for
hardware addresses. */
/* XXX: The dlpi interface code will get this information in Solaris */
#ifndef lint
static char copyright[] =
-"$Id: dlpi.c,v 1.31 2007/05/08 23:05:20 dhankins Exp $ Copyright (c) 2004 Internet Systems Consortium. All rights reserved.\n";
+"$Id: dlpi.c,v 1.32 2007/05/18 17:21:46 dhankins Exp $ Copyright (c) 2004 Internet Systems Consortium. All rights reserved.\n";
#endif /* not lint */
#include "dhcpd.h"
}
#endif
+ get_hw_addr(info->name, &info->hw_address);
+
return sock;
}
#ifndef lint
static char copyright[] =
-"$Id: lpf.c,v 1.33 2007/05/16 22:27:34 shane Exp $ Copyright (c) 2004 Internet Systems Consortium. All rights reserved.\n";
+"$Id: lpf.c,v 1.34 2007/05/18 17:21:46 dhankins Exp $ Copyright (c) 2004 Internet Systems Consortium. All rights reserved.\n";
#endif /* not lint */
#include "dhcpd.h"
log_fatal ("Bind socket to interface: %m");
}
+ get_hw_addr(info->name, &info->hw_address);
+
return sock;
}
#endif /* USE_LPF_SEND || USE_LPF_RECEIVE */
#ifndef lint
static char copyright[] =
-"$Id: socket.c,v 1.63 2007/05/17 18:27:11 dhankins Exp $ "
+"$Id: socket.c,v 1.64 2007/05/18 17:21:46 dhankins Exp $ "
"Copyright (c) 2004-2006 Internet Systems Consortium.\n";
#endif /* not lint */
}
}
+ get_hw_addr(info->name, &info->hw_address);
+
return sock;
}
#endif /* USE_SOCKET_SEND || USE_SOCKET_RECEIVE || USE_SOCKET_FALLBACK */
if_register6(struct interface_info *info, int do_multicast) {
info->rfdesc = if_register_socket(info, AF_INET6, do_multicast);
info->wfdesc = info->rfdesc;
- get_hw_addr(info->name, &info->hw_address);
if (!quiet_interface_discovery) {
if (info->shared_network != NULL) {
log_info("Listening on Socket/%s/%s", info->name,