docs: add detailed NCP endpoint audit
All checks were successful
Source release / source-package (push) Successful in 1m22s
All checks were successful
Source release / source-package (push) Successful in 1m22s
This commit is contained in:
258
ENDPOINTS.md
Normal file
258
ENDPOINTS.md
Normal file
@@ -0,0 +1,258 @@
|
||||
# NCP endpoint audit
|
||||
|
||||
This file is the detailed endpoint audit for MARS-NWE. It is deliberately more
|
||||
mechanical than `TODO.md`: it records the NetWare SDK/NDK endpoint numbers, the
|
||||
wire/code selectors used by MARS-NWE, the implementation state, and the source
|
||||
files that should be checked when changing an endpoint.
|
||||
|
||||
Patch chronology belongs in `AI.md`. Architecture discussion belongs in
|
||||
`REDESIGN.md`. This file is the cross-reference used while implementing and
|
||||
reviewing protocol handlers.
|
||||
|
||||
## Numbering convention
|
||||
|
||||
Novell documentation usually names grouped endpoints as decimal `function / subfunction` values, for example `22/35` for **Get Directory Disk Space Restriction**. In MARS-NWE source code those selectors are normally written in hex C switch cases. Therefore:
|
||||
|
||||
```text
|
||||
NCP packet type: 0x2222
|
||||
PDF/SDK decimal group 22 == top-level wire/code case 0x16
|
||||
PDF/SDK decimal group 23 == top-level wire/code case 0x17
|
||||
PDF/SDK decimal group 35 == top-level wire/code case 0x23
|
||||
PDF/SDK decimal group 86 == top-level wire/code case 0x56
|
||||
PDF/SDK decimal group 87 == top-level wire/code case 0x57
|
||||
PDF/SDK decimal group 89 == top-level wire/code case 0x59, LONG/namespace variant in the NDK
|
||||
PDF/SDK decimal group 90 == top-level wire/code case 0x5a
|
||||
PDF/SDK decimal group 104 == top-level wire/code case 0x68
|
||||
PDF/SDK decimal group 123 == top-level wire/code case 0x7b
|
||||
```
|
||||
|
||||
For nested groups, both numbers must be kept in comments and docs. Example:
|
||||
|
||||
```text
|
||||
NCP 0x2222 / decimal 22/35 == MARS top-level case 0x16, subcase 0x23.
|
||||
```
|
||||
|
||||
## Reference inputs used for this audit
|
||||
|
||||
- `ncp__enu.pdf` / extracted `ncp_pdf/ncp.txt`: canonical NDK **NetWare Core Protocols** endpoint list and request/reply tables. This PDF is newer than the current MARS-NWE default scope and includes later NetWare/OES material, so it must be filtered by scope.
|
||||
- `websdk.tar(6).gz`: easier-to-grep WebSDK HTML/API material, especially CAL/client-call names and topic grouping.
|
||||
- `include.tar(12).gz`: NetWare SDK include headers. These are often the quickest source for request/reply structures exposed through client APIs. Useful examples:
|
||||
- `include/nwdirect.h`: directory trustees, directory-space limit/list/info, `DIR_SPACE_INFO`, `NW_LIMIT_LIST`.
|
||||
- `include/nwbindry.h`: bindery object rights and `NWGetObjectEffectiveRights*` prototypes.
|
||||
- `include/nwvol.h`: volume name/number/stats and `NWGetExtendedVolumeInfo`.
|
||||
- `include/*cal*.imp` / `include/delphi/*`: client API names and ordinal groupings.
|
||||
- MARS-NWE implementation files:
|
||||
- `src/nwconn.c`: main `0x2222` dispatch, NCP 22/23/35/36/37/90/104/111/112/114/123 families.
|
||||
- `src/nwbind.c`: bindery/message/queue/userquota prehandling and many forwarded NCP 23 selectors.
|
||||
- `src/namspace.c`: NCP 86/87 namespace and extended attribute groups.
|
||||
- `src/connect.c`, `src/nwfile.c`, `src/nwvolume.c`, `src/nwsalvage.c`: backend helpers used by handlers.
|
||||
|
||||
## Status vocabulary
|
||||
|
||||
| Status | Meaning |
|
||||
| --- | --- |
|
||||
| `done` | Implemented and covered by current unit/live/DOS smoke enough to leave the active queue. |
|
||||
| `implemented` | Active handler exists and should behave for normal clients, but may lack current direct tests. |
|
||||
| `partial` | Active useful implementation exists, but reply fields, edge cases, or backend semantics need audit/tests. |
|
||||
| `forwarded` | `nwconn.c` intentionally delegates to `nwbind.c` or another module. Check the target module before marking missing. |
|
||||
| `stub/no-op` | Handler returns a compatibility/dummy result or success without full server semantics. |
|
||||
| `guarded-4x` | Present only under `#if MARS_NWE_4` or documented as future 4.x scope. |
|
||||
| `open` | Documented endpoint with no reliable implementation found. |
|
||||
| `reference-only` | Later/OES/MOAB/NDS scope; record for reference, but not default runtime work. |
|
||||
|
||||
## 3.x/default endpoint queue
|
||||
|
||||
These are the default-runtime endpoint families that matter for NetWare 1.x/2.x/3.x compatibility.
|
||||
|
||||
### NCP 22 Directory Services group (`0x2222`, decimal 22 == wire/code `0x16`)
|
||||
|
||||
The group request header is the classic three-byte nested header after the NCP envelope:
|
||||
|
||||
```text
|
||||
word SubFuncStrucLen (Hi-Lo)
|
||||
byte SubFunctionCode
|
||||
... subfunction payload
|
||||
```
|
||||
|
||||
`src/nwconn.c` parses `SubFunctionCode` as `*(requestdata + 2)`. The table below lists PDF decimal selectors and the MARS hex subcase.
|
||||
|
||||
| PDF decimal | Code hex | PDF/WebSDK name | MARS status | Handler / notes |
|
||||
| ---: | ---: | --- | --- | --- |
|
||||
| 22/00 | 0x00 | Set Directory Handle | implemented | `src/nwconn.c`; old directory handle remap. |
|
||||
| 22/01 | 0x01 | Get Directory Path | implemented | `src/nwconn.c`; returns length + path. |
|
||||
| 22/02 | 0x02 | Scan Directory Information | partial | `src/nwconn.c`; old DOS layout; needs edge-case tests. |
|
||||
| 22/03 | 0x03 | Get Effective Directory Rights | implemented | Uses trustee rights conversion; keep old 8-bit mask semantics. |
|
||||
| 22/04 | 0x04 | Modify Maximum Rights Mask | partial | IRM mutation works; review DOS client edge cases. |
|
||||
| 22/05 | 0x05 | Get Volume Number | implemented | Name-to-volume lookup. |
|
||||
| 22/06 | 0x06 | Get Volume Name | implemented | Volume number-to-name lookup. |
|
||||
| 22/0A | 0x0a | Create Directory | implemented | DOS namespace path create. |
|
||||
| 22/0B | 0x0b | Delete Directory | implemented | Directory delete path; salvage interactions need continued tests. |
|
||||
| 22/0C | 0x0c | Scan Directory for Trustees | implemented | Do not confuse with `22/12`; current code documents this. |
|
||||
| 22/0D | 0x0d | Add Trustee to Directory | implemented | Trustee xattr/backend path. |
|
||||
| 22/0E | 0x0e | Delete Trustee from Directory | implemented | Trustee remove path. |
|
||||
| 22/0F | 0x0f | Rename Directory | partial | Old dir rename; namespace conflict handling still belongs to DOS namespace work. |
|
||||
| 22/10 | 0x10 | Purge Erased Files (old) | partial | Salvage compatibility. Check `.recycle`/`.salvage` sidecars. |
|
||||
| 22/11 | 0x11 | Recover Erased File (old) | partial | Salvage recover compatibility. |
|
||||
| 22/12 | 0x12 | Allocate Permanent Directory Handle | implemented | Shares active handler with `22/13`/`22/16`. |
|
||||
| 22/13 | 0x13 | Allocate Temporary Directory Handle | implemented | Shares active handler with `22/12`/`22/16`. |
|
||||
| 22/14 | 0x14 | Deallocate Directory Handle | implemented | Handle release. |
|
||||
| 22/15 | 0x15 | Get Volume Info with Handle | implemented | Old volume info reply. |
|
||||
| 22/16 | 0x16 | Allocate Special Temporary Directory Handle | implemented | Shares active handler with handle allocation. |
|
||||
| 22/17 | 0x17 | Extract a Base Handle | implemented | Base-handle extraction. |
|
||||
| 22/18 | 0x18 | Restore an Extracted Base Handle | implemented | Returns bad station for invalid state. |
|
||||
| 22/19 | 0x19 | Set Directory Information | partial | Old metadata setter; align with NSS-shaped metadata helpers. |
|
||||
| 22/1A | 0x1a | Get Path Name of a Volume-Directory Number Pair | implemented | Path lookup. |
|
||||
| 22/1B | 0x1b | Scan Salvageable Files (old) | partial | Active bridge to salvage backend; next work is deleted metadata snapshot. |
|
||||
| 22/1C | 0x1c | Recover Salvageable File (old) | partial | Active bridge to salvage backend. |
|
||||
| 22/1D | 0x1d | Purge Salvageable File (old) | partial | Active bridge to salvage backend. |
|
||||
| 22/1E | 0x1e | Scan a Directory | partial | Used by `ndir.exe`; search/namespace edge cases remain. |
|
||||
| 22/1F | 0x1f | Scan root directory / old root scan | partial | Current code has uncertain old-client comments; needs doc/test. |
|
||||
| 22/20 | 0x20 | Scan Volume's User Disk Restrictions | partial | Userquota scan; covered by quota smokes for core behaviour, scan reply needs audit. |
|
||||
| 22/21 | 0x21 | Add User Disk Space Restriction | done | Forwarded/prehandled by `nwbind.c`; QUOTA and SYS backends live/DOS-smoked. |
|
||||
| 22/22 | 0x22 | Remove User Disk Space Restrictions | done | Forwarded/prehandled by `nwbind.c`; clear/remove covered. |
|
||||
| 22/23 | 0x23 | Get Directory Disk Space Restriction | done | Directory quota get; PDF decimal `22/35`, code `0x23`; all-smoke covered. |
|
||||
| 22/24 | 0x24 | Set Directory Disk Space Restriction | done | Directory quota set/clear; PDF decimal `22/36`, code `0x24`; all-smoke covered. |
|
||||
| 22/25 | 0x25 | Set Directory Entry Information | partial | Metadata setter; keep NSS-shaped init comments consistent. |
|
||||
| 22/26 | 0x26 | Scan File or Directory for Extended Trustees | implemented | Extended trustee scan; test more object/right edge cases. |
|
||||
| 22/27 | 0x27 | Add Extended Trustee to Directory or File | implemented | Extended trustee add. |
|
||||
| 22/28 | 0x28 | Scan Directory Disk Space | partial | Sequence and basic usage path exist; reply semantics still need audit. |
|
||||
| 22/29 | 0x29 | Get Object Disk Usage and Restrictions | done | Forwarded/prehandled by `nwbind.c`; userquota smokes exercise key behaviour. |
|
||||
| 22/2A | 0x2a | Get Effective Rights for Directory Entry | partial | Active compatibility implementation; PDF/WebSDK also list 4.x clients. |
|
||||
| 22/2B | 0x2b | Remove Extended Trustee from Dir or File | implemented | Extended trustee remove. |
|
||||
| 22/2C | 0x2c | Get Volume and Purge Information | partial | Active volume/salvage info; align purge counters with salvage snapshot. |
|
||||
| 22/2D | 0x2d | Get Directory Information | partial | Old volume/directory info variant. |
|
||||
| 22/2E | 0x2e | Rename Or Move (old) | partial | Active move/rename; namespace conflict handling pending. |
|
||||
| 22/2F | 0x2f | Get Name Space Information / fill namespace buffer | partial | Used by `ncopy`; current code has historical uncertainty. |
|
||||
| 22/30 | 0x30 | Get Name Space Directory Entry | partial | Active reply; verify structure against PDF/WebSDK. |
|
||||
| 22/31 | 0x31 | Open Data Stream | partial | Active compatibility slot; data-stream semantics require tests. |
|
||||
| 22/32 | 0x32 | Get Object Effective Rights for Directory Entry | partial | Active compatibility code; keep out of “missing 4.x” bucket. |
|
||||
| 22/33 | 0x33 | Get Extended Volume Information | partial | Active compatibility code; verify `NWGetExtendedVolumeInfo` fields. |
|
||||
| 22/34 | 0x34 | Get Mount Volume List | guarded-4x | Present behind `MARS_NWE_4`; do not enable by default until layout/tests exist. |
|
||||
|
||||
Header/API cross-checks: `include/nwdirect.h` exposes `NWSetDirSpaceLimit`, `NWGetDirSpaceLimitList`, `NWGetDirSpaceInfo`, `NW_LIMIT_LIST`, `DIR_SPACE_INFO`, trustee APIs and rights masks. `include/nwbindry.h` exposes `NWGetObjectEffectiveRights*`. `include/nwvol.h` exposes `NWGetExtendedVolumeInfo`.
|
||||
|
||||
### NCP 23 Bindery / File Server Environment group (`0x2222`, decimal 23 == wire/code `0x17`)
|
||||
|
||||
MARS routes many NCP 23 selectors through `src/nwbind.c`; some FSE monitor/admin selectors remain in `src/nwconn.c`. Do not mark a selector missing until both files are checked.
|
||||
|
||||
| Selector area | PDF examples | MARS status | Handler / notes |
|
||||
| --- | --- | --- | --- |
|
||||
| Bindery login/keyed login/password/object/property operations | `23/00`, `23/14`, `23/18`, `23/32`-`23/4C` | partial/implemented | Mostly `src/nwbind.c`; test bindery object/property edge cases and `List Relations Of an Object` (`23/4C`). |
|
||||
| Connection info and internet address | `23/13`, `23/1A`-`23/1E`, `23/FE` | partial | `src/nwbind.c` and dispatcher glue. |
|
||||
| Scan File Information / Set File Information | `23/0F`, `23/10` | partial | `src/nwconn.c`; metadata field layouts need endpoint comments where missing. |
|
||||
| Queue calls | `23/64`, `23/68`, `23/69`, `23/6C`, `23/79`, `23/7A`, `23/7C`, `23/7F`, `23/83`, `23/84` | partial | `src/nwconn.c`/`src/nwbind.c`; queue path case and operator model remain TODO. |
|
||||
| Map Directory Number to Path / Convert Path to Dir Entry | `23/F3`, `23/F4` | partial | Active compatibility helpers; verify against old admin/DOS utilities. |
|
||||
| File Server Environment monitor selectors | many CAL/FSE APIs in `include/*calfse*` | partial/stub | `src/nwconn.c`; some return dummy/no-op replies; keep comments explicit. |
|
||||
|
||||
### Direct file and lock NCPs
|
||||
|
||||
| PDF decimal / code | Name | MARS status | Handler / notes |
|
||||
| --- | --- | --- | --- |
|
||||
| `0x2222/03` | Log File | implemented | `src/nwconn.c`; old lock/log path. |
|
||||
| `0x2222/04`, `0x2222/6A` | Lock File Set old/new | partial | Lock semantics are compatibility-level. |
|
||||
| `0x2222/05`, `0x2222/06`, `0x2222/07`, `0x2222/08` | Release/Clear File and File Set | partial | Check old-client locking behaviour. |
|
||||
| `0x2222/09`-`0x2222/0E`, `0x2222/6B`, `0x2222/6C` | Logical record log/lock/release/clear | partial | Active compatibility paths; tests needed. |
|
||||
| `0x2222/1A`-`0x2222/1F`, `0x2222/6D`, `0x2222/6E` | Physical record log/lock/release/clear | partial | Active compatibility paths; tests needed. |
|
||||
| `0x2222/41`-`0x2222/4D`, `0x2222/54` | Old direct file open/create/close/read/write/rename/erase | implemented/partial | Active in `src/nwconn.c`; file write now covered indirectly by quota smokes. |
|
||||
| `0x2222/4F` | Set File Extended Attributes | stub/no-op | Active compatibility stub; document request layout before changing. |
|
||||
| `0x2222/55` | Get Sparse File Data Block Bit Map | stub/no-op | Active compatibility stub for later sparse data semantics. |
|
||||
|
||||
### NCP 86 Extended Attribute group (`0x2222`, decimal 86 == wire/code `0x56`)
|
||||
|
||||
Handled by `src/namspace.c` through the EA group dispatcher.
|
||||
|
||||
| PDF decimal | Code hex | Name | MARS status | Notes |
|
||||
| ---: | ---: | --- | --- | --- |
|
||||
| 86/01 | 0x01 | Close Extended Attribute Handle | partial | Active in `namspace.c`; xattr lifetime semantics need audit. |
|
||||
| 86/02 | 0x02 | Write Extended Attribute | partial | Active; tied to backup metadata compatibility. |
|
||||
| 86/03 | 0x03 | Read Extended Attribute | partial | Active; xattr roundtrip tests cover local helpers. |
|
||||
| 86/04 | 0x04 | Enumerate Extended Attribute | partial | Active; verify enumerate buffer layout. |
|
||||
| 86/05 | 0x05 | Duplicate Extended Attributes | partial | Active helper path. |
|
||||
|
||||
### NCP 87 Name Space group (`0x2222`, decimal 87 == wire/code `0x57`)
|
||||
|
||||
Handled by `src/namspace.c`. This group is a core 3.x namespace target. Some 4.x-era selectors are deliberately present as documented stubs or compatibility slots.
|
||||
|
||||
| PDF decimal | Code hex | Name | MARS status | Notes |
|
||||
| ---: | ---: | --- | --- | --- |
|
||||
| 87/01 | 0x01 | Open/Create File or Subdirectory | partial | Active; DOS namespace rules still being aligned. |
|
||||
| 87/02 | 0x02 | Initialize Search | partial | Active. |
|
||||
| 87/03 | 0x03 | Search for File or Subdirectory | partial | Active; wildcard/case rules pending. |
|
||||
| 87/04 | 0x04 | Rename Or Move a File or Subdirectory | partial | Active. |
|
||||
| 87/05 | 0x05 | Scan File or Subdirectory for Trustees | partial | Active. |
|
||||
| 87/06 | 0x06 | Obtain File or Subdirectory Information | partial | Active. |
|
||||
| 87/07 | 0x07 | Modify File or Subdirectory DOS Information | partial | Active; metadata layout needs continued audit. |
|
||||
| 87/08 | 0x08 | Delete a File or Subdirectory | partial | Active; salvage snapshot integration pending. |
|
||||
| 87/09 | 0x09 | Set Short Directory Handle | partial | Active. |
|
||||
| 87/10-12 | 0x0a-0x0c | Trustee add/delete/allocate handle | partial | Active. |
|
||||
| 87/16-18 | 0x10-0x12 | Scan/Recover/Purge Salvageable File | partial | Active; align with NSS-shaped deleted metadata. |
|
||||
| 87/19-28 | 0x13-0x1c | NS information, path and directory entry queries | partial | Active; request/reply comments need consistent layouts. |
|
||||
| 87/29 | 0x1d | Get Effective Directory Rights | partial | Active. |
|
||||
| 87/30-33 | 0x1e-0x21 | Open/Create II and callback variants | partial/stub | Active compatibility or documented no-op depending selector. |
|
||||
| 87/34-38 | 0x22-0x26 | Callback/file log/release/clear | stub/no-op | Documented but limited semantics. |
|
||||
| 87/39 | 0x27 | Get Directory Disk Space Restriction | partial | Namespace variant of dirquota; core 22/35 path is done. |
|
||||
| 87/40 | 0x28 | Search for File or Subdirectory Set extended errors | partial | Active search variant. |
|
||||
| 87/41-42 | 0x29-0x2a | Salvageable file list scan/purge | partial/open | PDF-listed 4.x-style list variants; active comments identify missing semantics. |
|
||||
| 87/43-44 | 0x2b-0x2c | File handle rights revoke/update | partial/open | Layout documented in comments; backend semantics incomplete. |
|
||||
|
||||
### NCP 89 Enhanced Name Space group (`0x2222`, decimal 89 == wire/code `0x59`)
|
||||
|
||||
The NDK/PDF lists this LONG/enhanced namespace family. Current MARS-NWE does not have a separate active top-level `0x59` dispatcher. Treat these rows as audit input for future LONG/OS2 namespace work; do not silently alias them to NCP 87 unless a client trace proves compatibility.
|
||||
|
||||
| PDF decimal | Code hex | Name | MARS status | Notes |
|
||||
| ---: | ---: | --- | --- | --- |
|
||||
| 89/01, 89/30, 89/33 | 0x01, 0x1e, 0x21 | Open/Create variants | open | Compare to NCP 87 before implementing. |
|
||||
| 89/02-09 | 0x02-0x09 | Search, rename, trustee, info, delete, short handle | open | Future LONG/OS2 namespace work. |
|
||||
| 89/16, 89/20, 89/28, 89/29, 89/35, 89/39, 89/40 | various | Salvage/search/path/rights/dirquota variants | open | Use PDF/WebSDK request layouts before adding runtime handlers. |
|
||||
| 89/50-54, 89/71 | 0x32-0x36, 0x47 | Enhanced rights and EA operations | open | Later enhanced namespace/EA work. |
|
||||
|
||||
### AFP, NCP extension and miscellaneous 3.x-adjacent groups
|
||||
|
||||
| Family | PDF decimal / code | MARS status | Handler / notes |
|
||||
| --- | --- | --- | --- |
|
||||
| AFP | `35/01`-`35/19`, top-level `0x23` | partial | `src/nwconn.c`; backend boundary exists. Keep metadata changes isolated from DOS namespace. |
|
||||
| NCP extension info/execute | `36/00`-`36/06`, `37`, top-level `0x24`/`0x25` | guarded-4x/stub | Mostly `MARS_NWE_4` planned scope; not default 3.x runtime. |
|
||||
| TTS | `34/00`-`34/10`, top-level `0x22` | stub/no-op | Compatibility replies; no real transaction subsystem. |
|
||||
| Semaphores | direct old group and `111/00`-`111/04` | partial | Active compatibility semantics. |
|
||||
| Packet burst | `101`, top-level `0x65` | implemented/partial | Packet burst connection request exists. |
|
||||
|
||||
## 4.x / guarded endpoint queue
|
||||
|
||||
These endpoints are either 4.x-era, later than the current default runtime scope, or already have limited active compatibility code. The table separates “already active compatibility” from “guarded/later”.
|
||||
|
||||
| PDF decimal / code | Name | MARS status | Policy |
|
||||
| --- | --- | --- | --- |
|
||||
| 22/50 (`0x32`) | Get Object Effective Rights for Directory Entry | partial / active compatibility | Keep active; verify layout. Do not move behind `MARS_NWE_4` because clients may already use it. |
|
||||
| 22/51 (`0x33`) | Get Extended Volume Information | partial / active compatibility | Keep active; compare `include/nwvol.h` `NWGetExtendedVolumeInfo`. |
|
||||
| 22/52 (`0x34`) | Get Mount Volume List | guarded-4x | Present behind `MARS_NWE_4`; keep guarded. |
|
||||
| 90/00, 90/10-12, 90/128-136, 90/150 | Data migration / compression / migration requests | guarded-4x/reference | Do not enable default runtime without migration backend. |
|
||||
| 104 (`0x68`) | NDS NCP / NDS Fragger | guarded-4x/reference | Current code has selector skeleton under `MARS_NWE_4`; needs real NDS/nwnds layer. |
|
||||
| 112 (`0x70`) | Clear Lock Wait Node | partial/stub | Old compatibility slot; verify if 3.x clients need it. |
|
||||
| 114 (`0x72`) | Time Synchronization group | guarded-4x/reference | Keep guarded until time-sync compatibility is explicitly required. |
|
||||
| 123 (`0x7b`) | Server information/statistics group | guarded-4x/reference | Many CAL FSE APIs map here; current skeleton is 4.x planned scope. |
|
||||
| NCP extension registration/execute | 36/xx, 37 | guarded-4x/reference | Keep as reference/stub unless a concrete test requires it. |
|
||||
|
||||
## In-code documentation rules
|
||||
|
||||
1. Comments next to switch cases should use this form:
|
||||
|
||||
```c
|
||||
/* NCP 0x2222 / decimal 22/35 == wire/code 0x16/0x23: Get Directory Disk Space Restriction. */
|
||||
```
|
||||
|
||||
2. For nested groups, document the group header once and then only the subfunction payload in each case.
|
||||
3. If a selector is forwarded, the comment must say **where** it is completed, for example `forwarded to src/nwbind.c for prehandling/reply`.
|
||||
4. If a selector is a stub/no-op, say that explicitly. Do not leave `return 0` or dummy replies undocumented.
|
||||
5. If a selector is in `#if MARS_NWE_4`, keep the comment clear that it is not default runtime scope.
|
||||
6. When the PDF uses decimal and the code uses hex, keep both values in comments for auditability.
|
||||
|
||||
## Immediate follow-up from this audit
|
||||
|
||||
- Keep `TODO.md` endpoint tables short and use this file for detailed rows.
|
||||
- Add or normalize inline comments only when touching a handler; avoid noisy churn across all old switch cases in one patch.
|
||||
- Highest-value implementation work after quota:
|
||||
1. DOS namespace rules and search semantics.
|
||||
2. Salvage snapshot / NSS-shaped deleted metadata export.
|
||||
3. NCP 22/87 search/namespace edge-case tests.
|
||||
4. Bindery relation listing and group membership tests.
|
||||
5. Queue path case/operator model cleanup.
|
||||
4
TODO.md
4
TODO.md
@@ -11,8 +11,8 @@ work belongs.
|
||||
| --- | --- | --- | --- |
|
||||
| DOS namespace compatibility | P0 | Active next | Legal names, wildcard semantics, case folding, reserved names and stable 8.3 aliases. |
|
||||
| Salvage metadata / backup-tool compatibility | P0 | Planned next | Keep `.recycle` payloads; add NSS-shaped metadata/xattr export for salvaged entries. |
|
||||
| NetWare 3.x NCP endpoint completion | P1 | Active audit + implementation | Endpoint table below is the implementation queue for default runtime work. |
|
||||
| NetWare 4.x endpoint compatibility | P2 | Partial / guarded | Some calls already have compatibility implementations; new broad 4.x work stays explicit/guarded. |
|
||||
| NetWare 3.x NCP endpoint completion | P1 | Active audit + implementation | `ENDPOINTS.md` is the detailed decimal/hex audit table; keep this TODO as the short implementation queue. |
|
||||
| NetWare 4.x endpoint compatibility | P2 | Partial / guarded | `ENDPOINTS.md` tracks active compatibility vs guarded 4.x selectors. |
|
||||
| Admin, queues, printing and TTS | P2 | Ongoing | Console-operator model, queue path case handling, print/TTS compatibility cleanup. |
|
||||
| Test infrastructure | P1 | Ongoing | CTest where offline, live all-smokes where server/client state is required, DOS tool smokes. |
|
||||
| Shared library layering | P2 | Planned cleanup | Move reusable metadata/salvage builders into libnwcore/libnwfs without importing NSS runtime subsystems. |
|
||||
|
||||
@@ -3090,6 +3090,14 @@ int nsp_salvage_purge_short_handle(int dir_handle, uint32 sequence)
|
||||
dir_handle, (unsigned long)sequence));
|
||||
return(0);
|
||||
}
|
||||
/*
|
||||
* NCP 0x2222/87 namespace group.
|
||||
*
|
||||
* Novell PDF/WebSDK documents this as decimal group 87; MARS dispatches the
|
||||
* group through top-level wire/code 0x57. Individual comments below use the
|
||||
* SDK decimal selector and the code hex selector side by side. Keep request
|
||||
* and reply notes aligned with ENDPOINTS.md when extending this switch.
|
||||
*/
|
||||
int handle_func_0x57(uint8 *p, int request_len,
|
||||
uint8 *responsedata, int task)
|
||||
{
|
||||
@@ -4131,8 +4139,15 @@ int get_namespace_dir_entry(int volume, uint32 basehandle,
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* NCP 0x2222/86 extended-attribute group.
|
||||
*
|
||||
* Novell PDF/WebSDK documents this as decimal group 86; MARS dispatches it as
|
||||
* top-level wire/code 0x56. The current implementation is a compatibility
|
||||
* shim for several selectors; comments below must say when a selector is a
|
||||
* dummy/no-op rather than a complete EA backend.
|
||||
*/
|
||||
int handle_func_0x56(uint8 *p, uint8 *responsedata, int task)
|
||||
/* extended attribute calls */
|
||||
{
|
||||
int result = -0xfb; /* unknown request */
|
||||
int ufunc = (int) *p++; /* now p locates at 4 byte boundary */
|
||||
|
||||
@@ -3595,6 +3595,11 @@ static int handle_ncp_serv(void)
|
||||
|
||||
case 0x16 : {
|
||||
/*
|
||||
* Endpoint documentation convention: Novell PDF/WebSDK names this
|
||||
* group as decimal 22; MARS source dispatches it as wire/code 0x16.
|
||||
* Keep both numbers in comments when adding or changing selectors.
|
||||
* See ENDPOINTS.md for the current audit table and source cross-checks.
|
||||
*
|
||||
* NCP 0x2222/22 is the old Directory Services function group.
|
||||
* These calls use the classic nested NCP 22 group header:
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user