diff --git a/AI.md b/AI.md index f8aa6ed..78b4717 100644 --- a/AI.md +++ b/AI.md @@ -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`. diff --git a/TODO.md b/TODO.md index 07cb7cf..c7b31cb 100644 --- a/TODO.md +++ b/TODO.md @@ -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. diff --git a/src/nwbind.c b/src/nwbind.c index a667106..c2640eb 100644 --- a/src/nwbind.c +++ b/src/nwbind.c @@ -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;