diff --git a/CHANGES b/CHANGES
index f50e92d3ea7135106298e4396f87c801c5e6747b..a2edf54936588bb00358bbc69b09cbc5aa9c0384 100644
--- 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.
diff --git a/ares/m4/cares-functions.m4 b/ares/m4/cares-functions.m4
index 245e93bd040a7640b4009f3fa1a64aed1b3fc77e..bfc2c0b5f2f3b3633df380310f23a67a6afeeeeb 100644
--- a/ares/m4/cares-functions.m4
+++ b/ares/m4/cares-functions.m4
@@ -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
diff --git a/m4/curl-functions.m4 b/m4/curl-functions.m4
index d5d4da45499cc067853e950fc20c8552d70ff692..45c6fcf718de86a4e099d3e0966686b97fbe8012 100644
--- a/m4/curl-functions.m4
+++ b/m4/curl-functions.m4
@@ -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