summaryrefslogtreecommitdiffstats
path: root/lib/libautofs
diff options
context:
space:
mode:
authoralfred <alfred@FreeBSD.org>2004-09-09 01:23:27 +0000
committeralfred <alfred@FreeBSD.org>2004-09-09 01:23:27 +0000
commit1d00793bf6f72d2209c94f630a51c7704d7b0745 (patch)
tree6772e95f5247b1c980cc3638f0082f4673482e5e /lib/libautofs
parentc30a3c01a10dd20c3319c39e0201b6c5852a357c (diff)
downloadFreeBSD-src-1d00793bf6f72d2209c94f630a51c7704d7b0745.zip
FreeBSD-src-1d00793bf6f72d2209c94f630a51c7704d7b0745.tar.gz
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.
Diffstat (limited to 'lib/libautofs')
-rw-r--r--lib/libautofs/libautofs.36
-rw-r--r--lib/libautofs/libautofs.c16
-rw-r--r--lib/libautofs/libautofs.h5
3 files changed, 22 insertions, 5 deletions
diff --git a/lib/libautofs/libautofs.3 b/lib/libautofs/libautofs.3
index 784813e..fd9f1c3 100644
--- a/lib/libautofs/libautofs.3
+++ b/lib/libautofs/libautofs.3
@@ -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
diff --git a/lib/libautofs/libautofs.c b/lib/libautofs/libautofs.c
index a47535a..459b32d 100644
--- a/lib/libautofs/libautofs.c
+++ b/lib/libautofs/libautofs.c
@@ -206,10 +206,13 @@ err:
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)
diff --git a/lib/libautofs/libautofs.h b/lib/libautofs/libautofs.h
index 5fb29a9..f391bad 100644
--- a/lib/libautofs/libautofs.h
+++ b/lib/libautofs/libautofs.h
@@ -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 *);
OpenPOWER on IntegriCloud