Implemented a lot of Netbios().

diff --git a/dlls/netapi32/netapi32.c b/dlls/netapi32/netapi32.c
index 05540d0..f62ea1d 100644
--- a/dlls/netapi32/netapi32.c
+++ b/dlls/netapi32/netapi32.c
@@ -1,5 +1,5 @@
-/*
- * Copyright 2001 Mike McCormack
+/* Copyright 2001 Mike McCormack
+ * Copyright 2003 Juan Lang
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -18,185 +18,36 @@
 
 #include "config.h"
 
-#include <string.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#include "windef.h"
-#include "winbase.h"
-#include "winreg.h"
-#include "wingdi.h"
-#include "winuser.h"
 #include "wine/debug.h"
-#include "winerror.h"
-#include "nb30.h"
-#include "lm.h"
-#include "iphlpapi.h"
+#include "netbios.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(netbios);
 
 HMODULE NETAPI32_hModule = 0;
 
-static UCHAR NETBIOS_Enum(PNCB ncb)
-{
-    int             i;
-    LANA_ENUM *lanas = (PLANA_ENUM) ncb->ncb_buffer;
-    DWORD apiReturn, size = 0;
-    PMIB_IFTABLE table;
-    UCHAR ret;
- 
-    TRACE("NCBENUM\n");
- 
-    apiReturn = GetIfTable(NULL, &size, FALSE);
-    if (apiReturn != NO_ERROR)
-      {
-        table = (PMIB_IFTABLE)malloc(size);
-        if (table)
-          {
-            apiReturn = GetIfTable(table, &size, FALSE);
-            if (apiReturn == NO_ERROR)
-              {
-                lanas->length = 0;
-                for (i = 0; i < table->dwNumEntries && lanas->length < MAX_LANA;
-                 i++)
-                  {
-                    if (table->table[i].dwType != MIB_IF_TYPE_LOOPBACK)
-                      {
-                        lanas->lana[lanas->length] = table->table[i].dwIndex;
-                        lanas->length++;
-                      }
-                  }
-                ret = NRC_GOODRET;
-              }
-            else
-                ret = NRC_SYSTEM;
-            free(table);
-          }
-        else
-            ret = NRC_NORESOURCES;
-      }
-    else
-        ret = NRC_SYSTEM;
-    return ret;
-}
-
-
-static UCHAR NETBIOS_Astat(PNCB ncb)
-{
-    PADAPTER_STATUS astat = (PADAPTER_STATUS) ncb->ncb_buffer;
-    MIB_IFROW row;
-  
-    TRACE("NCBASTAT (Adapter %d)\n", ncb->ncb_lana_num);
-  
-    memset(astat, 0, sizeof astat);
-  
-    row.dwIndex = ncb->ncb_lana_num;
-    if (GetIfEntry(&row) != NO_ERROR)
-        return NRC_INVADDRESS;
-    /* doubt anyone cares, but why not.. */
-    if (row.dwType == MIB_IF_TYPE_TOKENRING)
-        astat->adapter_type = 0xff;
-    else
-        astat->adapter_type = 0xfe; /* for Ethernet */
-    return NRC_GOODRET;
-}
-
 BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
 {
     TRACE("%p,%lx,%p\n", hinstDLL, fdwReason, lpvReserved);
 
     switch (fdwReason) {
-	case DLL_PROCESS_ATTACH:
+        case DLL_PROCESS_ATTACH:
+        {
             DisableThreadLibraryCalls(hinstDLL);
             NETAPI32_hModule = hinstDLL;
-	    break;
-	case DLL_PROCESS_DETACH:
-	    break;
+            NetBIOSInit();
+            NetBTInit();
+            break;
+        }
+        case DLL_PROCESS_DETACH:
+        {
+            NetBIOSShutdown();
+            break;
+        }
     }
 
     return TRUE;
 }
 
-UCHAR WINAPI Netbios(PNCB pncb)
-{
-    UCHAR ret = NRC_ILLCMD;
-
-    TRACE("ncb = %p\n",pncb);
-
-    if(!pncb)
-        return NRC_INVADDRESS;
-
-    switch(pncb->ncb_command&0x7f)
-    {
-    case NCBRESET:
-        FIXME("NCBRESET adapter %d\n",pncb->ncb_lana_num);
-        if(pncb->ncb_lana_num < MAX_LANA )
-          {
-            MIB_IFROW row;
-
-            row.dwIndex = pncb->ncb_lana_num;
-            if (GetIfEntry(&row) != NO_ERROR)
-                ret = NRC_GOODRET;
-            else
-                ret = NRC_ILLCMD; /* NetBIOS emulator not found */
-          }
-        else
-            ret = NRC_ILLCMD; /* NetBIOS emulator not found */
-        break;
-
-    case NCBADDNAME:
-        FIXME("NCBADDNAME\n");
-        break;
-
-    case NCBADDGRNAME:
-        FIXME("NCBADDGRNAME\n");
-        break;
-
-    case NCBDELNAME:
-        FIXME("NCBDELNAME\n");
-        break;
-
-    case NCBSEND:
-        FIXME("NCBSEND\n");
-        break;
-
-    case NCBRECV:
-        FIXME("NCBRECV\n");
-        break;
-
-    case NCBHANGUP:
-        FIXME("NCBHANGUP\n");
-        break;
-
-    case NCBCANCEL:
-        FIXME("NCBCANCEL\n");
-        break;
-
-    case NCBLISTEN:
-        FIXME("NCBLISTEN\n");
-        break;
-
-    case NCBASTAT:
-        ret = NETBIOS_Astat(pncb);
-        break;
-
-    case NCBENUM:
-        ret = NETBIOS_Enum(pncb);
-        break;
-
-    default:
-        FIXME("(%p): command code %02x\n", pncb, pncb->ncb_command);
-
-        ret = NRC_ILLCMD; /* NetBIOS emulator not found */
-    }
-    pncb->ncb_retcode = ret;
-    return ret;
-}
-
 NET_API_STATUS  WINAPI NetServerEnum(
   LPCWSTR servername,
   DWORD level,