summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Hankins <dhankins@isc.org>2009-04-30 18:45:53 +0000
committerDavid Hankins <dhankins@isc.org>2009-04-30 18:45:53 +0000
commit5741146c3415171aed3b8461d8b4887178b9a66f (patch)
tree20e770fb94ff7d68b7897455d6b4eef06152b8b5
parentcff09d12186e4b82c254cdf6cf417941b5452d1d (diff)
downloadisc-dhcp-5741146c3415171aed3b8461d8b4887178b9a66f.tar.gz
- Compilation on Solaris with USE_SOCKETS defined in includes/site.h has
been repaired. Other USE_ overrides should work better. [ISC-Bugs #19434] - A check for the local flavor of IFNAMSIZ had a broken 'else' condition, that probably still resulted in the correct behaviour (but wouldn't use a larger defined value provided by the host OS). [ISC-Bugs #19434]
-rw-r--r--RELNOTES7
-rw-r--r--common/discover.c2
-rw-r--r--common/dlpi.c15
-rw-r--r--configure.ac7
-rw-r--r--includes/dhcpd.h3
-rw-r--r--includes/osdep.h12
-rw-r--r--includes/site.h2
7 files changed, 37 insertions, 11 deletions
diff --git a/RELNOTES b/RELNOTES
index 0c22bfef..16877c32 100644
--- a/RELNOTES
+++ b/RELNOTES
@@ -120,6 +120,13 @@ suggested fixes to <dhcp-users@isc.org>.
- Fixed failover reconnection retry code to continue to retry to reconnect
rather than restarting the listener.
+- Compilation on Solaris with USE_SOCKETS defined in includes/site.h has
+ been repaired. Other USE_ overrides should work better.
+
+- A check for the local flavor of IFNAMSIZ had a broken 'else' condition,
+ that probably still resulted in the correct behaviour (but wouldn't use
+ a larger defined value provided by the host OS).
+
Changes since 4.0.1rc1
- None.
diff --git a/common/discover.c b/common/discover.c
index d853cc3b..684cd822 100644
--- a/common/discover.c
+++ b/common/discover.c
@@ -184,7 +184,7 @@ isc_result_t interface_initialize (omapi_object_t *ipo,
#ifndef IF_NAMESIZE
# if defined(LIFNAMSIZ)
# define IF_NAMESIZE LIFNAMSIZ
-# elseif defined(IFNAMSIZ)
+# elif defined(IFNAMSIZ)
# define IF_NAMESIZE IFNAMSIZ
# else
# define IF_NAMESIZE 16
diff --git a/common/dlpi.c b/common/dlpi.c
index 07506f09..5fd6380f 100644
--- a/common/dlpi.c
+++ b/common/dlpi.c
@@ -87,7 +87,8 @@
#include "dhcpd.h"
-#if defined (USE_DLPI_SEND) || defined (USE_DLPI_RECEIVE)
+#if defined (USE_DLPI_SEND) || defined (USE_DLPI_RECEIVE) || \
+ defined(USE_DLPI_HWADDR)
# include <sys/ioctl.h>
# include <sys/time.h>
@@ -149,6 +150,10 @@ static int dlpiokack PROTO ((int fd, char *bufp));
static int dlpiinfoack PROTO ((int fd, char *bufp));
static int dlpiphysaddrack PROTO ((int fd, char *bufp));
static int dlpibindack PROTO ((int fd, char *bufp));
+#if defined(USE_DLPI_SEND) || defined(USE_DLPI_RECEIVE)
+/* These functions are not used if we're only sourcing the get_hw_addr()
+ * function (for USE_SOCKETS).
+ */
static int dlpiunitdatareq PROTO ((int fd, unsigned char *addr,
int addrlen, unsigned long minpri,
unsigned long maxpri, unsigned char *data,
@@ -161,7 +166,7 @@ static int dlpiunitdataind PROTO ((int fd,
unsigned long *grpaddr,
unsigned char *data,
int datalen));
-
+#endif /* !USE_DLPI_HWADDR: USE_DLPI_SEND || USE_DLPI_RECEIVE */
static int expected PROTO ((unsigned long prim, union DL_primitives *dlp,
int msgflags));
static int strgetmsg PROTO ((int fd, struct strbuf *ctlp,
@@ -1087,6 +1092,7 @@ int dlpiphysaddrack (fd, bufp)
return 0;
}
+#if defined(USE_DLPI_SEND) || defined(USE_DLPI_RECEIVE)
int dlpiunitdatareq (fd, addr, addrlen, minpri, maxpri, dbuf, dbuflen)
int fd;
unsigned char *addr;
@@ -1204,6 +1210,7 @@ static int dlpiunitdataind (fd, daddr, daddrlen,
return data.len;
}
+#endif /* !USE_DLPI_HWADDR: USE_DLPI_RECEIVE || USE_DLPI_SEND */
/*
* expected - see if we got what we wanted.
@@ -1295,6 +1302,7 @@ static int strgetmsg (fd, ctlp, datap, flagsp, caller)
return 0;
}
+#if defined(USE_DLPI_SEND)
int can_unicast_without_arp (ip)
struct interface_info *ip;
{
@@ -1328,6 +1336,7 @@ void maybe_setup_fallback ()
interface_dereference (&fbi, MDL);
}
}
+#endif /* USE_DLPI_SEND */
void
get_hw_addr(const char *name, struct hardware *hw) {
@@ -1411,4 +1420,4 @@ get_hw_addr(const char *name, struct hardware *hw) {
close(sock);
}
-#endif /* USE_DLPI */
+#endif /* USE_DLPI_SEND || USE_DLPI_RECEIVE || USE_DLPI_HWADDR */
diff --git a/configure.ac b/configure.ac
index 02ef69f2..65b70fc6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -164,24 +164,23 @@ AC_CHECK_HEADER(linux/filter.h, DO_LPF=1, ,
])
if test -n "$DO_LPF"
then
- AC_DEFINE([USE_LPF], [1],
+ AC_DEFINE([HAVE_LPF], [1],
[Define to 1 to use the Linux Packet Filter interface code.])
else
AC_CHECK_HEADER(sys/dlpi.h, DO_DLPI=1)
if test -n "$DO_DLPI"
then
- AC_DEFINE([USE_DLPI], [1],
+ AC_DEFINE([HAVE_DLPI], [1],
[Define to 1 to use DLPI interface code.])
else
AC_CHECK_HEADER(net/bpf.h, DO_BPF=1)
if test -n "$DO_BPF"
then
- AC_DEFINE([USE_BPF], [""],
+ AC_DEFINE([HAVE_BPF], [""],
[Define to 1 to use the
Berkeley Packet Filter interface code.])
fi
fi
-
fi
# SIOCGLIFCONF uses some transport structures. Trick is not all platforms
diff --git a/includes/dhcpd.h b/includes/dhcpd.h
index fb8c5516..5354afcc 100644
--- a/includes/dhcpd.h
+++ b/includes/dhcpd.h
@@ -1126,7 +1126,8 @@ struct interface_info {
/* Only used by DHCP client code. */
struct client_state *client;
-# if defined (USE_DLPI_SEND) || defined (USE_DLPI_RECEIVE)
+# if defined(USE_DLPI_SEND) || defined(USE_DLPI_RECEIVE) || \
+ defined(USE_DLPI_HWADDR)
int dlpi_sap_length;
struct hardware dlpi_broadcast_addr;
# endif /* DLPI_SEND || DLPI_RECEIVE */
diff --git a/includes/osdep.h b/includes/osdep.h
index c90fe714..aedadf89 100644
--- a/includes/osdep.h
+++ b/includes/osdep.h
@@ -83,7 +83,14 @@ typedef uint32_t u_int32_t;
!defined (USE_NIT_RECEIVE) && \
!defined (USE_DLPI_SEND) && \
!defined (USE_DLPI_RECEIVE)
-# define USE_DEFAULT_NETWORK
+/* Determine default socket API to USE. */
+# if defined(HAVE_BPF)
+# define USE_BPF 1
+# elif defined(HAVE_LPF)
+# define USE_LPF 1
+# elif defined(HAVE_DLPI)
+# define USE_DLPI 1
+# endif
#endif
#if !defined (TIME_MAX)
@@ -107,6 +114,9 @@ typedef uint32_t u_int32_t;
#ifdef USE_SOCKETS
# define USE_SOCKET_SEND
# define USE_SOCKET_RECEIVE
+# if defined(HAVE_DLPI)
+# define USE_DLPI_HWADDR
+# endif
#endif
#ifdef USE_RAW_SOCKETS
diff --git a/includes/site.h b/includes/site.h
index 6d3001b3..8312b695 100644
--- a/includes/site.h
+++ b/includes/site.h
@@ -133,7 +133,7 @@
you don't choose, one will be chosen for you in your system's config
header. DON'T MESS WITH THIS UNLESS YOU KNOW WHAT YOU'RE DOING!!! */
-/* Define this to use the standard BSD socket API.
+/* Define USE_SOCKETS to use the standard BSD socket API.
On many systems, the BSD socket API does not provide the ability to
send packets to the 255.255.255.255 broadcast address, which can