docs: split timesync selector notes
All checks were successful
Source release / source-package (push) Successful in 45s

This commit is contained in:
Mario Fetka
2026-06-02 19:46:01 +00:00
parent dc9b54e3a6
commit 817896028f
3 changed files with 85 additions and 28 deletions

21
AI.md
View File

@@ -1138,4 +1138,23 @@ Next patch number should be `0253`.
migrated-file state, support-module registration, capacity accounting,
migrator status, RTDM verbs, and file-migration attribute persistence.
Next patch number should be `0254`.
## 2026-06-02 - Patch 0254 TimeSync selector split 114/01..12
- Continued NDK-first after SDK `90` Data Migration with the planned NetWare-4.x
Time Synchronization family in `src/nwconn.c`:
- `114/01` Timesync Get Time
- `114/02` Timesync Exchange Time
- `114/05` Timesync Get Server List
- `114/06` Timesync Set Server List
- `114/12` Timesync Get Version
- The source already had selector coverage behind `MARS_NWE_4`, but the cases
were grouped with fall-through to one shared unsupported return. Patch `0254`
splits them so each selector has its own `case`, own `Request:` summary, own
`Response:` summary, and own `0xfb` return.
- Runtime behavior remains unchanged: TimeSync remains unsupported until a real
server-management/time provider exists.
- Do not emulate the NDK note that `114/06` returns success in all cases until
there is an explicit TimeSync compatibility policy and real server-list state.
Next patch number should be `0255`.

21
TODO.md
View File

@@ -213,10 +213,11 @@ Present in the code but not yet fully endpoint-audited:
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/114` / wire `0x72` Time Synchronization is source-stub-audited
as a NetWare-4.x time-service compatibility family. Patch 0229 records
as a NetWare-4.x time-service compatibility family. Patch 0254 keeps the
disabled `MARS_NWE_4` selector slots for `114/01` Get Time, `114/02`
Exchange Time, `114/05` Get Server List, `114/06` Set Server List, and
`114/12` Get Version in `src/nwconn.c`. Future ownership belongs to a
`114/12` Get Version in `src/nwconn.c`, split into one case-local
Request/Response comment per selector. Future ownership belongs to a
server-management/time provider, not `nwnds`; do not emulate the documented
success behavior of Set Server List until there is a real TimeSync policy.
- SDK `0x2222/90` / wire `0x5a` Data Migration / tree metadata is
@@ -1778,3 +1779,19 @@ Follow-up:
- Continue NDK-first with the next documented NetWare 1.x/2.x/3.x endpoint or
planned 4.x endpoint after SDK `90` Data Migration, keeping one case-local
Request/Response comment per selector and skipping 5.x-only endpoints.
### SDK 114 TimeSync selector split
Current status:
- Patch `0254` revisits the planned NetWare-4.x Time Synchronization family in
`src/nwconn.c` and splits the old grouped fall-through selector notes into
individual cases for `114/01`, `114/02`, `114/05`, `114/06`, and `114/12`.
- Runtime behavior is unchanged; all TimeSync selectors still return `0xfb`
until a real server-management/time provider and compatibility policy exist.
Follow-up:
- Continue NDK-first with the next documented NetWare 1.x/2.x/3.x endpoint or
planned 4.x endpoint after Time Synchronization, keeping one case-local
Request/Response comment per selector and skipping 5.x-only endpoints.

View File

@@ -7870,35 +7870,56 @@ static int handle_ncp_serv(void)
switch (ts_subfunc) {
case 0x01: /* 114/01 Timesync Get Time.
* Request: SubFuncStrucLen=1, SubFuncCode=1.
* Reply: theTime long[3], eventOffset int64,
* Response: theTime long[3], eventOffset int64,
* eventTime long, eventParm pointer/opaque.
*/
case 0x02: /* 114/02 Timesync Exchange Time.
* Request/Reply: SubFuncStrucLen=103,
* SubFuncCode=2, protocolFlags, nodeFlags,
* source/target timestamps, event fields, and
* serverName char[50].
*/
case 0x05: /* 114/05 Timesync Get Server List.
* Request: SubFuncStrucLen=5, SubFuncCode=5,
* StartNumber long.
* Reply: nameType, serverName[48],
* serverListFlags, startNumberFlag.
*/
case 0x06: /* 114/06 Timesync Set Server List.
* Request: SubFuncStrucLen=5, SubFuncCode=6,
* StartNumber long.
* Reply matches Get Server List; NDK remarks
* say this NCP returns success in all cases.
* Do not emulate that success until there is a
* real TimeSync compatibility decision.
*/
case 0x0c: /* 114/12 Timesync Get Version.
* Request: SubFuncStrucLen=1, SubFuncCode=12.
* Reply: version long.
*/
completition = 0xfb;
break;
case 0x02: /* 114/02 Timesync Exchange Time.
* Request: SubFuncStrucLen=103, SubFuncCode=2,
* protocolFlags long, nodeFlags long,
* sourceOriginateTime int64,
* targetReceiveTime int64,
* targetTransmitTime int64,
* sourceReturnTime int64, eventOffset int64,
* eventTime long, serverName char[50].
* Response: SubFuncStrucLen=103, SubFuncCode=2,
* protocolFlags long, nodeFlags long,
* source/target timestamps, event fields, and
* serverName char[50].
*/
completition = 0xfb;
break;
case 0x05: /* 114/05 Timesync Get Server List.
* Request: SubFuncStrucLen=5, SubFuncCode=5,
* StartNumber long.
* Response: nameType word, serverName char[48],
* serverListFlags long, startNumberFlag word.
*/
completition = 0xfb;
break;
case 0x06: /* 114/06 Timesync Set Server List.
* Request: SubFuncStrucLen=5, SubFuncCode=6,
* StartNumber long.
* Response: nameType word, serverName char[48],
* serverListFlags long, startNumberFlag word.
* NDK remarks say this NCP returns success in
* all cases; do not emulate that success until
* there is a real TimeSync compatibility policy.
*/
completition = 0xfb;
break;
case 0x0c: /* 114/12 Timesync Get Version.
* Request: SubFuncStrucLen=1, SubFuncCode=12.
* Response: version long.
*/
completition = 0xfb;
break;
default: completition = 0xfb;
break;
}