diff --git a/configure b/configure
index 4f1a4a8..87207cb 100755
--- a/configure
+++ b/configure
@@ -6840,9 +6840,9 @@
 fi
 
 
-echo $ac_n "checking "for sun_len in struct sockaddr_un"""... $ac_c" 1>&6
-echo "configure:6845: checking "for sun_len in struct sockaddr_un"" >&5
-if eval "test \"`echo '$''{'ac_cv_c_sun_len'+set}'`\" = set"; then
+echo $ac_n "checking "for sa_len in struct sockaddr"""... $ac_c" 1>&6
+echo "configure:6845: checking "for sa_len in struct sockaddr"" >&5
+if eval "test \"`echo '$''{'ac_cv_c_sockaddr_sa_len'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
@@ -6850,25 +6850,62 @@
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/socket.h>
+
+int main() {
+static struct sockaddr addr; addr.sa_len = 1
+; return 0; }
+EOF
+if { (eval echo configure:6859: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+  ac_cv_c_sockaddr_sa_len="yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ac_cv_c_sockaddr_sa_len="no"
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$ac_cv_c_sockaddr_sa_len" 1>&6
+if test "$ac_cv_c_sockaddr_sa_len" = "yes"
+then
+    cat >> confdefs.h <<\EOF
+#define HAVE_SOCKADDR_SA_LEN 1
+EOF
+
+fi
+
+
+echo $ac_n "checking "for sun_len in struct sockaddr_un"""... $ac_c" 1>&6
+echo "configure:6882: checking "for sun_len in struct sockaddr_un"" >&5
+if eval "test \"`echo '$''{'ac_cv_c_sockaddr_sun_len'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 6887 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <sys/socket.h>
 #include <sys/un.h>
 int main() {
 static struct sockaddr_un addr; addr.sun_len = 1
 ; return 0; }
 EOF
-if { (eval echo configure:6859: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6896: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
-  ac_cv_c_sun_len="yes"
+  ac_cv_c_sockaddr_sun_len="yes"
 else
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
   rm -rf conftest*
-  ac_cv_c_sun_len="no"
+  ac_cv_c_sockaddr_sun_len="no"
 fi
 rm -f conftest*
 fi
 
-echo "$ac_t""$ac_cv_c_sun_len" 1>&6
-if test "$ac_cv_c_sun_len" = "yes"
+echo "$ac_t""$ac_cv_c_sockaddr_sun_len" 1>&6
+if test "$ac_cv_c_sockaddr_sun_len" = "yes"
 then
     cat >> confdefs.h <<\EOF
 #define HAVE_SOCKADDR_SUN_LEN 1
@@ -6878,12 +6915,12 @@
 
 
 echo $ac_n "checking "whether we need to define __i386__"""... $ac_c" 1>&6
-echo "configure:6882: checking "whether we need to define __i386__"" >&5
+echo "configure:6919: checking "whether we need to define __i386__"" >&5
 if eval "test \"`echo '$''{'ac_cv_cpp_def_i386'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6887 "configure"
+#line 6924 "configure"
 #include "confdefs.h"
 #if (defined(i386) || defined(__i386)) && !defined(__i386__)
 yes
diff --git a/configure.in b/configure.in
index f8513fc..65335df 100644
--- a/configure.in
+++ b/configure.in
@@ -1154,14 +1154,26 @@
     AC_DEFINE(HAVE_MSGHDR_ACCRIGHTS, 1, [Define if struct msghdr contains msg_accrights])
 fi
 
+dnl *** Check for the sa_len member in struct sockaddr
+
+AC_CACHE_CHECK("for sa_len in struct sockaddr", ac_cv_c_sockaddr_sa_len,
+ AC_TRY_COMPILE([#include <sys/types.h>
+#include <sys/socket.h>
+], [static struct sockaddr addr; addr.sa_len = 1],
+                ac_cv_c_sockaddr_sa_len="yes", ac_cv_c_sockaddr_sa_len="no"))
+if test "$ac_cv_c_sockaddr_sa_len" = "yes"
+then
+    AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if struct sockaddr contains sa_len])
+fi
+
 dnl *** Check for the sun_len member in struct sockaddr_un
 
-AC_CACHE_CHECK("for sun_len in struct sockaddr_un", ac_cv_c_sun_len,
+AC_CACHE_CHECK("for sun_len in struct sockaddr_un", ac_cv_c_sockaddr_sun_len,
  AC_TRY_COMPILE([#include <sys/types.h>
 #include <sys/socket.h>
 #include <sys/un.h>], [static struct sockaddr_un addr; addr.sun_len = 1],
-                ac_cv_c_sun_len="yes", ac_cv_c_sun_len="no"))
-if test "$ac_cv_c_sun_len" = "yes"
+                ac_cv_c_sockaddr_sun_len="yes", ac_cv_c_sockaddr_sun_len="no"))
+if test "$ac_cv_c_sockaddr_sun_len" = "yes"
 then
     AC_DEFINE(HAVE_SOCKADDR_SUN_LEN, 1, [Define if struct sockaddr_un contains sun_len])
 fi
diff --git a/dlls/rpcrt4/rpcrt4_main.c b/dlls/rpcrt4/rpcrt4_main.c
index 27b328b..3b864fe 100644
--- a/dlls/rpcrt4/rpcrt4_main.c
+++ b/dlls/rpcrt4/rpcrt4_main.c
@@ -105,7 +105,7 @@
        * However, under earlier systems, sa_len isn't present, so
        *  the size is just sizeof(struct ifreq)
        */
-#ifdef HAVE_SA_LEN
+#ifdef HAVE_SOCKADDR_SA_LEN
 #  ifndef max
 #   define max(a,b) ((a) > (b) ? (a) : (b))
 #  endif
@@ -113,8 +113,8 @@
 sizeof((i).ifr_name)+(i).ifr_addr.sa_len)
 # else
 #  define ifreq_size(i) sizeof(struct ifreq)
-# endif /* HAVE_SA_LEN */
-      
+# endif /* defined(HAVE_SOCKADDR_SA_LEN) */
+
       sd = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);
       if (sd < 0) {
 	 /* if we can't open a socket, just use random numbers */
@@ -143,7 +143,7 @@
 	 } else {
 	    /* loop through the interfaces, looking for a valid one */
 	    n = ifc.ifc_len;
-	    for (i = 0; i < n; i+= ifreq_size(*ifr) ) {
+	    for (i = 0; i < n; i+= ifreq_size(ifr) ) {
 	       ifrp = (struct ifreq *)((char *) ifc.ifc_buf+i);
 	       strncpy(ifr.ifr_name, ifrp->ifr_name, IFNAMSIZ);
 	       /* try to get the address for this interface */
diff --git a/include/config.h.in b/include/config.h.in
index 3e2bd4c..5829fd5 100644
--- a/include/config.h.in
+++ b/include/config.h.in
@@ -520,6 +520,9 @@
 /* Define if struct msghdr contains msg_accrights */
 #undef HAVE_MSGHDR_ACCRIGHTS
 
+/* Define if struct sockaddr contains sa_len */
+#undef HAVE_SOCKADDR_SA_LEN
+
 /* Define if struct sockaddr_un contains sun_len */
 #undef HAVE_SOCKADDR_SUN_LEN
 
