1 /* 2 * $Id: mount_xdr.c,v 5.2 90/06/23 22:20:21 jsp Rel $ 3 * 4 * Copyright (c) 1989 Jan-Simon Pendry 5 * Copyright (c) 1989 Imperial College of Science, Technology & Medicine 6 * Copyright (c) 1989 The Regents of the University of California. 7 * All rights reserved. 8 * 9 * This code is derived from software contributed to Berkeley by 10 * Jan-Simon Pendry at Imperial College, London. 11 * 12 * %sccs.include.redist.c% 13 * 14 * @(#)mount_xdr.c 5.1 (Berkeley) 07/19/90 15 */ 16 17 #include "am.h" 18 #include "mount.h" 19 20 21 bool_t 22 xdr_fhandle(xdrs, objp) 23 XDR *xdrs; 24 fhandle objp; 25 { 26 if (!xdr_opaque(xdrs, objp, FHSIZE)) { 27 return (FALSE); 28 } 29 return (TRUE); 30 } 31 32 33 34 35 bool_t 36 xdr_fhstatus(xdrs, objp) 37 XDR *xdrs; 38 fhstatus *objp; 39 { 40 if (!xdr_u_int(xdrs, &objp->fhs_status)) { 41 return (FALSE); 42 } 43 switch (objp->fhs_status) { 44 case 0: 45 if (!xdr_fhandle(xdrs, objp->fhstatus_u.fhs_fhandle)) { 46 return (FALSE); 47 } 48 break; 49 } 50 return (TRUE); 51 } 52 53 54 55 56 bool_t 57 xdr_dirpath(xdrs, objp) 58 XDR *xdrs; 59 dirpath *objp; 60 { 61 if (!xdr_string(xdrs, objp, MNTPATHLEN)) { 62 return (FALSE); 63 } 64 return (TRUE); 65 } 66 67 68 69 70 bool_t 71 xdr_name(xdrs, objp) 72 XDR *xdrs; 73 name *objp; 74 { 75 if (!xdr_string(xdrs, objp, MNTNAMLEN)) { 76 return (FALSE); 77 } 78 return (TRUE); 79 } 80 81 82 83 84 bool_t 85 xdr_mountlist(xdrs, objp) 86 XDR *xdrs; 87 mountlist *objp; 88 { 89 if (!xdr_pointer(xdrs, (char **)objp, sizeof(struct mountbody), xdr_mountbody)) { 90 return (FALSE); 91 } 92 return (TRUE); 93 } 94 95 96 97 bool_t 98 xdr_mountbody(xdrs, objp) 99 XDR *xdrs; 100 mountbody *objp; 101 { 102 if (!xdr_name(xdrs, &objp->ml_hostname)) { 103 return (FALSE); 104 } 105 if (!xdr_dirpath(xdrs, &objp->ml_directory)) { 106 return (FALSE); 107 } 108 if (!xdr_mountlist(xdrs, &objp->ml_next)) { 109 return (FALSE); 110 } 111 return (TRUE); 112 } 113 114 115 116 117 bool_t 118 xdr_groups(xdrs, objp) 119 XDR *xdrs; 120 groups *objp; 121 { 122 if (!xdr_pointer(xdrs, (char **)objp, sizeof(struct groupnode), xdr_groupnode)) { 123 return (FALSE); 124 } 125 return (TRUE); 126 } 127 128 129 130 131 bool_t 132 xdr_groupnode(xdrs, objp) 133 XDR *xdrs; 134 groupnode *objp; 135 { 136 if (!xdr_name(xdrs, &objp->gr_name)) { 137 return (FALSE); 138 } 139 if (!xdr_groups(xdrs, &objp->gr_next)) { 140 return (FALSE); 141 } 142 return (TRUE); 143 } 144 145 146 147 148 bool_t 149 xdr_exports(xdrs, objp) 150 XDR *xdrs; 151 exports *objp; 152 { 153 if (!xdr_pointer(xdrs, (char **)objp, sizeof(struct exportnode), xdr_exportnode)) { 154 return (FALSE); 155 } 156 return (TRUE); 157 } 158 159 160 161 162 bool_t 163 xdr_exportnode(xdrs, objp) 164 XDR *xdrs; 165 exportnode *objp; 166 { 167 if (!xdr_dirpath(xdrs, &objp->ex_dir)) { 168 return (FALSE); 169 } 170 if (!xdr_groups(xdrs, &objp->ex_groups)) { 171 return (FALSE); 172 } 173 if (!xdr_exports(xdrs, &objp->ex_next)) { 174 return (FALSE); 175 } 176 return (TRUE); 177 } 178 179 180