コード例 #1
0
ファイル: sec_null.c プロジェクト: chaos/lustre-kdmu
static
int null_ctx_verify(struct ptlrpc_cli_ctx *ctx, struct ptlrpc_request *req)
{
        __u32   cksums, cksumc;

        LASSERT(req->rq_repdata);

        req->rq_repmsg = req->rq_repdata;
        req->rq_replen = req->rq_repdata_len;

        if (req->rq_early) {
                cksums = lustre_msg_get_cksum(req->rq_repdata);
#if LUSTRE_VERSION_CODE < OBD_OCD_VERSION(2, 9, 0, 0)
                if (lustre_msghdr_get_flags(req->rq_reqmsg) &
                    MSGHDR_CKSUM_INCOMPAT18)
                        cksumc = lustre_msg_calc_cksum(req->rq_repmsg, 0);
                else
                        cksumc = lustre_msg_calc_cksum(req->rq_repmsg, 1);
#else
# warning "remove checksum compatibility support for b1_8"
                cksumc = lustre_msg_calc_cksum(req->rq_repmsg);
#endif
                if (cksumc != cksums) {
                        CWARN("early reply checksum mismatch: %08x != %08x\n",
                              cksumc, cksums);
                        return -EINVAL;
                }
        }

        return 0;
}
コード例 #2
0
ファイル: sec_null.c プロジェクト: chaos/lustre-kdmu
static
int null_authorize(struct ptlrpc_request *req)
{
        struct ptlrpc_reply_state *rs = req->rq_reply_state;

        LASSERT(rs);

        rs->rs_repbuf->lm_secflvr = SPTLRPC_FLVR_NULL;
        rs->rs_repdata_len = req->rq_replen;

        if (likely(req->rq_packed_final)) {
                if (lustre_msghdr_get_flags(req->rq_reqmsg) & MSGHDR_AT_SUPPORT)
                        req->rq_reply_off = lustre_msg_early_size();
                else
                        req->rq_reply_off = 0;
        } else {
                __u32 cksum;

#if LUSTRE_VERSION_CODE < OBD_OCD_VERSION(2, 9, 0, 0)
                if (lustre_msghdr_get_flags(req->rq_reqmsg) &
                    MSGHDR_CKSUM_INCOMPAT18)
                        cksum = lustre_msg_calc_cksum(rs->rs_repbuf, 0);
                else
                        cksum = lustre_msg_calc_cksum(rs->rs_repbuf, 1);
#else
# warning "remove checksum compatibility support for b1_8"
                cksum = lustre_msg_calc_cksum(rs->rs_repbuf);
#endif
                lustre_msg_set_cksum(rs->rs_repbuf, cksum);
                req->rq_reply_off = 0;
        }

        return 0;
}
コード例 #3
0
ファイル: sec_null.c プロジェクト: AK101111/linux
static
int null_authorize(struct ptlrpc_request *req)
{
	struct ptlrpc_reply_state *rs = req->rq_reply_state;

	LASSERT(rs);

	rs->rs_repbuf->lm_secflvr = SPTLRPC_FLVR_NULL;
	rs->rs_repdata_len = req->rq_replen;

	if (likely(req->rq_packed_final)) {
		if (lustre_msghdr_get_flags(req->rq_reqmsg) & MSGHDR_AT_SUPPORT)
			req->rq_reply_off = lustre_msg_early_size();
		else
			req->rq_reply_off = 0;
	} else {
		__u32 cksum;

		cksum = lustre_msg_calc_cksum(rs->rs_repbuf);
		lustre_msg_set_cksum(rs->rs_repbuf, cksum);
		req->rq_reply_off = 0;
	}

	return 0;
}
コード例 #4
0
ファイル: sec_null.c プロジェクト: AK101111/linux
static
int null_ctx_verify(struct ptlrpc_cli_ctx *ctx, struct ptlrpc_request *req)
{
	__u32 cksums, cksumc;

	LASSERT(req->rq_repdata);

	req->rq_repmsg = req->rq_repdata;
	req->rq_replen = req->rq_repdata_len;

	if (req->rq_early) {
		cksums = lustre_msg_get_cksum(req->rq_repdata);
		cksumc = lustre_msg_calc_cksum(req->rq_repmsg);
		if (cksumc != cksums) {
			CDEBUG(D_SEC,
			       "early reply checksum mismatch: %08x != %08x\n",
			       cksumc, cksums);
			return -EINVAL;
		}
	}

	return 0;
}