diff --git a/AI.md b/AI.md index 0f1f678..3ada434 100644 --- a/AI.md +++ b/AI.md @@ -11,18 +11,18 @@ When the user says this is a new chat or asks to continue mars-nwe work, first read this file before proposing patches or making assumptions. Then ask for, or use, the current project status that the user pasted into the chat. -## Current handoff status after patch 0215 +## Current handoff status after patch 0216 The current accepted patch line in this chat is expected to include: - endpoint-audit/documentation patches through `0176-docs-audit-direct-lifecycle-buffer-endpoints.patch`; - redesign documentation patches `0177` through `0198`; -- endpoint-audit/documentation patches `0199` through `0215`; -- latest expected patch name: `0215-docs-audit-enhanced-namespace-scope.patch`. +- endpoint-audit/documentation patches `0199` through `0216`; +- latest expected patch name: `0216-docs-audit-packet-burst-endpoints.patch`. When continuing in a new chat, first ask the user which patch was actually last -applied. If they confirm `0215`, build the next patch as `0216-...` against a -tree that already contains `0215`. If any patch failed or was skipped, rebuild +applied. If they confirm `0216`, build the next patch as `0217-...` against a +tree that already contains `0216`. If any patch failed or was skipped, rebuild against the last confirmed applied patch instead of assuming the file in `/mnt/data` was accepted. @@ -198,22 +198,20 @@ Schema/import direction: Latest endpoint audit note: -- Patch `0215` audits `NCP 0x2222/89` / wire `0x59` Enhanced Name Space for - generation scope. `src/nwconn.c` has no top-level `case 0x59`, and the local - NDK/Core-Protocols Enhanced NCP chapter marks the checked `89/xx` request - pages as a later-generation NetWare 6.5 SP2 family. The group contains - enhanced variants of namespace, trustee, salvage, EA, and rights operations - such as `89/01`..`89/12`, `89/16`, `89/17`, `89/19`, `89/20`, `89/22`, - `89/25`, `89/28`, `89/29`, `89/35`, `89/39`, `89/40`, `89/50`, `89/52`, - `89/53`, `89/54`, and `89/71`. Under the current 1.x/2.x/3.x plus planned - 4.x rule, do not add `#if 0` source stubs for this family. If the project - target is extended later, treat `89` as filesystem/namespace provider work, - not NDS. +- Patch `0216` audits Packet Burst / Big Packet support in `src/nwconn.c`: SDK + `97` / wire `0x61` Get Big Packet NCP Max Packet Size, SDK `101` / wire + `0x65` Packet Burst Connection Request, and the follow-on `0x7777` + packet-burst data-plane handler. `97` and `101` are 4.x-era direct NCPs and + are present in source, so no missing stubs were needed. The audit documents + request/reply layouts, burst-mode disabled behavior (`0xfb`), and the current + lack of NDK security-flag negotiation for checksums/signatures/encryption. + The `0x7777` handler is not a normal `0x2222` endpoint; it is the runtime + data path created by `101`. -The next patch number should be `0216` if `0215` was applied. Likely next -blocks are packet burst `0x2222/97`/`101`, deeper `0x2222/23` -bindery/property/admin subfunction coverage, SDK `0x2222/90` generation-scope -work, or another user-selected endpoint family. +The next patch number should be `0217` if `0216` was applied. Likely next +blocks are the planned-4.x NDS/NCP fragger `0x2222/104` path, deeper +`0x2222/23` bindery/property/admin subfunction coverage, SDK `0x2222/90` +generation-scope work, or another user-selected endpoint family. ## Patch workflow diff --git a/TODO.md b/TODO.md index 0939442..700a0e2 100644 --- a/TODO.md +++ b/TODO.md @@ -196,11 +196,14 @@ Present in the code but not yet fully endpoint-audited: - SDK `0x2222/87` / wire `0x57` Name Space is endpoint-audited for the current 1.x/2.x/3.x plus planned-4.x scope. Later-generation high selectors `87/44` and `87/64`..`87/69` are documented as out of current source-stub - scope. SDK `0x2222/97` / wire `0x61` Packet Burst, SDK `0x2222/101` / wire - `0x65` Packet Burst - Connection Request, and SDK `0x2222/104` / wire `0x68` NDS/NCP fragger - paths all have top-level code entries and need their own generation-bucketed - audits before any new TODO stubs are added. + scope. +- SDK `0x2222/97` / wire `0x61` Get Big Packet NCP Max Packet Size and SDK + `0x2222/101` / wire `0x65` Packet Burst Connection Request are present in + `src/nwconn.c` and endpoint-audited as the 4.x-era packet-burst negotiation + and setup paths. The follow-on `0x7777` packet-burst data-plane handler is + also documented, but it is not a normal `0x2222` endpoint. +- SDK `0x2222/104` / wire `0x68` NDS/NCP fragger has a top-level code entry and + still needs its own planned-4.x audit before any new stubs are added. SDK-listed blocks that do not currently show a top-level handler in `src/nwconn.c`: @@ -1263,6 +1266,7 @@ Follow-up: * Basic Packet Burst file transfer support is implemented and verified with a diagnostics-enabled DOS client test. * Packet Burst support is built by default, but runtime use remains controlled - by `nwserv.conf`. + by `nwserv.conf`. Endpoint coverage for SDK `97` and `101` is now + documented; remaining Packet Burst work is behavioral/client-trace driven. * Packet Burst/NDS fragmentation support remains out of scope unless a concrete client requires it. diff --git a/src/nwconn.c b/src/nwconn.c index 1a382f0..170cfeb 100644 --- a/src/nwconn.c +++ b/src/nwconn.c @@ -6737,7 +6737,21 @@ static int handle_ncp_serv(void) #endif - case 0x61 : + case 0x61 : /* SDK 97 / wire 0x61 Get Big Packet NCP Max Packet Size. + * Coverage: present as the packet-burst/big-packet + * negotiation slot. This is a 4.x-era direct NCP, so it is + * in current scope and no disabled missing stub is needed. + * Request: ProposedMaxSize word Hi-Lo, then SecurityFlag + * byte. The current parser reads both fields from + * requestdata[0..2]. + * Reply: AcceptedMaxSize word Hi-Lo, EchoSocket word Hi-Lo, + * then SecurityFlag byte. MARS-NWE currently replies with + * negotiated packet size, sock_echo, and a zeroed flag byte. + * Known differences: the NDK security-flag negotiation + * semantics are documented, but this compatibility path does + * not implement signatures, checksums, or encryption policy; + * if burst mode is disabled it returns 0xfb. + */ #if ENABLE_BURSTMODE if (server_version_flags&1) { /* enable Burstmode */ /* Negotiate Buffer Size, Packetsize new ? */ @@ -6785,7 +6799,20 @@ static int handle_ncp_serv(void) } break; - case 0x65 : /* Packet Burst Connection Request */ + case 0x65 : /* SDK 101 / wire 0x65 Packet Burst Connection Request. + * Coverage: present. This is the 4.x-era packet burst + * session setup NCP, distinct from Bindery/Queue SDK + * 23/101 which is dispatched under function 23 in nwbind.c. + * Request: ClientConnID long, LocalMaxPacketSize long + * Hi-Lo, LocalTargetSocket word Hi-Lo, LocalMaxSendSize + * long Hi-Lo, LocalMaxRecvSize long Hi-Lo. + * Reply: RemoteTargetID long, MaxPacketSize long Hi-Lo, + * MaxSendSize long Hi-Lo, MaxRecvSize long Hi-Lo. + * Runtime: when ENABLE_BURSTMODE and server_version_flags + * permit it, MARS-NWE allocates burst state and later + * serves 0x7777 packet-burst read/write fragments through + * handle_burst(). If disabled, it returns 0xfb. + */ #if ENABLE_BURSTMODE if (server_version_flags&1) { /* enable burstmode */ struct INPUT { @@ -7192,6 +7219,17 @@ static void handle_burst_response(uint32 offset, int size) } +/* Packet Burst 0x7777 data-plane packets. + * Coverage: this is not a 0x2222 function selector, but it is the runtime data + * path enabled by SDK 101 / wire 0x65 Packet Burst Connection Request. + * Request payload: burst header plus a reassembled BIG_READ/BIG_WRITE request + * in burst_w->recv_buf. The nested function word is little-endian: 1 = read, + * 2 = write. + * Reply payload: one or more 0x7777 burst packets containing BIG_READ/BIG_WRITE + * status structures and optional file data. nwconn owns the packet-burst + * response emission through send_burst()/handle_burst_response(); this does + * not use normal NCP completion bytes. + */ static void handle_burst(BURSTPACKET *bp, int len) { if (burst_w) {