docs: place redirected ncp22 quota docs at handlers

This commit is contained in:
Mario Fetka
2026-06-01 22:15:22 +00:00
parent 64c12f7a28
commit 096ce757b2
2 changed files with 36 additions and 26 deletions

View File

@@ -760,19 +760,27 @@ static void handle_fxx(int gelen, int func)
case 0x22 : /* Remove User Disk Space Restrictions, 0x2222/22/34 */
case 0x29 : { /* Get Object Disk Usage And Restrictions, 0x2222/22/41 */
/*
* Forwarded from src/nwconn.c NCP 0x2222/22. The shared quota
* prehandler sees only the subfunction payload as rdata:
* Redirected NCP 0x2222/22 quota prehandler. nwconn.c dispatches
* these calls with func == 0x16 and ufunc as the wire subfunction;
* nwbind sees only the subfunction payload as rdata.
*
* Documented endpoints handled here:
* SDK 22/33 / wire 0x21 Add User Disk Space Restriction
* SDK 22/34 / wire 0x22 Remove User Disk Space Restrictions
* SDK 22/41 / wire 0x29 Get Object Disk Usage And Restrictions
*
* WebSDK / headers request payloads after SubFunctionCode:
* rdata[0] VolumeNumber
* rdata[1..4] ObjectID (Hi-Lo)
* rdata[5..8] DiskSpaceLimit (Lo-Hi, only for 22/33)
* rdata[5..8] DiskSpaceLimit (Lo-Hi, only for SDK 22/33)
*
* Parser comparison: ObjectID is read from the documented position
* for all three subfunctions. DiskSpaceLimit for 22/33 is not
* for all three subfunctions. DiskSpaceLimit for SDK 22/33 is not
* consumed by this prehandler; handle_after_bind() receives only the
* uid/gid/permission tuple produced below.
*
* Returns 3 integers, uid, gid, 0=OK/1=Permission denied.
* Internal reply to nwconn.c: 3 integers, uid, gid,
* 0=OK/1=Permission denied.
*/
uint32 id = GET_BE32(rdata+1);
internal_act=1;

View File

@@ -4590,28 +4590,30 @@ static int handle_ncp_serv(void)
}
break;
/*
* NCP 0x2222/22/41 Get Object Disk Usage And Restrictions.
*
* WebSDK / headers:
* Request: Volume Number, Object ID (high-low)
* Reply: Restriction and In Use, both 32-bit values in 4K
* blocks.
*
* A restriction value of 0x40000000 means that the object has no
* disk restriction. NetWare also treats unknown/invalid object
* IDs as a successful unrestricted/no-use result.
*
* With QUOTA_SUPPORT enabled this call needs bindery prehandling:
* nwbind maps the Object ID to a Unix uid before
* handle_after_bind() calls nw_get_vol_restrictions(). Without
* quota support, keep the SDK-compatible fallback local so builds
* on hosts without quota support do not need the quota backend.
*
* Parser comparison: request payload is VolumeNumber followed by
* ObjectID (Hi-Lo), matching the documented layout.
*/
case 0x29 : { /* Get Object Disk Usage And Restrictions */
/*
* NCP 0x2222/22/41 (SDK decimal) / wire 0x29
* Get Object Disk Usage And Restrictions.
*
* WebSDK / headers:
* Request: Volume Number, Object ID (high-low)
* Reply: Restriction and In Use, both 32-bit values in 4K
* blocks.
*
* A restriction value of 0x40000000 means that the object has no
* disk restriction. NetWare also treats unknown/invalid object
* IDs as a successful unrestricted/no-use result.
*
* With QUOTA_SUPPORT enabled this endpoint is forwarded to
* nwbind for bindery ObjectID-to-uid mapping; the redirected
* prehandler layout is documented at src/nwbind.c case 0x29.
* Without quota support, keep the SDK-compatible fallback
* local so builds on hosts without quota support do not need
* the quota backend.
*
* Parser comparison: request payload is VolumeNumber followed by
* ObjectID (Hi-Lo), matching the documented layout.
*/
#if QUOTA_SUPPORT
XDPRINTF((5, 0, "Read vol restrictions"));
return(-2); /* nwbind must do prehandling */