All checks were successful
Source release / source-package (push) Successful in 48s
Wire NCP 0x16/0x33 Get Extended Volume Information to a real reply instead of returning 0xfb. The WebSDK documents NCP 0x2222/22/51 as taking a VolumeNumber and returning a low-high VolInfoReplyLen, an NWVolExtendedInfo structure, and a length-prefixed volume name. The SDK headers define NWVolExtendedInfo as 33 32-bit fields covering volume type, status flags, sector and cluster geometry, free-space counters, suballocation/limbo/compression/migration counters, directory counters, EA counters, a Directory Services object id, and a last-modified timestamp. Map the Unix filesystem data already used by the older volume-information calls to the core extended-volume fields: report a NetWare 386 v3.1 style volume type, 512-byte sectors, 8 sectors per cluster, total/free clusters, and directory-entry counters derived from fs_usage. Report NetWare-specific suballocation, limbo, compression, migration, EA, Directory Services, and timestamp fields as zero for now. Add the SDK request/reply semantics to the inline endpoint comment and remove the corresponding TODO entry. This enables the documented endpoint path while keeping the mapping conservative; fields MARS-NWE cannot currently model remain zero rather than guessed.
142 lines
5.8 KiB
Markdown
142 lines
5.8 KiB
Markdown
# TODO
|
|
|
|
This file collects follow-up work that is known but intentionally not part of the current patches. It is meant for project-level items that are too broad or too low-priority to keep as inline source TODO comments.
|
|
|
|
## Server / NCP compatibility
|
|
|
|
### Console privilege model
|
|
|
|
Current status:
|
|
|
|
- `NCP 23/200 Check Console Privileges` is implemented as a protocol-compatible status check.
|
|
- For now, console privileges are mapped to the existing supervisor-equivalence state computed for the connection.
|
|
- Callers with supervisor equivalence get success; other callers get `0xc6` (`No Console Rights`).
|
|
|
|
Follow-up:
|
|
|
|
- Add a real console-operator privilege model instead of treating console rights as identical to supervisor equivalence.
|
|
- Decide where the console privilege map should live:
|
|
- a bindery property,
|
|
- a server configuration option,
|
|
- or a small explicit internal list similar to queue operator handling.
|
|
- Check how NetWare 3.x tools such as `PCONSOLE`, `SYSCON`, and console utilities expect console operators to be represented.
|
|
- Keep `NCP 23/200` as a completion-code-only endpoint; only the privilege source should change.
|
|
|
|
### Queue spool path case handling
|
|
|
|
Current status:
|
|
|
|
- Queue job paths can still be rebuilt from DOS/bindery path spelling such as `SYS:SYSTEM/EPSON.QDR`.
|
|
- On a case-sensitive Unix filesystem this can differ from the existing directory, for example `system/epson.qdr`.
|
|
|
|
Follow-up:
|
|
|
|
- Resolve queue job file paths case-insensitively in the queue connection/path resolver, or use the queue object's already-resolved Unix spool directory instead of rebuilding it from the DOS path.
|
|
- Avoid creating duplicate directories that differ only by case.
|
|
|
|
### NCP 17/4C test coverage
|
|
|
|
Current status:
|
|
|
|
- `NCP 17/4C List Relations of an Object` is implemented server-side.
|
|
- Existing DOS and Linux tools do not reliably trigger it for all useful set properties such as `GROUP_MEMBERS` and `GROUPS_I'M_IN`.
|
|
|
|
Follow-up:
|
|
|
|
- Add a small direct test utility to `mars-dosutils` / `NWTESTS` that sends `NCP 17/4C` directly.
|
|
- Suggested test cases:
|
|
- `TESTGRP1` type `0x0002`, property `GROUP_MEMBERS`
|
|
- `TESTGRP2` type `0x0002`, property `GROUP_MEMBERS`
|
|
- `MARIO` type `0x0001`, property `GROUPS_I'M_IN`
|
|
- `NOPASSUSER` type `0x0001`, property `GROUPS_I'M_IN`
|
|
- `GUEST` type `0x0001`, property `GROUPS_I'M_IN`
|
|
|
|
|
|
### NCP endpoint SDK documentation / stub audit
|
|
|
|
Current status:
|
|
|
|
- Several legacy NCP endpoints in `src/nwconn.c` are implemented only as
|
|
disabled stubs, explicit `0xfb` unsupported replies, or success/no-op dummies.
|
|
- The known candidates now have inline SDK-context comments so future work can
|
|
start from the documented wire semantics instead of from guesswork.
|
|
|
|
Follow-up:
|
|
|
|
- Implement or deliberately reject the following endpoints after client evidence
|
|
or direct protocol tests:
|
|
- `NCP 0x16/0x18 Restore Directory Handle`: verify the exact SDK
|
|
request/reply layout, then implement the documented function 22 /
|
|
subfunction 24 directory-handle semantics.
|
|
- Keep SDK details close to the corresponding endpoint in `nwconn.c`, and keep
|
|
broader prioritization/status here in `TODO.md`.
|
|
|
|
|
|
### NCP endpoint audit tracking
|
|
|
|
Current status:
|
|
|
|
- `src/nwconn.c` contains a mix of implemented, forwarded, partial, dummy,
|
|
and intentionally unsupported NCP endpoints.
|
|
- Endpoint comments should be aligned with the Novell SDK Web documentation,
|
|
SDK headers, the Rust `nwserver` implementation, `lwared`, and the existing
|
|
mars_nwe admin/Pascal code where those sources cover the same call.
|
|
|
|
Follow-up:
|
|
|
|
- Keep inline `TODO:` comments only where endpoint behavior is incomplete,
|
|
approximate, intentionally dummy/no-op, or still needs SDK layout
|
|
verification.
|
|
- Mirror every real incomplete endpoint in this file so follow-up work remains
|
|
visible outside the source code.
|
|
- Do not treat every `return(-1)` in `nwconn.c` as incomplete: many of those
|
|
paths intentionally forward bindery/global-server work to `nwbind`.
|
|
|
|
|
|
### NCP synchronization endpoint audit
|
|
|
|
Current status:
|
|
|
|
- The old NCP synchronization endpoint family in `src/nwconn.c` is now
|
|
annotated with Novell SDK endpoint names.
|
|
- The existing source already marked this area as not well tested, so the
|
|
comments intentionally keep that compatibility warning visible.
|
|
- `NCP 0x03`, `0x05`, `0x06`, `0x07`, `0x08`, `0x09`, `0x0a`, `0x0b`,
|
|
`0x0d`, `0x0e`, `0x1a`, and `0x1e` have local implementations.
|
|
|
|
Follow-up:
|
|
|
|
- Verify the implemented file/logical-record/physical-record calls against the
|
|
Novell SDK request/reply layouts and a real DOS requester or direct test
|
|
caller.
|
|
- Implement or explicitly decide the fate of `NCP 0x04 Lock File Set`, which
|
|
is currently present only as a disabled `#if 0` endpoint.
|
|
- Enable and test `NCP 0x0c Release Logical Record`; the existing code path can
|
|
distinguish release from clear, but the case label is currently disabled.
|
|
- Replace the `NCP 0x1f Clear Physical Record Set` dummy/no-op with real
|
|
physical-record-set cleanup, or document why no supported client relies on it.
|
|
|
|
## Printing / Queue backend
|
|
|
|
### Q_UNIX_PRINT backend status
|
|
|
|
Current status:
|
|
|
|
- Queue metadata handling and the `Q_UNIX_PRINT` backend are intentionally separate.
|
|
- The backend can already call `/usr/bin/lp`, `lpr`, or a custom script.
|
|
|
|
Follow-up:
|
|
|
|
- Improve logging around queue job submission to the Unix print command.
|
|
- Capture and expose backend exit status where possible.
|
|
- Consider direct CUPS integration only if MARS_NWE needs CUPS job IDs, cancellation, or status polling. Do not add a hard CUPS dependency for basic queue compatibility.
|
|
|
|
## Deferred / optional protocol work
|
|
|
|
* 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`.
|
|
* Packet Burst/NDS fragmentation support remains out of scope unless a concrete
|
|
client requires it.
|