Make configure script check if ioctl with the SIOCGIFADDR command can be
authorYang Tse <yangsita@gmail.com>
Mon, 17 Nov 2008 13:13:15 +0000 (13:13 +0000)
committerYang Tse <yangsita@gmail.com>
Mon, 17 Nov 2008 13:13:15 +0000 (13:13 +0000)
used, and define HAVE_IOCTL_SIOCGIFADDR if appropriate.

CHANGES
ares/m4/cares-functions.m4
m4/curl-functions.m4

diff --git a/CHANGES b/CHANGES
index f50e92d..a2edf54 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -10,6 +10,9 @@ Yang Tse (17 Nov 2008)
 - Fix a remaining problem in the inet_pton() runtime configure check. And
   fix internal Curl_inet_pton() failures to reject certain malformed literals.
 
+- Make configure script check if ioctl with the SIOCGIFADDR command can be
+  used, and define HAVE_IOCTL_SIOCGIFADDR if appropriate.
+
 Daniel Stenberg (16 Nov 2008)
 - Christian Krause fixed a build failure when building with gss support
   enabled and FTP disabled.
index 245e93b..bfc2c0b 100644 (file)
@@ -16,7 +16,7 @@
 #***************************************************************************
 
 # File version for 'aclocal' use. Keep it a single number.
-# serial 24
+# serial 25
 
 
 dnl CARES_INCLUDES_ARPA_INET
