Add/document autoreq_getxid(3), which gets the autofs request

transaction id from the request, this is useful for debugging.

Fix the autoh_freeall(3) function to properly free the array of
auto handles.  Before it was freeing individual members of the list
OK, however it was then advancing the pointer and freeing the wrong
data for the whole list.
This commit is contained in:
alfred 2004-09-09 01:23:27 +00:00
parent a67c4ff98d
commit e203488731
3 changed files with 22 additions and 5 deletions

View File

@ -63,6 +63,8 @@
.Ft void
.Fn autoreq_getoffset "autoreq_t req" "off_t *offp"
.Ft void
.Fn autoreq_getxid "autoreq_t req" "int *xidp"
.Ft void
.Fn autoreq_setino "autoreq_t req" "autoino_t ino"
.Ft void
.Fn autoreq_seterrno "autoreq_t req" "int errno"
@ -176,6 +178,10 @@ return the auxilliray data associated with the request
return the offset request associated with the request
.Fa req .
(used for readdir request)
.It Fn autoreq_getxid
return the transaction id associated with an autofs request, these
are unique per mount point, but not system wide. They can be used
for debugging to ensure requests are being accepted by the kernel.
.El
.Pp
The following functions allow one to set the response sent to

View File

@ -206,10 +206,13 @@ autoh_getall(autoh_t **arrayp, int *cntp)
void
autoh_freeall(autoh_t *ah)
{
autoh_t *ahp;
while (*ah != NULL) {
autoh_free(*ah);
ah++;
ahp = ah;
while (*ahp != NULL) {
autoh_free(*ahp);
ahp++;
}
safe_free(ah);
}
@ -396,6 +399,13 @@ autoreq_getoffset(autoreq_t req, off_t *offp)
*offp = req->au_offset - AUTOFS_USEROFF;
}
void
autoreq_getxid(autoreq_t req, int *xid)
{
*xid = req->au_xid;
}
/* toggle by path. args = handle, AUTO_?, pid (-1 to disable), path. */
int
autoh_togglepath(autoh_t ah, int op, pid_t pid, const char *path)

View File

@ -92,8 +92,9 @@ autoino_t autoreq_getdirino(autoreq_t);
void autoreq_seterrno(autoreq_t, int);
void autoreq_setaux(autoreq_t, void *, size_t);
void autoreq_getaux(autoreq_t, void **, size_t *);
void autoreq_seteof(autoreq_t req, int eof);
void autoreq_getoffset(autoreq_t req, off_t *offp);
void autoreq_seteof(autoreq_t, int);
void autoreq_getoffset(autoreq_t, off_t *);
void autoreq_getxid(autoreq_t, int *);
/* toggle by path. args = handle, AUTO_?, pid (-1 to disable), path. */
int autoh_togglepath(autoh_t, int, pid_t, const char *);