From 0ff8e9d0c62197238adf08b96b78a017df5f9cd1 Mon Sep 17 00:00:00 2001 From: test Date: Tue, 2 Jun 2026 16:24:34 +0000 Subject: [PATCH] docs: audit data migration endpoint stubs --- AI.md | 20 +++++++++ TODO.md | 12 +++-- src/nwconn.c | 123 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 152 insertions(+), 3 deletions(-) diff --git a/AI.md b/AI.md index 8307290..8c0d590 100644 --- a/AI.md +++ b/AI.md @@ -606,3 +606,23 @@ Latest endpoint audit checkpoint from patch 0223: - This block is local synchronization, not `nwnds`/directory work. Next patch number should be `0224`. + +Latest endpoint audit checkpoint from patch 0224: + +- SDK `0x2222/90` / wire `0x5a` Data Migration / parse-tree / compression + metadata is now source-stub-audited as planned NetWare-4.x filesystem and + namespace work. There was no active top-level handler in `src/nwconn.c`. +- Patch `0224` records the selector map behind `MARS_NWE_4`: `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, + `90/128` Move File Data To DM, `90/129` DM File Information, `90/130` + Volume DM Status, `90/131` Migrator Status Info, `90/132` DM Support Module + Information, `90/133` Move File Data From DM, `90/134` Get/Set Default + Read-Write Support Module ID, `90/135` DM Support Module Capacity Request, + `90/136` RTDM Request, and `90/150` File Migration Request. +- The future owner is the filesystem/namespace provider, not `nwnds`. There + is no active Data Migration support module, parse-tree engine, compressed + file-size backend, or RTDM provider yet. Keep this as unsupported `0xfb` + unless the filesystem provider grows real backing state. + +Next patch number should be `0225`. diff --git a/TODO.md b/TODO.md index 5347404..25af673 100644 --- a/TODO.md +++ b/TODO.md @@ -211,6 +211,13 @@ Present in the code but not yet fully endpoint-audited: semaphore calls remain the active compatibility implementation; patch 0223 records `111/00`..`111/04` as disabled `#if 0` selector slots in `src/nwconn.c` so the future semaphore provider can bridge both families. +- SDK `0x2222/90` / wire `0x5a` Data Migration / tree metadata is + source-stub-audited as planned 4.x filesystem/namespace work. Patch 0224 + records the 4.x-era `90/00`, `90/10`, `90/11`, `90/12`, `90/128`..`90/136`, + and `90/150` selector slots behind `MARS_NWE_4` in `src/nwconn.c`. There is + no active data-migration support module, compression metadata backend, or + parse-tree provider yet; future ownership belongs to the filesystem/namespace + provider, not `nwnds`. - SDK `0x2222/17` / wire `0x11` direct Print/Spool is source-stub-audited as a NetWare 2.x/3.x/4.x compatibility family. There is no active top-level handler for these legacy direct spool NCPs, so patch 0218 records @@ -236,9 +243,8 @@ Present in the code but not yet fully endpoint-audited: SDK-listed blocks that do not currently show a top-level handler in `src/nwconn.c`: -- SDK `0x2222/90` / wire `0x5a` Data Migration/Compression/Parse Tree, - SDK `0x2222/92` / wire `0x5c` SecretStore, SDK `0x2222/123` / wire `0x7b` - service-address enumeration, and SDK `0x2222/131` / wire `0x83` +- SDK `0x2222/92` / wire `0x5c` SecretStore, SDK `0x2222/123` / wire + `0x7b` service-address enumeration, and SDK `0x2222/131` / wire `0x83` RPC/NLM-control style calls appear in the PDF/WebSDK index but do not currently show top-level handlers in `src/nwconn.c`. These are likely later-generation buckets, but each must be confirmed against the diff --git a/src/nwconn.c b/src/nwconn.c index 0a7f6cb..d46d052 100644 --- a/src/nwconn.c +++ b/src/nwconn.c @@ -6986,6 +6986,129 @@ static int handle_ncp_serv(void) break; #endif + +#if MARS_NWE_4 + case 0x5a : { /* SDK 90 / wire 0x5a Data Migration / tree metadata. + * + * Source outcome: no active top-level handler existed for + * this 4.x-era family. Keep the selector map disabled + * behind MARS_NWE_4 until the filesystem/namespace provider + * has real tree parsing, compression, reference-count, and + * data-migration state. + * + * Request handoff: requestdata[0] is the SDK 90 + * SubFunctionCode. Most fields in this family are + * documented by the NDK as Lo-Hi payload fields after the + * normal SubFuncStrucLen/SubFunctionCode prefix. + * Reply ownership: this local slot would return a normal + * NCP Completion plus optional payload. No data migration + * support module or compression backend exists here yet. + * Future owner: filesystem/namespace provider, not nwnds. + */ + int dm_sub = (requestlen > (int)sizeof(NCPREQUEST)) + ? (int)requestdata[0] : -1; + + switch (dm_sub) { + case 0x00: /* Parse Tree. + * Request: InformationMask, InformationMask2, + * reserved, limbCount, limbStruct[]. + * Reply: limbCompletedCnt, ItemsCount, + * nextLimbScanNum, InfoBlock[]. + * Future owner: namespace tree scanner. + */ + completition = 0xfb; + break; + case 0x0a: /* Get Reference Count from Dir Entry Number. + * Request: Volume, DirBase, NameSpace. + * Reply: ReferenceCount. + */ + completition = 0xfb; + break; + case 0x0b: /* Get Reference Count from Dir Handle. + * Request: 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. + * Future owner: filesystem/compression metadata. + */ + completition = 0xfb; + break; + case 0x80: /* Move File Data To DM. + * Request: Volume, DirectoryEntry, NameSpace, + * SupportModuleID, Flags. + * Reply: no payload; Completion reports status. + */ + completition = 0xfb; + break; + case 0x81: /* DM File Information. + * Request: file identity and name-space fields. + * Reply: DMInfoEntries plus DMINFO records. + */ + completition = 0xfb; + break; + case 0x82: /* Volume DM Status. + * Request: Volume, SupportModuleID. + * Reply: migration counters and space totals. + */ + completition = 0xfb; + break; + case 0x83: /* Migrator Status Info. + * Request: SubFunctionCode only. + * Reply: DMPresentFlag, DMmajorVersion, + * DMminorVersion. + */ + completition = 0xfb; + break; + case 0x84: /* DM Support Module Information. + * Request: InfoLevel, SupportModuleID. + * Reply: level-dependent support-module data. + */ + completition = 0xfb; + break; + case 0x85: /* Move File Data From DM. + * Request: Volume, DirectoryEntry, NameSpace, + * SupportModuleID, Flags. + * Reply: no payload; Completion reports status. + */ + completition = 0xfb; + break; + case 0x86: /* Get/Set Default Read-Write Support Module ID. + * Request: Get/SetFlag, SupportModuleID. + * Reply: SupportModuleID. + */ + completition = 0xfb; + break; + case 0x87: /* DM Support Module Capacity Request. + * Request: SMCapacityReq. + * Reply: block size, total blocks, used blocks. + */ + completition = 0xfb; + break; + case 0x88: /* RTDM Request. + * Request: Verb plus VerbData. + * Reply: verb-specific; no RTDM provider exists. + */ + completition = 0xfb; + break; + case 0x96: /* File Migration Request. + * Request/Reply: migration-operation specific + * file request carried in SDK 90/150. + * Future owner: filesystem/data-migration bridge. + */ + completition = 0xfb; + break; + default: completition = 0xfb; + break; + } + } + break; +#endif + #ifdef _MAR_TESTS_XX case 0x5f : { /* ????????????? UNIX Client */ /* a 4.1 Server also do not know this call */