docs: audit file server usage open-file stubs

This commit is contained in:
Mario Fetka
2026-06-02 18:56:31 +00:00
parent b946b29b03
commit 598b353535
3 changed files with 142 additions and 3 deletions

18
AI.md
View File

@@ -936,3 +936,21 @@ Latest endpoint audit checkpoint from patch 0244:
semaphore selectors such as `23/227`, `23/229`..`23/242`.
Next patch number should be `0245`.
Latest endpoint audit checkpoint from patch 0245:
- Continued the NDK-first File Server Environment pass with `23/227` and
`23/229` through `23/236` at wire `0xe3` and `0xe5` through `0xec`.
`23/228` is not listed in the NDK table and no wire `0xe4` marker was added.
- Added/split individual disabled `src/nwbind.c` cases for LAN driver
configuration, connection usage statistics, object remaining disk space, LAN
I/O statistics, file-server misc information, volume information, connection
task information, connection open files, and connection-using-a-file scans.
- The old grouped `23/232`/`23/235` placeholder is gone. Each audited selector
now has its own case-local `Request:` and `Response:` summary.
- Do not implement these from approximations. They need real LAN binding,
NCP byte/request counter, bindery quota, volume/free-space, routing/LAN I/O,
server memory/utilization, volume-table, task/lock-wait, open-file/share/deny,
and file-user provider state.
Next patch number should be `0246`.

32
TODO.md
View File

@@ -1541,3 +1541,35 @@ Follow-up:
- Continue the NDK-first `23/xx` pass with the next adjacent documented
NetWare 1.x/2.x/3.x block or planned NetWare 4.x block. Keep one case and
request/response comment per selector.
### File Server Environment usage/LAN/volume and open-file stubs 23/227 and 23/229..236
Current status:
- Patch `0245` continues the NDK-first `23/xx` pass with the adjacent in-scope
File Server Environment information selectors:
- `23/227` / wire `0xe3` Get LAN Driver Configuration Information
- `23/229` / wire `0xe5` Get Connection Usage Statistics
- `23/230` / wire `0xe6` Get Object's Remaining Disk Space
- `23/231` / wire `0xe7` Get File Server LAN I/O Statistics
- `23/232` / wire `0xe8` Get File Server Misc Information
- `23/233` / wire `0xe9` Get Volume Information
- `23/234` / wire `0xea` Get Connection's Task Information
- `23/235` / wire `0xeb` Get Connection's Open Files
- `23/236` / wire `0xec` Get Connection Using A File
- There is no NDK `23/228` entry in this block, so no wire `0xe4` placeholder
was added.
- Each selector is documented as its own disabled `#if 0` `case` in
`src/nwbind.c`, with an attached Request/Response summary. The old grouped
`23/232`/`23/235` placeholder is split and removed.
- Future implementations require real LAN-driver binding state, NCP data-path
byte/request counters, bindery quota and volume space state, NetWare LAN/I/O
routing counters, server memory/utilization state, volume table state,
task/lock-wait state, and open-file/share/deny provider state. Do not fake
these replies from host interface lists or partial connection state.
Follow-up:
- Continue the NDK-first `23/xx` pass with the next small block, likely the
newer lock and semaphore monitor selectors `23/237` through `23/242`, keeping
one case and Request/Response comment per selector.

View File

@@ -3174,12 +3174,101 @@ static void handle_fxx(int gelen, int func)
return(-1);
break;
case 0xe3 : /* SDK 23/227 / wire 0xe3 Get LAN Driver Configuration Information */
/*
* Request: SubFuncStrucLen is printed as 1 in the NDK,
* SubFunctionCode=227, LANDriverNumber follows at offset 10.
* Response: NetworkAddress, HostAddress, BoardInstalled,
* OptionNumber, and 160 bytes of NULL-terminated
* ConfigurationText. Requires real LAN-driver binding
* state; do not synthesize from the local host interface.
*/
return(-1);
break;
case 0xe5 : /* SDK 23/229 / wire 0xe5 Get Connection Usage Statistics */
/*
* Request: SubFuncStrucLen=3, SubFunctionCode=229,
* ConnectionNumber.
* Response: SystemIntervalMarker, six-byte BytesRead,
* six-byte BytesWritten, and TotalRequestPackets. Requires
* per-connection byte and request counters from the NCP
* data path, not only connection presence.
*/
return(-1);
break;
case 0xe6 : /* SDK 23/230 / wire 0xe6 Get Object's Remaining Disk Space */
/*
* Request: SubFuncStrucLen=5, SubFunctionCode=230,
* ObjectID.
* Response: SystemIntervalMarker, ObjectID,
* UnusedDiskBlocks, and RestrictionsEnforced. Requires
* bindery object quotas plus volume/free-space state.
*/
return(-1);
break;
case 0xe7 : /* SDK 23/231 / wire 0xe7 Get File Server LAN I/O Statistics */
/*
* Request: SubFuncStrucLen=1, SubFunctionCode=231.
* Response: SystemIntervalMarker and NetWare routing/LAN
* counters such as routing-buffer usage, file-service
* packet counts, bad connection/sequence counts, duplicate
* replies, bridge-hop drops, propagated NetBIOS broadcasts,
* other packets, and routed packets.
*/
return(-1);
break;
case 0xe8 : /* SDK 23/232 / wire 0xe8 Get File Server Misc Information */
/*
* Request: SubFuncStrucLen=1, SubFunctionCode=232.
* Response: SystemIntervalMarker, processor type, service
* process/utilization counters, bindery object limits and
* usage, total/wasted server memory, and one to three
* dynamic memory area records.
*/
return(-1);
break;
case 0xe9 : /* SDK 23/233 / wire 0xe9 Get Volume Information */
/*
* Request: SubFuncStrucLen=2, SubFunctionCode=233,
* VolumeNumber.
* Response: SystemIntervalMarker, volume/logical-drive
* numbers, block geometry and free/total block counts,
* directory entry counts, hash/cache/removable/mounted
* flags, and 16-byte VolumeName.
*/
return(-1);
break;
case 0xea : /* SDK 23/234 / wire 0xea Get Connection's Task Information */
/*
* Request: SubFuncStrucLen=5, SubFunctionCode=234,
* ConnectionNumber.
* Response: NextRequestRecord, AllAttrStruc/WaitRecord
* according to LockStatus, NumberOfActiveTasks, and
* TaskNumber/TaskState pairs. Requires real task and lock
* wait state, not only the logical connection record.
*/
return(-1);
break;
case 0xeb : /* SDK 23/235 / wire 0xeb Get Connection's Open Files */
/*
* NetWare 2.x/3.x server-management information calls.
* Keep disabled until their variable reply records are
* mapped to real MARS-NWE state.
* Request: SubFuncStrucLen=5, SubFunctionCode=235,
* ConnectionNumber, LastRecordSeen.
* Response: NextRequestRecord, NumberOfRecords, then
* records with TaskNumber, LockType, AccessControl,
* LockFlag, VolumeNumber, DOS parent/entry numbers,
* ForkCount, NameSpace, NameLen, and FileName.
*/
return(-1);
break;
case 0xec : /* SDK 23/236 / wire 0xec Get Connection Using A File */
/*
* Request: SubFuncStrucLen=9, SubFunctionCode=236,
* DataStreamNumber, VolumeNumber, DirectoryBase,
* LastRecordSeen.
* Response: NextRequestRecord; use/open/read/write/deny
* counts; Locked, ForkCount, NumberOfRecords; and per-user
* ConnectionNumber, TaskNumber, LockType, AccessControl,
* and LockFlag records for the file.
*/
return(-1);
break;