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 */
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; }
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; }
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]); } }