diff options
Diffstat (limited to 'source3/lib')
-rw-r--r-- | source3/lib/interfaces.c | 48 |
1 files changed, 25 insertions, 23 deletions
diff --git a/source3/lib/interfaces.c b/source3/lib/interfaces.c index dc30bdce47..c48a8d4d36 100644 --- a/source3/lib/interfaces.c +++ b/source3/lib/interfaces.c @@ -30,27 +30,21 @@ */ +#ifndef AUTOCONF_TEST +#include "config.h" +#endif + #include <unistd.h> #include <stdio.h> #include <sys/types.h> -#include <sys/socket.h> -#include <netinet/in.h> -#include <arpa/inet.h> +#include <netdb.h> +#include <sys/ioctl.h> #include <netdb.h> #include <sys/ioctl.h> #include <sys/time.h> -#include <net/if.h> - -#ifdef AUTOCONF_TEST -struct iface_struct { - char name[16]; - struct in_addr ip; - struct in_addr netmask; -}; -#else -#include "config.h" -#include "interfaces.h" -#endif +#include <sys/socket.h> +#include <netinet/in.h> +#include <arpa/inet.h> #ifdef HAVE_SYS_TIME_H #include <sys/time.h> @@ -82,6 +76,12 @@ struct iface_struct { #define QSORT_CAST (int (*)(const void *, const void *)) #endif +#ifdef HAVE_NET_IF_H +#include <net/if.h> +#endif + +#include "interfaces.h" + #if HAVE_IFACE_IFCONF /* this works for Linux 2.2, Solaris 2.5, SunOS4, HPUX 10.20, OSF1 @@ -154,7 +154,9 @@ static int _get_interfaces(struct iface_struct *ifaces, int max_interfaces) return total; } -#elif HAVE_IFACE_IFREQ +#define _FOUND_IFACE_ANY +#endif /* HAVE_IFACE_IFCONF */ +#ifdef HAVE_IFACE_IFREQ #ifndef I_STR #include <sys/stropts.h> @@ -249,7 +251,9 @@ static int _get_interfaces(struct iface_struct *ifaces, int max_interfaces) return total; } -#elif HAVE_IFACE_AIX +#define _FOUND_IFACE_ANY +#endif /* HAVE_IFACE_IFREQ */ +#ifdef HAVE_IFACE_AIX /**************************************************************************** this one is for AIX (tested on 4.2) @@ -284,7 +288,7 @@ static int _get_interfaces(struct iface_struct *ifaces, int max_interfaces) i = ifc.ifc_len; while (i > 0 && total < max_interfaces) { - unsigned inc; + uint_t inc; inc = ifr->ifr_addr.sa_len; @@ -337,7 +341,9 @@ static int _get_interfaces(struct iface_struct *ifaces, int max_interfaces) return total; } -#else /* a dummy version */ +#define _FOUND_IFACE_ANY +#endif /* HAVE_IFACE_AIX */ +#ifndef _FOUND_IFACE_ANY static int _get_interfaces(struct iface_struct *ifaces, int max_interfaces) { return -1; @@ -358,8 +364,6 @@ static int iface_comp(struct iface_struct *i1, struct iface_struct *i2) /* this wrapper is used to remove duplicates from the interface list generated above */ -int get_interfaces(struct iface_struct *ifaces, int max_interfaces); - int get_interfaces(struct iface_struct *ifaces, int max_interfaces) { int total, i, j; @@ -388,8 +392,6 @@ int get_interfaces(struct iface_struct *ifaces, int max_interfaces) #ifdef AUTOCONF_TEST /* this is the autoconf driver to test get_interfaces() */ -#define MAX_INTERFACES 128 - int main() { struct iface_struct ifaces[MAX_INTERFACES]; |