From 9f13d9d13c84b03522f366ccf49632bcc1dbecb2 Mon Sep 17 00:00:00 2001 From: Mario Fetka Date: Tue, 2 Jun 2026 19:38:27 +0000 Subject: [PATCH] docs: tighten sdk90 tree reference selector notes --- AI.md | 24 +++++++++++++++++++++++- TODO.md | 21 +++++++++++++++++++-- src/nwconn.c | 27 +++++++++++++++------------ 3 files changed, 57 insertions(+), 15 deletions(-) diff --git a/AI.md b/AI.md index 952f842..8ea186f 100644 --- a/AI.md +++ b/AI.md @@ -1088,4 +1088,26 @@ Latest endpoint audit checkpoint from patch 0249: - Do not regroup these two direct create-file cases in a later cleanup; keep the per-case Request/Response audit rule intact. -Next patch number should be `0252`. +## 2026-06-02 - Patch 0252 SDK 90 tree/reference/compression selector notes + +- Continued NDK-first after the direct create-file split. The NDK Enhanced + NCP `89/xx` chapter is not taken as the next implementation target here + because the `89/01` page is marked `NetWare Servers: 6.5, SP2 and later`; + keep those 5.x+/6.x-only enhanced namespace endpoints out of this 1.x-4.x + audit unless project scope changes. +- Audited the first NetWare-4.x-relevant SDK `90/xx` block in `src/nwconn.c`: + - `90/00` Parse Tree + - `90/10` Get Reference Count from Dir Entry Number + - `90/11` Get Reference Count from Dir Handle + - `90/12` Set Compressed File Size +- Each selector already had its own `switch` case; patch `0252` tightens those + case-local comments with exact NDK `SubFuncStrucLen`, request fields and + response fields. +- Runtime behavior remains unchanged: all four selectors still return `0xfb` + until a real namespace tree/reference-count/compression metadata provider + exists. +- Do not synthesize reference counts or compressed-size replies from partial + Unix `stat(2)` state. These replies require NetWare directory-base identity, + namespace handles, reference tracking and compression metadata. + +Next patch number should be `0253`. diff --git a/TODO.md b/TODO.md index eac7968..8c2e4d4 100644 --- a/TODO.md +++ b/TODO.md @@ -1731,8 +1731,25 @@ Current status: - Runtime behavior is unchanged; both cases still call `nw_creat_open_file()` and return the old file-handle plus `NW_FILE_INFO` response layout. +### SDK 90 tree/reference/compression selector notes + +Current status: + +- Patch `0252` audits the first NetWare-4.x-relevant SDK `90/xx` block in + `src/nwconn.c`: + - `90/00` Parse Tree + - `90/10` Get Reference Count from Dir Entry Number + - `90/11` Get Reference Count from Dir Handle + - `90/12` Set Compressed File Size +- The `89/xx` Enhanced NCP chapter is skipped for this pass because the NDK + marks `89/01` as `NetWare Servers: 6.5, SP2 and later`; keep 5.x+/6.x-only + enhanced namespace endpoints out of the 1.x-4.x endpoint audit. +- Runtime behavior is unchanged; the `90/00`, `90/10`, `90/11`, and `90/12` + cases still return `0xfb` until a real provider exists. + Follow-up: - Continue NDK-first with the next documented NetWare 1.x/2.x/3.x endpoint or - planned 4.x endpoint that still has grouped or missing case-local - Request/Response audit notes. Skip 5.x-only endpoints. + planned 4.x endpoint after `90/12`, likely the Data Migration selector block + `90/128..136`, and keep one case-local Request/Response comment per selector. + Skip 5.x-only endpoints. diff --git a/src/nwconn.c b/src/nwconn.c index e61b6c4..4d2405b 100644 --- a/src/nwconn.c +++ b/src/nwconn.c @@ -7328,31 +7328,34 @@ static int handle_ncp_serv(void) ? (int)requestdata[0] : -1; switch (dm_sub) { - case 0x00: /* Parse Tree. - * Request: InformationMask, InformationMask2, - * reserved, limbCount, limbStruct[]. + case 0x00: /* SDK 90/00 Parse Tree. + * Request: SubFuncStrucLen = 17 + limbStruct, + * InformationMask, InformationMask2, reserved, + * limbCount, then limbStruct[]. * Reply: limbCompletedCnt, ItemsCount, - * nextLimbScanNum, InfoBlock[]. + * nextLimbScanNum, then InfoBlock[]. * Future owner: namespace tree scanner. */ completition = 0xfb; break; - case 0x0a: /* Get Reference Count from Dir Entry Number. - * Request: Volume, DirBase, NameSpace. + case 0x0a: /* SDK 90/10 Get Reference Count from Dir Entry Number. + * Request: SubFuncStrucLen = 13, Volume, + * DirBase, NameSpace. * Reply: ReferenceCount. */ completition = 0xfb; break; - case 0x0b: /* Get Reference Count from Dir Handle. - * Request: DirectoryHandle. + case 0x0b: /* SDK 90/11 Get Reference Count from Dir Handle. + * Request: SubFuncStrucLen = 5, + * DirectoryHandle. * Reply: ReferenceCount. */ completition = 0xfb; break; - case 0x0c: /* Set Compressed File Size. - * Request: file identity plus compressed size - * fields as documented for SDK 90/12. - * Reply: no payload; Completion reports status. + case 0x0c: /* SDK 90/12 Set Compressed File Size. + * Request: SubFuncStrucLen = 11, + * NetWareFileHandle, SuggestedFileSize. + * Reply: OldFileSize, NewFileSize. * Future owner: filesystem/compression metadata. */ completition = 0xfb;