summaryrefslogtreecommitdiff
path: root/configure.in
diff options
context:
space:
mode:
authorJan Djärv <jan.h.d@swipnet.se>2011-08-13 12:48:03 +0200
committerJan Djärv <jan.h.d@swipnet.se>2011-08-13 12:48:03 +0200
commit377538cbcf8c1f0aab9b40ed2ff3df414904272f (patch)
tree9dfd855ba3e99732fd5d3f49096a5191c09233f3 /configure.in
parent1bca59fe757d359e3c36d3de1c8ec19ed90be49c (diff)
downloademacs-377538cbcf8c1f0aab9b40ed2ff3df414904272f.tar.gz
Fix network-interface-list|info on newer BSD derived OS:es.
* configure.in: Add header check: sys/socket.h, ifaddrs.h, net/if_dl.h. Check for getifaddrs and freeifaddrs. Check for sa_len in struct ifreq.ifr_addr (Bug#8477). * src/process.c: Include ifaddrs.h and net/if_dl.h if available (Bug#8477). (Fnetwork_interface_list): Allocate in increments of bytes instead of sizeof (struct ifreq). Iterate over ifconf.ifc_req by counting bytes (Bug#8477). Count bytes correctly when ifr_addr is a struct sockaddr. (struct ifflag_def): notrailers is smart on OSX. (Fnetwork_interface_info): Handle case when ifr_flags is negative. Get hardware address with getifaddrs if available.
Diffstat (limited to 'configure.in')
-rw-r--r--configure.in13
1 files changed, 12 insertions, 1 deletions
diff --git a/configure.in b/configure.in
index c0e5b3acbb5..cfb9dc8bab2 100644
--- a/configure.in
+++ b/configure.in
@@ -1299,10 +1299,20 @@ if test $emacs_cv_struct_exception != yes; then
AC_DEFINE(NO_MATHERR, 1, [Define to 1 if you don't have struct exception in math.h.])
fi
+AC_CHECK_HEADERS(sys/socket.h)
AC_CHECK_HEADERS(net/if.h, , , [AC_INCLUDES_DEFAULT
#if HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif])
+AC_CHECK_HEADERS(ifaddrs.h, , , [AC_INCLUDES_DEFAULT
+#if HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif])
+AC_CHECK_HEADERS(net/if_dl.h, , , [AC_INCLUDES_DEFAULT
+#if HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif])
+AC_CHECK_FUNCS(getifaddrs freeifaddrs)
dnl checks for structure members
AC_STRUCT_TM
@@ -1313,7 +1323,8 @@ AC_CHECK_MEMBER(struct tm.tm_gmtoff,
[#include <time.h>])
AC_CHECK_MEMBERS([struct ifreq.ifr_flags, struct ifreq.ifr_hwaddr,
struct ifreq.ifr_netmask, struct ifreq.ifr_broadaddr,
- struct ifreq.ifr_addr], , ,
+ struct ifreq.ifr_addr,
+ struct ifreq.ifr_addr.sa_len], , ,
[AC_INCLUDES_DEFAULT
#if HAVE_SYS_SOCKET_H
#include <sys/socket.h>