diff options
Diffstat (limited to 'xlators')
| -rw-r--r-- | xlators/protocol/lib/src/glusterfs-xdr.c | 86 | ||||
| -rw-r--r-- | xlators/protocol/lib/src/glusterfs-xdr.h | 12 | ||||
| -rw-r--r-- | xlators/protocol/rpc/rpc-lib/src/auth-glusterfs.c | 89 | ||||
| -rw-r--r-- | xlators/protocol/rpc/rpc-lib/src/rpc-clnt.h | 2 | ||||
| -rw-r--r-- | xlators/protocol/rpc/rpc-lib/src/xdr-common.h | 14 | 
5 files changed, 103 insertions, 100 deletions
diff --git a/xlators/protocol/lib/src/glusterfs-xdr.c b/xlators/protocol/lib/src/glusterfs-xdr.c index 2eccff29c6e..6538d6d26f8 100644 --- a/xlators/protocol/lib/src/glusterfs-xdr.c +++ b/xlators/protocol/lib/src/glusterfs-xdr.c @@ -1759,89 +1759,3 @@ xdr_gf_dump_version_rsp (XDR *xdrs, gf_dump_version_rsp *objp)  	return TRUE;  } -bool_t -xdr_auth_glusterfs_parms (XDR *xdrs, auth_glusterfs_parms *objp) -{ -	register int32_t *buf; - -	int i; - -	if (xdrs->x_op == XDR_ENCODE) { -		 if (!xdr_u_quad_t (xdrs, &objp->lk_owner)) -			 return FALSE; -		buf = XDR_INLINE (xdrs, (4 +  16 )* BYTES_PER_XDR_UNIT); -		if (buf == NULL) { -			 if (!xdr_u_int (xdrs, &objp->pid)) -				 return FALSE; -			 if (!xdr_u_int (xdrs, &objp->uid)) -				 return FALSE; -			 if (!xdr_u_int (xdrs, &objp->gid)) -				 return FALSE; -			 if (!xdr_u_int (xdrs, &objp->ngrps)) -				 return FALSE; -			 if (!xdr_vector (xdrs, (char *)objp->groups, 16, -				sizeof (u_int), (xdrproc_t) xdr_u_int)) -				 return FALSE; -		} else { -			IXDR_PUT_U_LONG(buf, objp->pid); -			IXDR_PUT_U_LONG(buf, objp->uid); -			IXDR_PUT_U_LONG(buf, objp->gid); -			IXDR_PUT_U_LONG(buf, objp->ngrps); -			{ -				register u_int *genp; - -				for (i = 0, genp = objp->groups; -					i < 16; ++i) { -					IXDR_PUT_U_LONG(buf, *genp++); -				} -			} -		} -		return TRUE; -	} else if (xdrs->x_op == XDR_DECODE) { -		 if (!xdr_u_quad_t (xdrs, &objp->lk_owner)) -			 return FALSE; -		buf = XDR_INLINE (xdrs, (4 +  16 )* BYTES_PER_XDR_UNIT); -		if (buf == NULL) { -			 if (!xdr_u_int (xdrs, &objp->pid)) -				 return FALSE; -			 if (!xdr_u_int (xdrs, &objp->uid)) -				 return FALSE; -			 if (!xdr_u_int (xdrs, &objp->gid)) -				 return FALSE; -			 if (!xdr_u_int (xdrs, &objp->ngrps)) -				 return FALSE; -			 if (!xdr_vector (xdrs, (char *)objp->groups, 16, -				sizeof (u_int), (xdrproc_t) xdr_u_int)) -				 return FALSE; -		} else { -			objp->pid = IXDR_GET_U_LONG(buf); -			objp->uid = IXDR_GET_U_LONG(buf); -			objp->gid = IXDR_GET_U_LONG(buf); -			objp->ngrps = IXDR_GET_U_LONG(buf); -			{ -				register u_int *genp; - -				for (i = 0, genp = objp->groups; -					i < 16; ++i) { -					*genp++ = IXDR_GET_U_LONG(buf); -				} -			} -		} -	 return TRUE; -	} - -	 if (!xdr_u_quad_t (xdrs, &objp->lk_owner)) -		 return FALSE; -	 if (!xdr_u_int (xdrs, &objp->pid)) -		 return FALSE; -	 if (!xdr_u_int (xdrs, &objp->uid)) -		 return FALSE; -	 if (!xdr_u_int (xdrs, &objp->gid)) -		 return FALSE; -	 if (!xdr_u_int (xdrs, &objp->ngrps)) -		 return FALSE; -	 if (!xdr_vector (xdrs, (char *)objp->groups, 16, -		sizeof (u_int), (xdrproc_t) xdr_u_int)) -		 return FALSE; -	return TRUE; -} diff --git a/xlators/protocol/lib/src/glusterfs-xdr.h b/xlators/protocol/lib/src/glusterfs-xdr.h index 3fb6d0bd355..1870f319d63 100644 --- a/xlators/protocol/lib/src/glusterfs-xdr.h +++ b/xlators/protocol/lib/src/glusterfs-xdr.h @@ -1136,16 +1136,6 @@ struct gf_dump_version_rsp {  };  typedef struct gf_dump_version_rsp gf_dump_version_rsp; -struct auth_glusterfs_parms { -	u_quad_t lk_owner; -	u_int pid; -	u_int uid; -	u_int gid; -	u_int ngrps; -	u_int groups[16]; -}; -typedef struct auth_glusterfs_parms auth_glusterfs_parms; -  /* the xdr functions */  #if defined(__STDC__) || defined(__cplusplus) @@ -1236,7 +1226,6 @@ extern  bool_t xdr_gfs3_release_req (XDR *, gfs3_release_req*);  extern  bool_t xdr_gf_common_rsp (XDR *, gf_common_rsp*);  extern  bool_t xdr_gf_dump_version_req (XDR *, gf_dump_version_req *);  extern  bool_t xdr_gf_dump_version_rsp (XDR *, gf_dump_version_rsp *); -extern  bool_t xdr_auth_glusterfs_parms (XDR *, auth_glusterfs_parms*);  #else /* K&R C */  extern bool_t xdr_gf_statfs (); @@ -1326,7 +1315,6 @@ extern bool_t xdr_gf_notify_rsp ();  extern bool_t xdr_gf_common_rsp ();  extern bool_t xdr_gf_dump_version_req ();  extern bool_t xdr_gf_dump_version_rsp (); -extern bool_t xdr_auth_glusterfs_parms ();  #endif /* K&R C */ diff --git a/xlators/protocol/rpc/rpc-lib/src/auth-glusterfs.c b/xlators/protocol/rpc/rpc-lib/src/auth-glusterfs.c index 165e52a176b..e248bf142aa 100644 --- a/xlators/protocol/rpc/rpc-lib/src/auth-glusterfs.c +++ b/xlators/protocol/rpc/rpc-lib/src/auth-glusterfs.c @@ -28,7 +28,94 @@  #include "list.h"  #include "dict.h"  #include "xdr-rpc.h" -#include "glusterfs-xdr.h" +#include "xdr-common.h" + +bool_t +xdr_auth_glusterfs_parms (XDR *xdrs, auth_glusterfs_parms *objp) +{ +	register int32_t *buf; + +	int i; + +	if (xdrs->x_op == XDR_ENCODE) { +		 if (!xdr_u_quad_t (xdrs, &objp->lk_owner)) +			 return FALSE; +		buf = XDR_INLINE (xdrs, (4 +  16 )* BYTES_PER_XDR_UNIT); +		if (buf == NULL) { +			 if (!xdr_u_int (xdrs, &objp->pid)) +				 return FALSE; +			 if (!xdr_u_int (xdrs, &objp->uid)) +				 return FALSE; +			 if (!xdr_u_int (xdrs, &objp->gid)) +				 return FALSE; +			 if (!xdr_u_int (xdrs, &objp->ngrps)) +				 return FALSE; +			 if (!xdr_vector (xdrs, (char *)objp->groups, 16, +				sizeof (u_int), (xdrproc_t) xdr_u_int)) +				 return FALSE; +		} else { +			IXDR_PUT_U_LONG(buf, objp->pid); +			IXDR_PUT_U_LONG(buf, objp->uid); +			IXDR_PUT_U_LONG(buf, objp->gid); +			IXDR_PUT_U_LONG(buf, objp->ngrps); +			{ +				register u_int *genp; + +				for (i = 0, genp = objp->groups; +					i < 16; ++i) { +					IXDR_PUT_U_LONG(buf, *genp++); +				} +			} +		} +		return TRUE; +	} else if (xdrs->x_op == XDR_DECODE) { +		 if (!xdr_u_quad_t (xdrs, &objp->lk_owner)) +			 return FALSE; +		buf = XDR_INLINE (xdrs, (4 +  16 )* BYTES_PER_XDR_UNIT); +		if (buf == NULL) { +			 if (!xdr_u_int (xdrs, &objp->pid)) +				 return FALSE; +			 if (!xdr_u_int (xdrs, &objp->uid)) +				 return FALSE; +			 if (!xdr_u_int (xdrs, &objp->gid)) +				 return FALSE; +			 if (!xdr_u_int (xdrs, &objp->ngrps)) +				 return FALSE; +			 if (!xdr_vector (xdrs, (char *)objp->groups, 16, +				sizeof (u_int), (xdrproc_t) xdr_u_int)) +				 return FALSE; +		} else { +			objp->pid = IXDR_GET_U_LONG(buf); +			objp->uid = IXDR_GET_U_LONG(buf); +			objp->gid = IXDR_GET_U_LONG(buf); +			objp->ngrps = IXDR_GET_U_LONG(buf); +			{ +				register u_int *genp; + +				for (i = 0, genp = objp->groups; +					i < 16; ++i) { +					*genp++ = IXDR_GET_U_LONG(buf); +				} +			} +		} +	 return TRUE; +	} + +	 if (!xdr_u_quad_t (xdrs, &objp->lk_owner)) +		 return FALSE; +	 if (!xdr_u_int (xdrs, &objp->pid)) +		 return FALSE; +	 if (!xdr_u_int (xdrs, &objp->uid)) +		 return FALSE; +	 if (!xdr_u_int (xdrs, &objp->gid)) +		 return FALSE; +	 if (!xdr_u_int (xdrs, &objp->ngrps)) +		 return FALSE; +	 if (!xdr_vector (xdrs, (char *)objp->groups, 16, +		sizeof (u_int), (xdrproc_t) xdr_u_int)) +		 return FALSE; +	return TRUE; +}  ssize_t  xdr_to_glusterfs_auth (char *buf, struct auth_glusterfs_parms *req) diff --git a/xlators/protocol/rpc/rpc-lib/src/rpc-clnt.h b/xlators/protocol/rpc/rpc-lib/src/rpc-clnt.h index d962d021307..89942ce7f57 100644 --- a/xlators/protocol/rpc/rpc-lib/src/rpc-clnt.h +++ b/xlators/protocol/rpc/rpc-lib/src/rpc-clnt.h @@ -23,7 +23,7 @@  #include "stack.h"  #include "rpc-transport.h"  #include "timer.h" -#include "glusterfs-xdr.h" +#include "xdr-common.h"  typedef enum {          RPC_CLNT_CONNECT, diff --git a/xlators/protocol/rpc/rpc-lib/src/xdr-common.h b/xlators/protocol/rpc/rpc-lib/src/xdr-common.h index 50a57ade932..775beb2865e 100644 --- a/xlators/protocol/rpc/rpc-lib/src/xdr-common.h +++ b/xlators/protocol/rpc/rpc-lib/src/xdr-common.h @@ -26,6 +26,20 @@  #endif  #include <rpc/rpc.h> + +struct auth_glusterfs_parms { +	u_quad_t lk_owner; +	u_int pid; +	u_int uid; +	u_int gid; +	u_int ngrps; +	u_int groups[16]; +}; +typedef struct auth_glusterfs_parms auth_glusterfs_parms; + +bool_t +xdr_auth_glusterfs_parms (XDR *xdrs, auth_glusterfs_parms *objp); +  #define XDR_BYTES_PER_UNIT      4  /* Returns the address of the byte that follows the  | 
