docs: document remaining queue service layouts
This commit is contained in:
37
TODO.md
37
TODO.md
@@ -606,13 +606,18 @@ Current status:
|
||||
transposed set-member table; the WebSDK/include API shape matches the
|
||||
existing ObjectName/OldPassword/NewPassword parser.
|
||||
|
||||
- Queue calls SDK `23/100` through SDK `23/108` and the paired newer
|
||||
variants SDK `23/121`, `23/122`, `23/126`, `23/127`, and `23/128` were
|
||||
compared against the NDK/Core-Protocols PDF and `nwqms.h`/WebSDK queue APIs.
|
||||
- Queue calls SDK `23/100` through SDK `23/108`, queue-server and service
|
||||
calls SDK `23/109` through SDK `23/115`, the old job-size call SDK `23/120`,
|
||||
and the paired newer variants SDK `23/121` through SDK `23/129`, SDK
|
||||
`23/131`, SDK `23/132`, and SDK `23/135` were compared against the
|
||||
`nwqms.h` prototypes and extracted WebSDK queue pages.
|
||||
`src/nwconn.c` performs required prehandling for queue path rewriting,
|
||||
queue-job file creation, queue job entry file-handle insertion, and close/start
|
||||
file association before forwarding to `src/nwbind.c`. The target handlers in
|
||||
`nwbind.c` now carry the concrete request/reply layout notes.
|
||||
`nwbind.c` now carry the concrete request/reply layout notes. The newer
|
||||
queue job-control calls that document 32-bit job numbers are intentionally
|
||||
noted where the current compatibility parser still consumes or emits old
|
||||
16-bit job-number fields.
|
||||
|
||||
Follow-up:
|
||||
|
||||
@@ -636,13 +641,23 @@ Follow-up:
|
||||
Bindery Object Password; it is a NetWare 2.x/3.x compatibility call and is
|
||||
currently only a disabled documented stub.
|
||||
- Verify the shared queue handlers for newer queue calls that currently consume
|
||||
old 16-bit fields: SDK `23/122` / wire `0x7a`, SDK `23/126` / wire `0x7e`,
|
||||
SDK `23/127` / wire `0x7f`, and SDK `23/128` / wire `0x80` document long or
|
||||
Lo-Hi fields in the PDF, while the current compatibility parser often reuses
|
||||
the old 16-bit layout.
|
||||
- Audit the remaining forwarded `0x2222/23` queue and management subfunctions
|
||||
in the files that actually handle them instead of treating the `nwconn.c`
|
||||
forwarding points as complete local implementations.
|
||||
old 16-bit fields: SDK `23/122` / wire `0x7a`, SDK `23/127` / wire `0x7f`,
|
||||
SDK `23/128` / wire `0x80`, SDK `23/131` / wire `0x83`, SDK `23/132` / wire
|
||||
`0x84`, and SDK `23/135` / wire `0x87` document long or Lo-Hi job-number
|
||||
fields in the WebSDK/include material, while the current compatibility parser often reuses
|
||||
the old 16-bit layout. SDK `23/126` / wire `0x7e` also documents a long
|
||||
queue-status field but the shared parser consumes only one byte.
|
||||
- Continue the `0x2222/23` audit with the remaining queue rights/status calls
|
||||
not yet documented in `src/nwbind.c`: SDK `23/116` / wire `0x74` Change To
|
||||
Client Rights (old), SDK `23/117` / wire `0x75` Restore Queue Server Rights,
|
||||
SDK `23/118` / wire `0x76` Read Queue Server Current Status (old), SDK
|
||||
`23/119` / wire `0x77` Set Queue Server Current Status, SDK `23/130` / wire
|
||||
`0x82` Change Queue Job Position, SDK `23/133` / wire `0x85` Change To Client
|
||||
Rights, SDK `23/134` / wire `0x86` Read Queue Server Current Status, and any
|
||||
matching helper/prehandler paths.
|
||||
- Audit the remaining forwarded `0x2222/23` management subfunctions in the files
|
||||
that actually handle them instead of treating the `nwconn.c` forwarding points
|
||||
as complete local implementations.
|
||||
|
||||
|
||||
### Extended volume information field mapping
|
||||
|
||||
110
src/nwbind.c
110
src/nwbind.c
@@ -2352,7 +2352,14 @@ static void handle_fxx(int gelen, int func)
|
||||
break;
|
||||
|
||||
case 0x6f : { /* attach server to queue */
|
||||
/* from pserver */
|
||||
/*
|
||||
* SDK 23/111 / wire 0x6f Attach Queue Server To Queue.
|
||||
* Request payload after SubFunctionCode:
|
||||
* long QueueID (Hi-Lo)
|
||||
* Reply: no data.
|
||||
* Parser comparison matches the documented queue-server
|
||||
* attach layout.
|
||||
*/
|
||||
uint32 q_id = GET_BE32(rdata);
|
||||
int result=nw_attach_server_to_queue(
|
||||
act_c->object_id,
|
||||
@@ -2365,7 +2372,14 @@ static void handle_fxx(int gelen, int func)
|
||||
break;
|
||||
|
||||
case 0x70 : { /* detach server from queue */
|
||||
/* from pserver */
|
||||
/*
|
||||
* SDK 23/112 / wire 0x70 Detach Queue Server From Queue.
|
||||
* Request payload after SubFunctionCode:
|
||||
* long QueueID (Hi-Lo)
|
||||
* Reply: no data.
|
||||
* Parser comparison matches the documented queue-server
|
||||
* detach layout.
|
||||
*/
|
||||
uint32 q_id = GET_BE32(rdata);
|
||||
int result=nw_detach_server_from_queue(
|
||||
act_c->object_id,
|
||||
@@ -2380,6 +2394,20 @@ static void handle_fxx(int gelen, int func)
|
||||
case 0x78: /* Get Queue Job File Size (old) */
|
||||
case 0x87: /* Get Queue Job File Size */
|
||||
{
|
||||
/*
|
||||
* SDK 23/120 / wire 0x78 Get Queue Job File Size (old)
|
||||
* and SDK 23/135 / wire 0x87 Get Queue Job File Size.
|
||||
* Request payload after SubFunctionCode:
|
||||
* long QueueID (Hi-Lo)
|
||||
* word JobNumber (Hi-Lo) for old wire 0x78
|
||||
* long JobNumber for newer wire 0x87
|
||||
* Reply documented by the WebSDK queue pages:
|
||||
* long QueueID, long JobNumber, long FileSize.
|
||||
* Parser/reply comparison: both variants currently consume
|
||||
* a 16-bit JobNumber. The old reply returns a 16-bit
|
||||
* JobNumber, and the newer reply pads that 16-bit value to
|
||||
* four bytes instead of serializing a true long.
|
||||
*/
|
||||
uint32 q_id = GET_BE32(rdata);
|
||||
uint32 job_id = (ufunc==0x78)
|
||||
? GET_BE16(rdata+4)
|
||||
@@ -2405,6 +2433,19 @@ static void handle_fxx(int gelen, int func)
|
||||
|
||||
case 0x71 : /* service queue job old */
|
||||
case 0x7c : { /* service queue job */
|
||||
/*
|
||||
* SDK 23/113 / wire 0x71 Service Queue Job (old) and
|
||||
* SDK 23/124 / wire 0x7c Service Queue Job.
|
||||
* Request payload after SubFunctionCode:
|
||||
* long QueueID (Hi-Lo)
|
||||
* word TargetServiceType (Hi-Lo)
|
||||
* Reply: QueueJobStruct, old 54-byte fixed reply for wire
|
||||
* 0x71 and newer reserved-prefix/NWQueueJobStruct reply for
|
||||
* wire 0x7c, including the opened job file handle.
|
||||
* Parser comparison matches the common QueueID/type request
|
||||
* header and delegates the variant reply shape to the queue
|
||||
* backend helper.
|
||||
*/
|
||||
uint32 q_id = GET_BE32(rdata);
|
||||
int type = GET_BE16(rdata+4);
|
||||
int result=nw_service_queue_job(
|
||||
@@ -2423,6 +2464,18 @@ static void handle_fxx(int gelen, int func)
|
||||
case 0x6D: /* Change Queue Job Entry old */
|
||||
case 0x7B: /* Change Queue Job Entry */
|
||||
{
|
||||
/*
|
||||
* SDK 23/109 / wire 0x6d Change Queue Job Entry (old) and
|
||||
* SDK 23/123 / wire 0x7b Change Queue Job Entry.
|
||||
* Request payload after SubFunctionCode:
|
||||
* long QueueID (Hi-Lo)
|
||||
* QueueJobStruct, 256 bytes for old wire 0x6d and 280
|
||||
* bytes for newer wire 0x7b.
|
||||
* Reply: no data.
|
||||
* Parser comparison matches the documented QueueID plus
|
||||
* variant job-structure layout and delegates the structure
|
||||
* copy to the queue backend helper.
|
||||
*/
|
||||
uint32 q_id = GET_BE32(rdata);
|
||||
int result = nw_change_queue_job_entry(act_c->object_id,
|
||||
q_id, rdata+4,
|
||||
@@ -2434,6 +2487,21 @@ static void handle_fxx(int gelen, int func)
|
||||
|
||||
#endif
|
||||
case 0x7d : { /* Read Queue Current Status, new */
|
||||
/*
|
||||
* SDK 23/125 / wire 0x7d Read Queue Current Status.
|
||||
* Request payload after SubFunctionCode:
|
||||
* long QueueID (Hi-Lo)
|
||||
* Reply:
|
||||
* long QueueID (Hi-Lo)
|
||||
* long QueueStatus
|
||||
* long CurrentEntries
|
||||
* long CurrentServers
|
||||
* long ServerIDList[CurrentServers] (Hi-Lo)
|
||||
* long ServerStationList[CurrentServers]
|
||||
* Parser/reply comparison matches the documented new
|
||||
* queue-status layout; scalar status/count/station fields use
|
||||
* the existing 32-bit mars_nwe queue byte-order convention.
|
||||
*/
|
||||
struct XDATA {
|
||||
uint8 id[4]; /* queue id */
|
||||
uint8 status[4]; /* &1 no station allowed */
|
||||
@@ -2473,6 +2541,19 @@ static void handle_fxx(int gelen, int func)
|
||||
} break;
|
||||
|
||||
case 0x81 : { /* Get Queue Job List */
|
||||
/*
|
||||
* SDK 23/129 / wire 0x81 Get Queue Job List.
|
||||
* Request payload after SubFunctionCode:
|
||||
* long QueueID (Hi-Lo)
|
||||
* long QueueStartPosition
|
||||
* Reply:
|
||||
* long TotalQueueJobs
|
||||
* long ReplyQueueJobNumbers
|
||||
* long JobNumberList[ReplyQueueJobNumbers]
|
||||
* Parser comparison matches the documented request header
|
||||
* and delegates the paged long-list reply to the queue backend
|
||||
* helper.
|
||||
*/
|
||||
uint32 q_id = GET_BE32(rdata);
|
||||
uint32 offset = GET_BE32(rdata+4);
|
||||
#if 0
|
||||
@@ -2491,6 +2572,18 @@ static void handle_fxx(int gelen, int func)
|
||||
|
||||
case 0x72: /* finish servicing queue job (old)*/
|
||||
case 0x83: { /* finish servicing queue job */
|
||||
/*
|
||||
* SDK 23/114 / wire 0x72 Finish Servicing Queue Job (old)
|
||||
* and SDK 23/131 / wire 0x83 Finish Servicing Queue Job.
|
||||
* Request payload after SubFunctionCode:
|
||||
* long QueueID (Hi-Lo)
|
||||
* word JobNumber (Hi-Lo) for old wire 0x72
|
||||
* long JobNumber plus long ChargeInfo for newer wire 0x83
|
||||
* Reply: no data.
|
||||
* Parser comparison: both variants currently consume a
|
||||
* 16-bit JobNumber, and the newer ChargeInfo field is
|
||||
* ignored.
|
||||
*/
|
||||
uint32 q_id = GET_BE32(rdata);
|
||||
uint32 job_id = GET_BE16(rdata+4);
|
||||
#if 0
|
||||
@@ -2506,6 +2599,19 @@ static void handle_fxx(int gelen, int func)
|
||||
|
||||
case 0x73: /* abort servicing queue job (old) */
|
||||
case 0x84: { /* abort servicing queue job */
|
||||
/*
|
||||
* SDK 23/115 / wire 0x73 Abort Servicing Queue Job (old)
|
||||
* and SDK 23/132 / wire 0x84 Abort Servicing Queue Job.
|
||||
* Request payload after SubFunctionCode:
|
||||
* long QueueID (Hi-Lo)
|
||||
* word JobNumber (Hi-Lo) for old wire 0x73
|
||||
* long JobNumber for newer wire 0x84
|
||||
* Reply: no data for NCP 23; DOS-shell INT 21h wrappers
|
||||
* expose a two-byte zero reply length.
|
||||
* Parser/reply comparison: both variants currently consume
|
||||
* a 16-bit JobNumber, and the success path emits a two-byte
|
||||
* zero reply for compatibility with older clients.
|
||||
*/
|
||||
uint32 q_id = GET_BE32(rdata);
|
||||
uint32 job_id = GET_BE16(rdata+4);
|
||||
int result = nw_finish_abort_queue_job(1,
|
||||
|
||||
Reference in New Issue
Block a user