Index: wine/dlls/winsock/socket.c
===================================================================
RCS file: /home/wine/wine/dlls/winsock/socket.c,v
retrieving revision 1.21
diff -u -u -r1.21 socket.c
--- wine/dlls/winsock/socket.c	2000/07/23 19:28:24	1.21
+++ wine/dlls/winsock/socket.c	2000/07/24 17:41:49
@@ -21,12 +21,9 @@
 #ifdef HAVE_SYS_FILIO_H
 # include <sys/filio.h>
 #endif
-#if defined(__svr4__) || defined(__sun)
-#include <sys/ioccom.h>
 #ifdef HAVE_SYS_SOCKIO_H
 # include <sys/sockio.h>
 #endif
-#endif
 
 #if defined(__EMX__)
 # include <sys/so_ioctl.h>
@@ -89,6 +86,11 @@
 
 
 DEFAULT_DEBUG_CHANNEL(winsock)
+
+/* FIXME: Solaris specific kludge */
+#ifndef ifr_netmask
+# define ifr_netmask ifr_addr
+#endif
 
 #define DEBUG_SOCKADDR 0
 #define dump_sockaddr(a) \
Index: wine/dlls/wsock32/socket.c
===================================================================
RCS file: /home/wine/wine/dlls/wsock32/socket.c,v
retrieving revision 1.2
diff -u -u -r1.2 socket.c
--- wine/dlls/wsock32/socket.c	2000/07/23 19:28:24	1.2
+++ wine/dlls/wsock32/socket.c	2000/07/24 17:41:49
@@ -17,12 +17,19 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
+#ifdef HAVE_SYS_SOCKIO_H
+# include <sys/sockio.h> 
+#endif
 #ifdef HAVE_NET_IF_H
 # include <net/if.h>
 #endif
 
 DEFAULT_DEBUG_CHANNEL(winsock);
 
+/* FIXME: Solaris specific kludge */
+#ifndef ifr_netmask
+# define ifr_netmask ifr_addr
+#endif
 
 /***********************************************************************
  *      WsControl()
@@ -177,7 +184,7 @@
                      IntInfo->if_index = pcommand->toi_entity.tei_instance;
                      
                      /* MAC Address */
-                     strcpy(ifInfo.ifr_name, ifName);
+#if defined(SIOCGIFHWADDR) /* Linux */
                      if (ioctl(sock, SIOCGIFHWADDR, &ifInfo) < 0)
                      {
                         ERR ("Error obtaining MAC Address!\n");
@@ -190,6 +197,23 @@
                         memcpy(IntInfo->if_physaddr, ifInfo.ifr_hwaddr.sa_data, 6);
                         IntInfo->if_physaddrlen=6;
                      }
+#elif defined(SIOCGENADDR) /* Solaris */
+                     if (ioctl(sock, SIOCGENADDR, &ifInfo) < 0)
+                     {
+                        ERR ("Error obtaining MAC Address!\n");
+                        close(sock);
+                        return (-1);
+                     }
+                     else
+                     {
+                        /* FIXME: Is it correct to assume size of 6? */
+		        memcpy(IntInfo->if_physaddr, ifInfo.ifr_enaddr, 6);
+                        IntInfo->if_physaddrlen=6;
+                     }
+#else
+#error "Please specify how to obtain the MAC Address on this platform"
+#endif
+
                      
                      /* Interface name and length */
                      strcpy (IntInfo->if_descr, ifName);
