Example #1
0
bool_t
xdr_lookup(
    XDR *		xdrs,
    char *		params_ptr)
{
    diropargs *		diropargs_ptr;
    diropres *		diropres_ptr;


    switch(xdrs->x_op) {
	case XDR_ENCODE:
	    /* LINTED pointer cast */
	    diropargs_ptr = (diropargs *) params_ptr;
	    return(xdr_f_handle(xdrs, &diropargs_ptr->dir) &&
		   xdr_path(xdrs, &diropargs_ptr->name));

	case XDR_DECODE:
	    /* LINTED pointer cast */
	    diropres_ptr = (diropres *) params_ptr;
	    return(xdr_diropres(xdrs, diropres_ptr));

	default:
	    return(FALSE);
    } /* switch on operation */
}
Example #2
0
bool_t
xdr_mkdir(
    XDR *		xdrs,
    char *		params_ptr)
{
    mkdirargs *		mkdirargs_ptr;
    diropres *		diropres_ptr;


    switch (xdrs->x_op) {
	case XDR_ENCODE:
	    /* LINTED pointer cast */
	    mkdirargs_ptr = (mkdirargs *) params_ptr;
	    return(xdr_diropargs(xdrs, &mkdirargs_ptr->where) &&
		   xdr_sattr(xdrs, &mkdirargs_ptr->attributes));

	case XDR_DECODE:
	    /* LINTED pointer cast */
	    diropres_ptr = (diropres *) params_ptr;
	    return(xdr_diropres(xdrs, diropres_ptr));

	default:
	    return(FALSE);
    } /* switch on operation */
}
Example #3
0
void
nfs2_reply(struct xid_map *xm, struct tuple4 *addr, u_char *buf, int len)
{
	XDR xdrs;
	struct diropres dres;
	struct readres rres;
	
	switch (xm->proc) {
		
	case NFSPROC_LOOKUP:
		xdrmem_create(&xdrs, buf, len, XDR_DECODE);
		memset(&dres, 0, sizeof(dres));
		
		if (xdr_diropres(&xdrs, &dres)) {
			if (dres.status == NFS_OK)
				fh_map_add((char *)xm->data,
					   dres.diropres_u.diropres.file.data,
					   NFS_FHSIZE);
		}
		xdr_destroy(&xdrs);
		break;
		
	case NFSPROC_READ:
		xdrmem_create(&xdrs, buf, len, XDR_DECODE);
		memset(&rres, 0, sizeof(rres));
		
		if (xdr_readres(&xdrs, &rres)) {
			if (rres.status == NFS_OK) {
				nfs_save(addr, (struct myreadargs *)xm->data,
					 rres.readres_u.reply.data.data_val,
					 rres.readres_u.reply.data.data_len);
			}
		}
		xdr_destroy(&xdrs);
		break;
	}
}