Пример #1
0
afs_int32
SRXAFSCB_TellMeAboutYourself(struct rx_call *a_call, struct interfaceAddr *
			     addr, Capabilities *capabilities)
{
    afs_int32 code;
    rpc_test_request_ctx *ctx = CTX_FOR_RXCALL(a_call);

    printf("%s: SRXAFSCB_TellMeAboutYourself: enter (%s)\n", prog,
        ctx->cb_svc_name);

    addr->numberOfInterfaces = ctx->cb_listen_addr.numberOfInterfaces;
    addr->uuid = ctx->cb_listen_addr.uuid;

    if (capabilities) {
        afs_uint32 *dataBuffP;
        afs_int32 dataBytes;

        dataBytes = 1 * sizeof(afs_uint32);
        dataBuffP = (afs_uint32 *) xdr_alloc(dataBytes);
        dataBuffP[0] = CLIENT_CAPABILITY_ERRORTRANS;
#if defined(AFS_EXTENDED_CALLBACK)
        if (ctx->flags & RPC_TEST_REQ_CTX_FLAG_XCB)
            dataBuffP[0] |= CLIENT_CAPABILITY_EXT_CALLBACK;
#endif /* AFS_EXTENDED_CALLBACK */
        capabilities->Capabilities_len = dataBytes / sizeof(afs_uint32);
        capabilities->Capabilities_val = dataBuffP;
    }

    return (0);

}        /* SRXAFSCB_TellMeAboutYourself */
Пример #2
0
int
afs_ExtractTokensForPioctl(struct tokenJar *token,
			   time_t now,
			   struct ktc_setTokenData *tokenSet)
{
    int numTokens, pos;
    int code = 0;

    numTokens = countValidTokens(token, now);

    tokenSet->tokens.tokens_len = numTokens;
    tokenSet->tokens.tokens_val
	= xdr_alloc(sizeof(struct token_opaque) * numTokens);

    if (tokenSet->tokens.tokens_val == NULL)
	return ENOMEM;

    pos = 0;
    while (token != NULL && pos < numTokens) {
	code = extractPioctlToken(token, &tokenSet->tokens.tokens_val[pos]);
	if (code)
	    goto out;
	token = token->next;
	pos++;
    }

out:
    if (code)
	xdr_free((xdrproc_t) xdr_ktc_setTokenData, tokenSet);

    return code;
}
Пример #3
0
static int
rxkad_extractTokenForPioctl(struct tokenJar *token,
			       struct ktc_tokenUnion *pioctlToken) {

    struct token_rxkad *rxkadPioctl;
    struct rxkadToken *rxkadInternal;

    rxkadPioctl = &pioctlToken->ktc_tokenUnion_u.at_kad;
    rxkadInternal = &token->content.rxkad;

    rxkadPioctl->rk_kvno = rxkadInternal->clearToken.AuthHandle;
    rxkadPioctl->rk_viceid = rxkadInternal->clearToken.ViceId;
    rxkadPioctl->rk_begintime = rxkadInternal->clearToken.BeginTimestamp;
    rxkadPioctl->rk_endtime = rxkadInternal->clearToken.EndTimestamp;
    memcpy(rxkadPioctl->rk_key, rxkadInternal->clearToken.HandShakeKey, 8);

    rxkadPioctl->rk_ticket.rk_ticket_val = xdr_alloc(rxkadInternal->ticketLen);
    if (rxkadPioctl->rk_ticket.rk_ticket_val == NULL)
	return ENOMEM;
    rxkadPioctl->rk_ticket.rk_ticket_len = rxkadInternal->ticketLen;
    memcpy(rxkadPioctl->rk_ticket.rk_ticket_val,
	   rxkadInternal->ticket, rxkadInternal->ticketLen);

    return 0;
}
Пример #4
0
static void
convertBulkToNBulk(bulkentries *bulk, nbulkentries *nbulk) {
    int i;

    if (bulk->bulkentries_len == 0)
	return;

    nbulk->nbulkentries_len = bulk->bulkentries_len;
    nbulk->nbulkentries_val =
	xdr_alloc(bulk->bulkentries_len * sizeof(struct nvldbentry));

    for (i = 0; i < bulk->bulkentries_len; i++) {
	ovlentry_to_nvlentry(&bulk->bulkentries_val[i],
			     &nbulk->nbulkentries_val[i]);
    }
}