summaryrefslogtreecommitdiffstats
path: root/utils/mountd/mount_xdr.c
blob: 87adfa670ce7029b5acf6d6f4e86e89e620bd506 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/*
 * mount_xdr	XDR procedures for mountd.
 *
 * Originally generated by rpcgen; edited to get rid of warnings.
 */

#include "config.h"

#include "mount.h"

inline bool_t
xdr_fhandle(XDR *xdrs, fhandle objp)
{
	return xdr_opaque(xdrs, objp, FHSIZE);
}

bool_t
xdr_fhstatus(XDR *xdrs, fhstatus *objp)
{
	return xdr_u_int(xdrs, &objp->fhs_status) &&
	       (objp->fhs_status != 0 ||
		xdr_fhandle(xdrs, objp->fhstatus_u.fhs_fhandle));
}

bool_t
xdr_dirpath(XDR *xdrs, dirpath *objp)
{
	return xdr_string(xdrs, objp, MNTPATHLEN);
}

inline bool_t
xdr_name(XDR *xdrs, name *objp)
{
	return xdr_string(xdrs, objp, MNTPATHLEN);
}

bool_t
xdr_mountlist(XDR *xdrs, mountlist *objp)
{
	return xdr_pointer(xdrs, (char **)objp, sizeof(struct mountbody),
			(xdrproc_t)xdr_mountbody);
}

bool_t
xdr_mountbody(XDR *xdrs, mountbody *objp)
{
	return xdr_name(xdrs, &objp->ml_hostname) &&
	       xdr_dirpath(xdrs, &objp->ml_directory) &&
	       xdr_mountlist(xdrs, &objp->ml_next);
}

bool_t
xdr_groups(XDR *xdrs, groups *objp)
{
	return xdr_pointer(xdrs, (char **)objp, sizeof(struct groupnode),
			(xdrproc_t)xdr_groupnode);
}

bool_t
xdr_groupnode(XDR *xdrs, groupnode *objp)
{
	return xdr_name(xdrs, &objp->gr_name) &&
	       xdr_groups(xdrs, &objp->gr_next);
}

bool_t
xdr_exports(XDR *xdrs, exports *objp)
{
	return xdr_pointer(xdrs, (char **)objp, sizeof(struct exportnode),
			(xdrproc_t)xdr_exportnode);
}

bool_t
xdr_exportnode(XDR *xdrs, exportnode *objp)
{
	return xdr_dirpath(xdrs, &objp->ex_dir) &&
	       xdr_groups(xdrs, &objp->ex_groups) &&
	       xdr_exports(xdrs, &objp->ex_next);
}