@@ -1291,6 +1291,7 @@ AC_DEFUN([CARES_CHECK_FUNC_IOCTL], [
       [Define to 1 if you have the ioctl function.])
     ac_cv_func_ioctl="yes"
     CARES_CHECK_FUNC_IOCTL_FIONBIO
+    CARES_CHECK_FUNC_IOCTL_SIOCGIFADDR
   else
     AC_MSG_RESULT([no])
     ac_cv_func_ioctl="no"
@@ -1354,6 +1355,61 @@ AC_DEFUN([CARES_CHECK_FUNC_IOCTL_FIONBIO], [
 ])
 
 
+dnl CARES_CHECK_FUNC_IOCTL_SIOCGIFADDR
+dnl -------------------------------------------------
+dnl Verify if ioctl with the SIOCGIFADDR command is
+dnl available, can be compiled, and seems to work. If
+dnl all of these are true, then HAVE_IOCTL_SIOCGIFADDR
+dnl will be defined.
+
+AC_DEFUN([CARES_CHECK_FUNC_IOCTL_SIOCGIFADDR], [
+  #
+  tst_compi_ioctl_siocgifaddr="unknown"
+  tst_allow_ioctl_siocgifaddr="unknown"
+  #
+  if test "$ac_cv_func_ioctl" = "yes"; then
+    AC_MSG_CHECKING([if ioctl SIOCGIFADDR is compilable])
+    AC_COMPILE_IFELSE([
+      AC_LANG_PROGRAM([[
+        $cares_includes_stropts
+      ]],[[
+        if(0 != ioctl(0, SIOCGIFADDR, 0))
+          return 1;
+      ]])
+    ],[
+      AC_MSG_RESULT([yes])
+      tst_compi_ioctl_siocgifaddr="yes"
+    ],[
+      AC_MSG_RESULT([no])
+      tst_compi_ioctl_siocgifaddr="no"
+    ])
+  fi
+  #
+  if test "$tst_compi_ioctl_siocgifaddr" = "yes"; then
+    AC_MSG_CHECKING([if ioctl SIOCGIFADDR usage allowed])
+    if test "x$cares_disallow_ioctl_siocgifaddr" != "xyes"; then
+      AC_MSG_RESULT([yes])
+      tst_allow_ioctl_siocgifaddr="yes"
+    else
+      AC_MSG_RESULT([no])
+      tst_allow_ioctl_siocgifaddr="no"
+    fi
+  fi
+  #
+  AC_MSG_CHECKING([if ioctl SIOCGIFADDR might be used])
+  if test "$tst_compi_ioctl_siocgifaddr" = "yes" &&
+     test "$tst_allow_ioctl_siocgifaddr" = "yes"; then
+    AC_MSG_RESULT([yes])
+    AC_DEFINE_UNQUOTED(HAVE_IOCTL_SIOCGIFADDR, 1,
+      [Define to 1 if you have a working ioctl SIOCGIFADDR function.])
+    ac_cv_func_ioctl_siocgifaddr="yes"
+  else
+    AC_MSG_RESULT([no])
+    ac_cv_func_ioctl_siocgifaddr="no"
+  fi
+])
+
+
 dnl CARES_CHECK_FUNC_IOCTLSOCKET
 dnl -------------------------------------------------
 dnl Verify if ioctlsocket is available, prototyped, and
index d5d4da4..45c6fcf 100644 (file)
@@ -22,7 +22,7 @@
 #***************************************************************************
 
 # File version for 'aclocal' use. Keep it a single number.
-# serial 41
+# serial 42
 
 
 dnl CURL_INCLUDES_ARPA_INET
@@ -2395,6 +2395,7 @@ AC_DEFUN([CURL_CHECK_FUNC_IOCTL], [
       [Define to 1 if you have the ioctl function.])
     ac_cv_func_ioctl="yes"
     CURL_CHECK_FUNC_IOCTL_FIONBIO
+    CURL_CHECK_FUNC_IOCTL_SIOCGIFADDR
   else
     AC_MSG_RESULT([no])
     ac_cv_func_ioctl="no"
@@ -2458,6 +2459,61 @@ AC_DEFUN([CURL_CHECK_FUNC_IOCTL_FIONBIO], [
 ])
 
 
+dnl CURL_CHECK_FUNC_IOCTL_SIOCGIFADDR
+dnl -------------------------------------------------
+dnl Verify if ioctl with the SIOCGIFADDR command is
+dnl available, can be compiled, and seems to work. If
+dnl all of these are true, then HAVE_IOCTL_SIOCGIFADDR
+dnl will be defined.
+
+AC_DEFUN([CURL_CHECK_FUNC_IOCTL_SIOCGIFADDR], [
+  #
+  tst_compi_ioctl_siocgifaddr="unknown"
+  tst_allow_ioctl_siocgifaddr="unknown"
+  #
+  if test "$ac_cv_func_ioctl" = "yes"; then
+    AC_MSG_CHECKING([if ioctl SIOCGIFADDR is compilable])
+    AC_COMPILE_IFELSE([
+      AC_LANG_PROGRAM([[
+        $curl_includes_stropts
+      ]],[[
+        if(0 != ioctl(0, SIOCGIFADDR, 0))
+          return 1;
+      ]])
+    ],[
+      AC_MSG_RESULT([yes])
+      tst_compi_ioctl_siocgifaddr="yes"
+    ],[
+      AC_MSG_RESULT([no])
+      tst_compi_ioctl_siocgifaddr="no"
+    ])
+  fi
+  #
+  if test "$tst_compi_ioctl_siocgifaddr" = "yes"; then
+    AC_MSG_CHECKING([if ioctl SIOCGIFADDR usage allowed])
+    if test "x$curl_disallow_ioctl_siocgifaddr" != "xyes"; then
+      AC_MSG_RESULT([yes])
+      tst_allow_ioctl_siocgifaddr="yes"
+    else
+      AC_MSG_RESULT([no])
+      tst_allow_ioctl_siocgifaddr="no"
+    fi
+  fi
+  #
+  AC_MSG_CHECKING([if ioctl SIOCGIFADDR might be used])
+  if test "$tst_compi_ioctl_siocgifaddr" = "yes" &&
+     test "$tst_allow_ioctl_siocgifaddr" = "yes"; then
+    AC_MSG_RESULT([yes])
+    AC_DEFINE_UNQUOTED(HAVE_IOCTL_SIOCGIFADDR, 1,
+      [Define to 1 if you have a working ioctl SIOCGIFADDR function.])
+    ac_cv_func_ioctl_siocgifaddr="yes"
+  else
+    AC_MSG_RESULT([no])
+    ac_cv_func_ioctl_siocgifaddr="no"
+  fi
+])
+
+
 dnl CURL_CHECK_FUNC_IOCTLSOCKET
 dnl -------------------------------------------------
 dnl Verify if ioctlsocket is available, prototyped, and