2 * Copyright 2001 Mike McCormack
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
34 #include "wine/debug.h"
40 WINE_DEFAULT_DEBUG_CHANNEL(netbios
);
42 HMODULE NETAPI32_hModule
= 0;
44 static UCHAR
NETBIOS_Enum(PNCB ncb
)
47 LANA_ENUM
*lanas
= (PLANA_ENUM
) ncb
->ncb_buffer
;
48 DWORD apiReturn
, size
= 0;
54 apiReturn
= GetIfTable(NULL
, &size
, FALSE
);
55 if (apiReturn
!= NO_ERROR
)
57 table
= (PMIB_IFTABLE
)malloc(size
);
60 apiReturn
= GetIfTable(table
, &size
, FALSE
);
61 if (apiReturn
== NO_ERROR
)
64 for (i
= 0; i
< table
->dwNumEntries
&& lanas
->length
< MAX_LANA
;
67 if (table
->table
[i
].dwType
!= MIB_IF_TYPE_LOOPBACK
)
69 lanas
->lana
[lanas
->length
] = table
->table
[i
].dwIndex
;
80 ret
= NRC_NORESOURCES
;
88 static UCHAR
NETBIOS_Astat(PNCB ncb
)
90 PADAPTER_STATUS astat
= (PADAPTER_STATUS
) ncb
->ncb_buffer
;
93 TRACE("NCBASTAT (Adapter %d)\n", ncb
->ncb_lana_num
);
95 memset(astat
, 0, sizeof astat
);
97 row
.dwIndex
= ncb
->ncb_lana_num
;
98 if (GetIfEntry(&row
) != NO_ERROR
)
99 return NRC_INVADDRESS
;
100 /* doubt anyone cares, but why not.. */
101 if (row
.dwType
== MIB_IF_TYPE_TOKENRING
)
102 astat
->adapter_type
= 0xff;
104 astat
->adapter_type
= 0xfe; /* for Ethernet */
108 BOOL WINAPI
DllMain (HINSTANCE hinstDLL
, DWORD fdwReason
, LPVOID lpvReserved
)
110 TRACE("%p,%lx,%p\n", hinstDLL
, fdwReason
, lpvReserved
);
113 case DLL_PROCESS_ATTACH
:
114 DisableThreadLibraryCalls(hinstDLL
);
115 NETAPI32_hModule
= hinstDLL
;
117 case DLL_PROCESS_DETACH
:
124 BOOL WINAPI
Netbios(PNCB pncb
)
126 UCHAR ret
= NRC_ILLCMD
;
128 TRACE("ncb = %p\n",pncb
);
131 return NRC_INVADDRESS
;
133 switch(pncb
->ncb_command
&0x7f)
136 FIXME("NCBRESET adapter %d\n",pncb
->ncb_lana_num
);
137 if(pncb
->ncb_lana_num
< MAX_LANA
)
141 row
.dwIndex
= pncb
->ncb_lana_num
;
142 if (GetIfEntry(&row
) != NO_ERROR
)
145 ret
= NRC_ILLCMD
; /* NetBIOS emulator not found */
148 ret
= NRC_ILLCMD
; /* NetBIOS emulator not found */
152 FIXME("NCBADDNAME\n");
156 FIXME("NCBADDGRNAME\n");
160 FIXME("NCBDELNAME\n");
172 FIXME("NCBHANGUP\n");
176 FIXME("NCBCANCEL\n");
180 FIXME("NCBLISTEN\n");
184 ret
= NETBIOS_Astat(pncb
);
188 ret
= NETBIOS_Enum(pncb
);
192 FIXME("(%p): command code %02x\n", pncb
, pncb
->ncb_command
);
194 ret
= NRC_ILLCMD
; /* NetBIOS emulator not found */
196 pncb
->ncb_retcode
= ret
;
200 NET_API_STATUS WINAPI
NetServerEnum(
206 LPDWORD totalentries
,
209 LPDWORD resume_handle
212 FIXME("Stub (%p, %ld %p %ld %p %p %ld %s %p)\n",servername
, level
, bufptr
,
213 prefmaxlen
, entriesread
, totalentries
, servertype
, debugstr_w(domain
), resume_handle
);
215 return ERROR_NO_BROWSER_SERVERS_FOUND
;