1fa168b59e6162c4c7566a101b7ff2a1839b7dba
[jelmer/samba4-debian.git] / source / lib / replace / getifaddrs.m4
1 AC_CHECK_HEADERS([ifaddrs.h])
2
3 dnl Used when getifaddrs is not available
4 AC_CHECK_MEMBERS([struct sockaddr.sa_len], 
5          [AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Whether struct sockaddr has a sa_len member])],
6          [],
7          [#include <sys/socket.h>])
8
9 dnl test for getifaddrs and freeifaddrs
10 AC_CACHE_CHECK([for getifaddrs and freeifaddrs],libreplace_cv_HAVE_GETIFADDRS,[
11 AC_TRY_COMPILE([
12 #include <sys/types.h>
13 #if STDC_HEADERS
14 #include <stdlib.h>
15 #include <stddef.h>
16 #endif
17 #include <sys/socket.h>
18 #include <netinet/in.h>
19 #include <arpa/inet.h>
20 #include <ifaddrs.h>
21 #include <netdb.h>],
22 [
23 struct ifaddrs *ifp = NULL;
24 int ret = getifaddrs (&ifp);
25 freeifaddrs(ifp);
26 ],
27 libreplace_cv_HAVE_GETIFADDRS=yes,libreplace_cv_HAVE_GETIFADDRS=no)])
28 if test x"$libreplace_cv_HAVE_GETIFADDRS" = x"yes"; then
29     AC_DEFINE(HAVE_GETIFADDRS,1,[Whether the system has getifaddrs])
30     AC_DEFINE(HAVE_FREEIFADDRS,1,[Whether the system has freeifaddrs])
31         AC_DEFINE(HAVE_STRUCT_IFADDRS,1,[Whether struct ifaddrs is available])
32 fi
33
34 ##################
35 # look for a method of finding the list of network interfaces
36 #
37 # This tests need LIBS="$NSL_LIBS $SOCKET_LIBS"
38 #
39 old_LIBS=$LIBS
40 LIBS="$NSL_LIBS $SOCKET_LIBS"
41 iface=no;
42 ##################
43 # look for a method of finding the list of network interfaces
44 iface=no;
45 AC_CACHE_CHECK([for iface getifaddrs],libreplace_cv_HAVE_IFACE_GETIFADDRS,[
46 AC_TRY_RUN([
47 #define HAVE_IFACE_GETIFADDRS 1
48 #define NO_CONFIG_H 1
49 #define AUTOCONF_TEST 1
50 #define SOCKET_WRAPPER_NOT_REPLACE
51 #include "$libreplacedir/replace.c"
52 #include "$libreplacedir/inet_ntop.c"
53 #include "$libreplacedir/getifaddrs.c"
54 #define getifaddrs_test main
55 #include "$libreplacedir/test/getifaddrs.c"],
56            libreplace_cv_HAVE_IFACE_GETIFADDRS=yes,libreplace_cv_HAVE_IFACE_GETIFADDRS=no,libreplace_cv_HAVE_IFACE_GETIFADDRS=cross)])
57 if test x"$libreplace_cv_HAVE_IFACE_GETIFADDRS" = x"yes"; then
58     iface=yes;AC_DEFINE(HAVE_IFACE_GETIFADDRS,1,[Whether iface getifaddrs is available])
59 else
60         LIBREPLACEOBJ="${LIBREPLACEOBJ} getifaddrs.o"
61 fi
62
63
64 if test $iface = no; then
65 AC_CACHE_CHECK([for iface AIX],libreplace_cv_HAVE_IFACE_AIX,[
66 AC_TRY_RUN([
67 #define HAVE_IFACE_AIX 1
68 #define NO_CONFIG_H 1
69 #define AUTOCONF_TEST 1
70 #undef _XOPEN_SOURCE_EXTENDED
71 #define SOCKET_WRAPPER_NOT_REPLACE
72 #include "$libreplacedir/replace.c"
73 #include "$libreplacedir/inet_ntop.c"
74 #include "$libreplacedir/getifaddrs.c"
75 #define getifaddrs_test main
76 #include "$libreplacedir/test/getifaddrs.c"],
77            libreplace_cv_HAVE_IFACE_AIX=yes,libreplace_cv_HAVE_IFACE_AIX=no,libreplace_cv_HAVE_IFACE_AIX=cross)])
78 if test x"$libreplace_cv_HAVE_IFACE_AIX" = x"yes"; then
79     iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
80         old_LIBS="$old_LIBS $LIBS"
81 fi
82 fi
83
84
85 if test $iface = no; then
86 AC_CACHE_CHECK([for iface ifconf],libreplace_cv_HAVE_IFACE_IFCONF,[
87 AC_TRY_RUN([
88 #define HAVE_IFACE_IFCONF 1
89 #define NO_CONFIG_H 1
90 #define AUTOCONF_TEST 1
91 #define SOCKET_WRAPPER_NOT_REPLACE
92 #include "$libreplacedir/replace.c"
93 #include "$libreplacedir/inet_ntop.c"
94 #include "$libreplacedir/getifaddrs.c"
95 #define getifaddrs_test main
96 #include "$libreplacedir/test/getifaddrs.c"],
97            libreplace_cv_HAVE_IFACE_IFCONF=yes,libreplace_cv_HAVE_IFACE_IFCONF=no,libreplace_cv_HAVE_IFACE_IFCONF=cross)])
98 if test x"$libreplace_cv_HAVE_IFACE_IFCONF" = x"yes"; then
99     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
100         old_LIBS="$old_LIBS $LIBS"
101 fi
102 fi
103
104 if test $iface = no; then
105 AC_CACHE_CHECK([for iface ifreq],libreplace_cv_HAVE_IFACE_IFREQ,[
106 AC_TRY_RUN([
107 #define HAVE_IFACE_IFREQ 1
108 #define NO_CONFIG_H 1
109 #define AUTOCONF_TEST 1
110 #define SOCKET_WRAPPER_NOT_REPLACE
111 #include "$libreplacedir/replace.c"
112 #include "$libreplacedir/inet_ntop.c"
113 #include "$libreplacedir/getifaddrs.c"
114 #define getifaddrs_test main
115 #include "$libreplacedir/test/getifaddrs.c"],
116            libreplace_cv_HAVE_IFACE_IFREQ=yes,libreplace_cv_HAVE_IFACE_IFREQ=no,libreplace_cv_HAVE_IFACE_IFREQ=cross)])
117 if test x"$libreplace_cv_HAVE_IFACE_IFREQ" = x"yes"; then
118     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
119         old_LIBS="$old_LIBS $LIBS"
120 fi
121 fi
122
123 LIBS=$old_LIBS