iov.iov_base = req->rq_snd_buf.head[0].iov_base; if (task->tk_client->cl_xprt->stream) /* See clnt.c:call_header() */ iov.iov_base += 4; 
iov.iov_base = xprt_skip_transport_header(task->tk_xprt, req->rq_snd_buf.head[0].iov_base); 
gss_marshal(struct rpc_task *task, u32 *p){	struct rpc_cred *cred = task->tk_msg.rpc_cred;	struct gss_cred	*gss_cred = container_of(cred, struct gss_cred,						 gc_base);	struct gss_cl_ctx	*ctx = gss_cred_get_ctx(cred);	u32		*cred_len;	struct rpc_rqst *req = task->tk_rqstp;	u32             maj_stat = 0;	struct xdr_netobj mic;	struct kvec	iov;	struct xdr_buf	verf_buf;	dprintk("RPC: %4u gss_marshal\n", task->tk_pid);	*p++ = htonl(RPC_AUTH_GSS);	cred_len = p++;	spin_lock(&ctx->gc_seq_lock);	req->rq_seqno = ctx->gc_seq++;	spin_unlock(&ctx->gc_seq_lock);	*p++ = htonl((u32) RPC_GSS_VERSION);	*p++ = htonl((u32) ctx->gc_proc);	*p++ = htonl((u32) req->rq_seqno);	*p++ = htonl((u32) gss_cred->gc_service);	p = xdr_encode_netobj(p, &ctx->gc_wire_ctx);	*cred_len = htonl((p - (cred_len + 1)) << 2);	/* We compute the checksum for the verifier over the xdr-encoded bytes	 * starting with the xid and ending at the end of the credential: */	iov.iov_base = req->rq_snd_buf.head[0].iov_base;	if (task->tk_client->cl_xprt->stream)		/* See clnt.c:call_header() */		iov.iov_base += 4;	iov.iov_len = (u8 *)p - (u8 *)iov.iov_base;	xdr_buf_from_iov(&iov, &verf_buf);	/* set verifier flavor*/	*p++ = htonl(RPC_AUTH_GSS);	mic.data = (u8 *)(p + 1);	maj_stat = gss_get_mic(ctx->gc_gss_ctx,			       GSS_C_QOP_DEFAULT, 			       &verf_buf, &mic);	if (maj_stat == GSS_S_CONTEXT_EXPIRED) {		cred->cr_flags &= ~RPCAUTH_CRED_UPTODATE;	} else if (maj_stat != 0) {		printk("gss_marshal: gss_get_mic FAILED (%d)\n", maj_stat);		goto out_put_ctx;	}	p = xdr_encode_opaque(p, NULL, mic.len);	gss_put_ctx(ctx);	return p;out_put_ctx:	gss_put_ctx(ctx);	return NULL;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/808012fbb23a52ec59352445d2076d175ad4ab26/auth_gss.c/clean/net/sunrpc/auth_gss/auth_gss.c