mirror of
https://github.com/samba-team/samba.git
synced 2024-12-24 21:34:56 +03:00
r18687: sync the lib/interfaces.c with lib/socket/netif.c from samba4
to hopefully fix the build on HPUX and Tru64
metze
(This used to be commit aa8222c6a7
)
This commit is contained in:
parent
3c222089ed
commit
387a8ed33e
@ -2757,24 +2757,29 @@ fi
|
||||
# look for a method of finding the list of network interfaces
|
||||
iface=no;
|
||||
AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
|
||||
SAVE_CPPFLAGS="$CPPFLAGS"
|
||||
CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
|
||||
AC_TRY_RUN([
|
||||
#define HAVE_IFACE_AIX 1
|
||||
#define AUTOCONF_TEST 1
|
||||
#include "confdefs.h"
|
||||
#undef _XOPEN_SOURCE_EXTENDED
|
||||
#include "${srcdir-.}/lib/interfaces.c"],
|
||||
samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
|
||||
CPPFLAGS="$SAVE_CPPFLAGS"
|
||||
if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
|
||||
iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
|
||||
fi
|
||||
|
||||
if test $iface = no; then
|
||||
AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
|
||||
SAVE_CPPFLAGS="$CPPFLAGS"
|
||||
CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
|
||||
AC_TRY_RUN([
|
||||
#define HAVE_IFACE_IFCONF 1
|
||||
#define AUTOCONF_TEST 1
|
||||
#include "confdefs.h"
|
||||
#include "${srcdir-.}/lib/interfaces.c"],
|
||||
samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
|
||||
CPPFLAGS="$SAVE_CPPFLAGS"
|
||||
if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
|
||||
iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
|
||||
fi
|
||||
@ -2782,12 +2787,14 @@ fi
|
||||
|
||||
if test $iface = no; then
|
||||
AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
|
||||
SAVE_CPPFLAGS="$CPPFLAGS"
|
||||
CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
|
||||
AC_TRY_RUN([
|
||||
#define HAVE_IFACE_IFREQ 1
|
||||
#define AUTOCONF_TEST 1
|
||||
#include "confdefs.h"
|
||||
#include "${srcdir-.}/lib/interfaces.c"],
|
||||
samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
|
||||
CPPFLAGS="$SAVE_CPPFLAGS"
|
||||
if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
|
||||
iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
|
||||
fi
|
||||
|
@ -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];
|
||||
|
Loading…
Reference in New Issue
Block a user