Int 2F Fn 7A20 - Novell Netware - Adv Netware 4.0 Dos Requester - Get Vlm Call Address (Cont.)

ES:DI -> buffer for statistics (see #2551)

Return: AX = status (0000h if successful)
buffer filled if successful
04h VLM internal use
BX = function
0000h get interrupt vector (calls INT 21/AH=35h)
0001h begin critical section (calls INT 2F/AX=1681h)
0002h end critical section (calls INT 2F/AX=1682h)
0003h ???

Format of VLM.EXE statistics:
Offset Size Description (Table 2551)
00h WORD size of statistics record in bytes (including this word)
02h WORD number of times a VLM has been mapped into memory
04h WORD number of times a VLM has been called
06h WORD offset of vcbArray buffer
08h WORD VLM ID of VLM currently mapped into memory
0Ah BYTE memory type: conventional/EMS/XMS
0Bh BYTE number of loaded VLMs
0Ch WORD EMS/XMS handle or 0000h if conventional memory
0Eh WORD start segment for conventional memory swap
10h WORD segment for global memory, or 0000h if conventional memory
12h 12 BYTEs queue structure for asynchronous calls (see #2552)
1Eh 12 BYTEs queue structure for synchronous calls (see #2552)
2Ah WORD current re-entrance level
2Ch WORD number of times EMS/XMS map-out performed
2Eh BYTE stack switch control
2Fh BYTE flag: nonzero if switcher loaded
30h 80 BYTEs pathname of configuration file

See Also: #2550

Format of VLM.EXE queue structure:
Offset Size Description (Table 2552)
00h DWORD queue head (initially 00000000h)
04h DWORD queue tail (initialized to be same as head)
08h WORD current queue size (number of nodes in queue)
0Ah WORD maximum queue size (in nodes)

See Also: #2551

(Table 2553)
Call Connection Manager (CONN.VLM, ID 0010h) with:
Func Description/Registers
01h Conn Get Version
BX = function
0000h get version

Return: AX = status (see #2546)
BX = major version of VLM supported (0001h)
CX = minor version of VLM supported (0000h)
03h Conn Statistics
CX = length of buffer
ES:DI -> buffer for connection statistics (see #2554)

Return: AX = status (0000h successful)
04h Conn Alloc Handle

Return: AX = status (0000h successful)
CX = connection handle
05h Conn Validate Handle
CX = connection handle

Return: AX = 0000h if valid handle
06h Conn Free Handle
CX = connection handle

Return: AX = status (0000h successful)
07h Conn Get Entry Field
BH = connection parameter (see #2556)
CX = connection handle
DX = value if BH is non-array parameter
DH = offset in array if BH is array parameter
DL = number of bytes to copy if BH is array
ES:DI -> return buffer if BH is array

Return: AX = 0000h if successful
DL/DX = value if non-array parameter
DH = maximum number of bytes in buffer if array parameter
DL = number of bytes copied if array
BX destroyed
08h Conn Set Entry Field
BH = connection parameter (see #2556)
CX = connection handle
DL/DX = value if BH is non-array parameter
DH = offset in array if BH is array parameter
DL = number of bytes to copy if BH is array
DS:SI -> buffer if BH is array

Return: AX = 0000h if successful
DH = maximum number of bytes in buffer
DL = number of bytes copied
BX destroyed
09h Conn Reset Entry Field
BH = connection parameter (see #2556)
CX = connection handle

Return: AX = 0000h if successful
BX,DX destroyed
0Ah Conn Lookup Handle
BL = lookup type (00h equal, 40h not equal)
BH = connection parameter (see #2556)
CX = connection handle, 0000h if first
DL/DX = value if BH is non-array parameter
DH = offset in array if BH is array parameter
DL = number of bytes to copy if BH is array
DS:SI (ES:DI???) -> buffer if BH is array

Return: AX = 0000h if successful
CX = handle matching given parameters
0Dh Conn Name Lookup
CX = connection handle
ES:DI -> 49-byte buffer for server name or 0000h:0000h

Return: AX = 0000h if successful
BX = length of server name
ES:DI buffer filled if pointer not 0000h:0000h
0Eh Conn Name To Handle
DS:SI -> uppercased server name
CX = length of server name, 0000h if ASCIZ name

Return: AX = error code or 0000h if successful
CX = connection handle if successful
0Fh Conn Get Num Connections

Return: AX = status (0000h if successful)
DX = number of connections
CX = segment of connection table
first entry in table (See #2555)

Format of VLM connection statistics:
Offset Size Description (Table 2554)
00h WORD total length of statistics record (including this word)
02h WORD number of connection handles allocated
04h WORD average name length (configured in NET.CFG)
06h WORD maximum number of tasks (configured in NET.CFG)
08h WORD number of failed "allocate handle" calls
0Ah WORD number of failed "add name" calls
0Ch WORD number of failed task calls

Note: some versions of the NetWare requester reportedly do not implement
this correctly

See Also: #2553

Format of NetWare VLM Connection Table [array]:
Offset Size Description (Table 2555)
00h WORD Protocol VLMid 0032(NDS) 0031(BIND) Func 07 equiv.
0033(PNW) 0000(unused) BH=01h
02h BYTE (connection status)
bit 6: connection locked BH=16h
bit 5: authenticated BH=03h
bit 4: permanent BH=02h
bit 2: broadcast msg waiting BH=12h
03h BYTE (connection capabilities)
bit 5: Large Internet Packets none
bit 3: Packet Burst Reset BH=07h
bit 2: Max I/O BH=06h
bit 1: SFT3 change BH=05h
bit 0: Packet Burst Support BH=04h
04h WORD reference count BH=09h
06h WORD soft resource count BH=15h
08h BYTE NCP Order Number BH=0Eh
09h BYTE Server security options BH=14h
bit 0: CRC enabled
bit 1: packet signing required
bit 5: packet signing enabled
0Ah BYTE OS Major Version BH=08h
0Bh BYTE OS Minor Version BH=08h
0Ch WORD Hops to Server BH=0Ah
0Eh WORD Maximum Packet Size for this connection BH=0Bh
10h WORD LIP Parameters BH=13h
12h WORD NCP Request Type BH=10h
14h BYTE NCP Sequence BH=0Ch
15h WORD Connection Number BH=0Dh
17h BYTE ??? none
18h WORD Transport VLMid 21(IPXNCP) 22(TCPNCP) BH=0Fh
1Ah BYTE Node Address[4] BH=11h
1Eh BYTE Network[6] BH=11h
24h BYTE Socket[2] BH=11h
26h BYTE Local Target[6] BH=11h
2Ch WORD Round Trip Time BH=11h
2Eh WORD ??? none

See Also: #2553

(Table 2556)
Values for NetWare Connection Manager CEI (Connection Entry Information):
number flags description
00h FR error
01h WL VLM id of transport protocol (NDS/BIND/PNW)
00h = wildcard
02h FR permanent flag (01h if connection is permanent)
03h F authenticated flag (01h if connection is authenticated)
04h F packet burst supported
05h FR SFT3 change status
06h FR connection needs maximum I/O transmission
07h FR packet burst reset needed
08h W server version
09h W reference count (tasks using connection, 00h = dynamic)
0Ah W distance to server associated with connection
0Bh W maximum packet size supported by transport protocol
0Ch B NCP sequence number
0Dh W connection number
0Eh B NCP order number
0Fh WL VLM id for transport protocol
00h = wildcard, 21h = IPX, 22h = TCP
10h W NCP request type
11h A transport specific buffer
12 byte server address
6 byte router address
2 byte round trip time
12h FR broadcast message waiting
13h W large internet packets supported
14h B security options
bit 0: CRC enabled
bit 1: packet signing enabled
bit 5: packet signing active
15h W soft resource count
16h FR connection locked

Note: flag meanings
F=flag value
B=byte value
W=word value
A=array
R=resettable
L=settable only before authentication
others=read only

See Also: #2553

(Table 2557)
Call TRAN.VLM (VLM ID 0020h) with:
Func Description/Registers
01h TRAN Get Version
BX = function
0000h get version

Return: AX = status (see #2546)
BX = major version of VLM supported (0001h)
CX = minor version of VLM supported (0000h)
03h TRAN Statistics
06h TRAN Request Reply (see INT 21/AH=F2h)
AL = NCP request code (see #1783 at INT 21/AH=F2h)
BH = error handler flag
00h default error handler
01h return network errors to caller
02h handle network errors in requester
BL = request list length (max 5 fragments) (see #2558)
CX = connection handle
DH = 00h (reserved)
DL = reply list length (max 5 fragments) (see #2558)
DS:SI -> address list (each element is DWORD address + WORD length)
ES:DI -> address list

Return: AX = error code, 0000h if successful (see #2546)
BX,DX destroyed
ES:DI buffer filled with reply packet fragments
08h TRAN Schedule/Cancel Event
BX = subfunction
0000h schedule event
AX = number of timer ticks to delay before calling function
ES:SI -> event control block (including valid call address)
0001h cancel event
ES:SI -> event control block (including call address)

Return: AX = status (0000h = successful) (see #2546)
09h TRAN Get Max Phys Size
BX = subfunction
00h get maximum node size

Return: AX = status (0000h = successful) (see #2546)
BX = maximum supported physical packet size
DX = size of protocol header
SI = RequestReply socket number
01h get maximum route size to specified server
CX = connection handle for route to be checked

Return: AX = status (0000h = successful) (see #2546)
DX = maximum supported packet size for current route
0Ah TRAN Broadcast Mux
BX = subfunction
0001h get stored broadcast (Personal NetWare)
ES:DI -> 60-byte buffer for counted ASCIZ message string

Return: AX = status (0000h = successful) (see #2546)

Format of TRAN.VLM request/reply fragment descriptor (array):
Offset Size Description (Table 2558)
00h DWORD address of buffer
04h WORD length of buffer

(Table 2559)
Call IPXNCP.VLM (VLM ID 0021h) with:
Func Description/Registers
01h IPX Get Version
BX = function
0000h get version

Return: AX = status (see #2546)
BX = major version of VLM supported (0001h)
CX = minor version of VLM supported (0000h)
03h IPX Statistics
CX = length of buffer
ES:DI -> buffer for statistics (see #2560)

Return: AX = status (see #2546)
06h IPXNCP Request Reply???
functionally equivalent to Tran Request Reply???

Format of NetWare IPX statistics:
Offset Size Description (Table 2560)
00h WORD size of statistics, including this word
02h DWORD number of TRAN Request Reply calls made
06h WORD number of user aborts
08h WORD number of user retries
0Ah WORD IPX receive errors
0Ch WORD IPX send errors

.NG limit reached, continued in next section...