int process(void *rh, VALUE_PAIR *send, int acct, int nas_port, int send_info) { VALUE_PAIR *received = NULL; char buf[BUF_LEN]; RC_AAA_CTX *ctx = NULL; const unsigned char *p; int i, j; received = NULL; if (acct == 0) { i = rc_aaa_ctx(rh, &ctx, nas_port, send, &received, NULL, 1, PW_ACCESS_REQUEST); if (received != NULL) { printf("%s", rc_avpair_log(rh, received, buf, BUF_LEN)); rc_avpair_free(received); } if (ctx) { if (send_info) { printf("Request-Info-Secret = %s\n", rc_aaa_ctx_get_secret(ctx)); printf("Request-Info-Vector = "); p = rc_aaa_ctx_get_vector(ctx); for (j=0; j<AUTH_VECTOR_LEN; j++) { printf("%.2x", (unsigned)p[j]); } printf("\n"); } rc_aaa_ctx_free(ctx); } } else { i = rc_acct(rh, nas_port, send); } return (i == OK_RC) ? 0 : 1; }
/** Builds an authentication/accounting request for port id client_port with the value_pairs send and submits it to a server * * @param rh a handle to parsed configuration. * @param client_port the client port number to use (may be zero to use any available). * @param send a VALUE_PAIR array of values (e.g., PW_USER_NAME). * @param received an allocated array of received values. * @param msg must be an array of PW_MAX_MSG_SIZE or NULL; will contain the concatenation of any * PW_REPLY_MESSAGE received. * @param add_nas_port if non-zero it will include PW_NAS_PORT in sent pairs. * @param request_type one of standard RADIUS codes (e.g., PW_ACCESS_REQUEST). * @return received value_pairs in received, messages from the server in msg and OK_RC (0) on success, negative * on failure as return value. */ int rc_aaa(rc_handle *rh, uint32_t client_port, VALUE_PAIR *send, VALUE_PAIR **received, char *msg, int add_nas_port, rc_standard_codes request_type) { return rc_aaa_ctx(rh, NULL, client_port, send, received, msg, add_nas_port, request_type); }