CVS: winex/dlls/netapi32 netapi32.c,1.5,1.6

[email protected] 31 Jul 2007 17:31:33 -0000
Newsgroups gmane.comp.emulators.winex.cvs
Message-ID <[email protected]>
Subject: winex/dlls/netapi32 netapi32.c,1.5,1.6Update of /var/lib/cvsd/cvsroot/winex/dlls/netapi32
In directory agravaine:/tmp/cvs-serv20174/dlls/netapi32

Modified Files:
	netapi32.c 
Log Message:

- handle testing for ethernet adapters w/o enumerating beforehand
- ignore adapters without MAC addresses



Index: netapi32.c
===================================================================
RCS file: /var/lib/cvsd/cvsroot/winex/dlls/netapi32/netapi32.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- netapi32.c	30 Mar 2007 20:16:21 -0000	1.5
+++ netapi32.c	31 Jul 2007 17:31:31 -0000	1.6
@@ -49,6 +49,7 @@
 WINE_DEFAULT_DEBUG_CHANNEL(netbios);
 
 HMODULE NETAPI32_hModule = 0;
+static BOOL EnumDone = FALSE;
 
 struct NetBiosAdapter
 {
@@ -92,11 +93,15 @@
     unsigned char   buf[1024];
     int             i, ofs;
 #endif
-    LANA_ENUM *lanas = (PLANA_ENUM) ncb->ncb_buffer;
+    LANA_ENUM *lanas = NULL;
 
-    TRACE("NCBENUM\n");
+    if (ncb)
+    {
+       lanas = (PLANA_ENUM) ncb->ncb_buffer;
+       lanas->length = 0;
+    }
 
-    lanas->length = 0;
+    TRACE("NCBENUM\n");
 
 #ifdef HAVE_NET_IF_H
     /* BSD 4.4 defines the size of an ifreq to be
@@ -139,14 +144,20 @@
             TRACE("Found valid adapter %d at %02x:%02x:%02x:%02x:%02x:%02x\n", i,
                         a[0],a[1],a[2],a[3],a[4],a[5]);
 
-            NETBIOS_Adapter[i].valid = TRUE;
-            lanas->lana[lanas->length] = i;
-            lanas->length++;
+            if (a[0] || a[1] || a[2] || a[3] || a[4] || a[5])
+               NETBIOS_Adapter[i].valid = TRUE;
+
+            if (lanas)
+            {
+               lanas->lana[lanas->length] = i;
+               lanas->length++;
+            }
         }
         ofs += ifreq_size(ifr);
     }
     close(sd);
 #endif /* HAVE_NET_IF_H */
+    EnumDone = TRUE;
     return NRC_GOODRET;
 }
 
@@ -195,7 +206,10 @@
     switch(pncb->ncb_command&0x7f)
     {
     case NCBRESET:
-        FIXME("NCBRESET adapter %d\n",pncb->ncb_lana_num);
+       if (!EnumDone)
+          NETBIOS_Enum (NULL);
+
+        TRACE("NCBRESET adapter %d\n",pncb->ncb_lana_num);
         if( (pncb->ncb_lana_num < MAX_LANA ) &&
              NETBIOS_Adapter[pncb->ncb_lana_num].valid)
             ret = NRC_GOODRET;