|
Radcli library 2.0.0
A simple radius library -- legacy API reference
|
Main API Functions. More...
Data Structures | |
| struct | server |
| struct | dict_attr |
| struct | dict_value |
| struct | dict_vendor |
| struct | rc_value_pair |
| struct | send_data |
Typedefs | |
| typedef enum rc_type | rc_type |
| typedef struct rc_conf | rc_handle |
| typedef struct server | SERVER |
| typedef enum rc_socket_type | rc_socket_type |
| typedef enum rc_attr_type | rc_attr_type |
| typedef enum rc_standard_codes | rc_standard_codes |
| typedef struct dict_attr | DICT_ATTR |
| typedef struct dict_value | DICT_VALUE |
| typedef struct dict_vendor | DICT_VENDOR |
| typedef enum rc_send_status | rc_send_status |
| typedef struct rc_value_pair | VALUE_PAIR |
| typedef struct send_data | SEND_DATA |
| typedef struct rc_aaa_ctx_st | RC_AAA_CTX |
Enumerations | |
| enum | rc_type { AUTH = 0 , ACCT = 1 } |
| enum | rc_socket_type { RC_SOCKET_UDP = 0 , RC_SOCKET_TLS = 1 , RC_SOCKET_DTLS = 2 , RC_SOCKET_TCP = 3 } |
| enum | rc_attr_type { PW_TYPE_STRING =0 , PW_TYPE_INTEGER =1 , PW_TYPE_IPADDR =2 , PW_TYPE_DATE =3 , PW_TYPE_IPV6ADDR =4 , PW_TYPE_IPV6PREFIX =5 , PW_TYPE_MAX =6 } |
| enum | rc_standard_codes { PW_ACCESS_REQUEST =1 , PW_ACCESS_ACCEPT =2 , PW_ACCESS_REJECT =3 , PW_ACCOUNTING_REQUEST =4 , PW_ACCOUNTING_RESPONSE =5 , PW_ACCOUNTING_STATUS =6 , PW_PASSWORD_REQUEST =7 , PW_PASSWORD_ACK =8 , PW_PASSWORD_REJECT =9 , PW_ACCOUNTING_MESSAGE =10 , PW_ACCESS_CHALLENGE =11 , PW_STATUS_SERVER =12 , PW_STATUS_CLIENT =13 } |
| enum | rc_vendor_attr_microsoft { PW_MS_CHAP_CHALLENGE = 11 , PW_MS_CHAP_RESPONSE = 1 , PW_MS_CHAP2_RESPONSE = 25 , PW_MS_CHAP2_SUCCESS = 26 , PW_MS_MPPE_ENCRYPTION_POLICY = 7 , PW_MS_MPPE_ENCRYPTION_TYPE = 8 , PW_MS_MPPE_ENCRYPTION_TYPES =PW_MS_MPPE_ENCRYPTION_TYPE , PW_MS_CHAP_MPPE_KEYS = 12 , PW_MS_MPPE_SEND_KEY = 16 , PW_MS_MPPE_RECV_KEY = 17 , PW_MS_PRIMARY_DNS_SERVER = 28 , PW_MS_SECONDARY_DNS_SERVER = 29 , PW_MS_PRIMARY_NBNS_SERVER = 30 , PW_MS_SECONDARY_NBNS_SERVER = 31 } |
| enum | rc_vendor_attr_roaringpenguin { PW_RP_UPSTREAM_LIMIT =1 , PW_RP_DOWNSTREAM_LIMIT =2 } |
| enum | rc_send_status { NETUNREACH_RC =-4 , BADRESPID_RC =-3 , BADRESP_RC =-2 , ERROR_RC =-1 , OK_RC =0 , TIMEOUT_RC =1 , REJECT_RC =2 , CHALLENGE_RC =3 } |
Functions | |
| const char * | rc_aaa_ctx_get_secret (RC_AAA_CTX *ctx) |
| Returns the secret available in this context. It is the secret value used in the request. | |
| const void * | rc_aaa_ctx_get_vector (RC_AAA_CTX *ctx) |
| Returns a pointer request vector used in the request. It is of AUTH_VECTOR_LEN size. | |
| void | rc_aaa_ctx_free (RC_AAA_CTX *ctx) |
| Deinitializes an RC_AAA_CTX structure. | |
| VALUE_PAIR * | rc_avpair_add (rc_handle const *rh, VALUE_PAIR **list, uint32_t attrid, void const *pval, int len, uint32_t vendorspec) |
| Adds an attribute-value pair to the given list. | |
| void | rc_avpair_remove (VALUE_PAIR **list, uint32_t attrid, uint32_t vendorspec) |
| Removes an attribute-value pair from the given list. | |
| VALUE_PAIR * | rc_avpair_next (VALUE_PAIR *t) |
| Iterates through the attribute-value pairs. | |
| int | rc_avpair_assign (VALUE_PAIR *vp, void const *pval, int len) |
| Assigns the given value to an attribute-value pair. | |
| VALUE_PAIR * | rc_avpair_new (rc_handle const *rh, uint32_t attrid, void const *pval, int len, uint32_t vendorspec) |
| Make a new attribute-value pair with given parameters. | |
| VALUE_PAIR * | rc_avpair_gen (rc_handle const *rh, VALUE_PAIR *pair, unsigned char const *ptr, int length, uint32_t vendorspec) |
| Decode a raw RADIUS attribute buffer into a VALUE_PAIR list. | |
| VALUE_PAIR * | rc_avpair_get (VALUE_PAIR *vp, uint32_t attrid, uint32_t vendorspec) |
| Find the first attribute value-pair (which matches the given attribute) from the specified value-pair list. | |
| VALUE_PAIR * | rc_avpair_copy (VALUE_PAIR *p) |
| Return a copy of the existing list "p" ala strdup(). | |
| void | rc_avpair_insert (VALUE_PAIR **a, VALUE_PAIR *p, VALUE_PAIR *b) |
| Insert a VALUE_PAIR into a list. | |
| void | rc_avpair_free (VALUE_PAIR *pair) |
| Frees all value_pairs in the list. | |
| int | rc_avpair_parse (rc_handle const *rh, char const *buffer, VALUE_PAIR **first_pair) |
| Parses the buffer to extract the attribute-value pairs. | |
| int | rc_avpair_tostr (rc_handle const *rh, VALUE_PAIR *pair, char *name, int ln, char *value, int lv) |
| Translate an av_pair into printable strings. | |
| char * | rc_avpair_log (rc_handle const *rh, VALUE_PAIR *pair, char *buf, size_t buf_len) |
| Format a sequence of attribute value pairs into a printable string. | |
| int | rc_avpair_get_uint32 (VALUE_PAIR *vp, uint32_t *res) |
| Get the integer value of the given attribute value-pair. | |
| int | rc_avpair_get_in6 (VALUE_PAIR *vp, struct in6_addr *res, unsigned *prefix) |
| Get the IPv6 address and prefix value of the given attribute value-pair. | |
| int | rc_avpair_get_raw (VALUE_PAIR *vp, char **res, unsigned *res_size) |
| Get the raw value of the given attribute value-pair. | |
| void | rc_avpair_get_attr (VALUE_PAIR *vp, unsigned *type, unsigned *id) |
| Get the attribute ID and type of the given attribute value-pair. | |
| void | rc_buildreq (rc_handle const *rh, SEND_DATA *data, int code, char *server, unsigned short port, char *secret, int timeout, int retries) |
| Build a skeleton RADIUS request using information from the config file. | |
| int | rc_aaa_ctx (rc_handle *rh, RC_AAA_CTX **ctx, uint32_t nas_port, VALUE_PAIR *send, VALUE_PAIR **received, char *msg, int add_nas_port, rc_standard_codes request_type) |
| Builds an authentication/accounting request and submits it to a server, optionally returning context. | |
| int | rc_aaa_ctx_server (rc_handle *rh, RC_AAA_CTX **ctx, SERVER *aaaserver, rc_type type, uint32_t nas_port, VALUE_PAIR *send, VALUE_PAIR **received, char *msg, int add_nas_port, rc_standard_codes request_type) |
| Builds an authentication/accounting request and submits it to a specific server. | |
| int | rc_aaa (rc_handle *rh, uint32_t nas_port, VALUE_PAIR *send, VALUE_PAIR **received, char *msg, int add_nas_port, rc_standard_codes request_type) |
| Builds an authentication/accounting request for port id nas_port with the value_pairs send and submits it to a server. | |
| int | rc_auth (rc_handle *rh, uint32_t nas_port, VALUE_PAIR *send, VALUE_PAIR **received, char *msg) |
| Builds an authentication request for port id nas_port with the value_pairs send and submits it to a server. | |
| int | rc_auth_proxy (rc_handle *rh, VALUE_PAIR *send, VALUE_PAIR **received, char *msg) |
| Builds an authentication request for proxying. | |
| int | rc_acct (rc_handle *rh, uint32_t nas_port, VALUE_PAIR *send) |
| Builds an accounting request for port id nas_port with the value_pairs at send. | |
| int | rc_acct_proxy (rc_handle *rh, VALUE_PAIR *send) |
| Builds an accounting request with the value_pairs at send. | |
| int | rc_acct_async (rc_handle *rh, uint32_t nas_port, VALUE_PAIR *send) |
| Sends an accounting request to every configured accounting server without waiting for a reply. | |
| int | rc_check (rc_handle *rh, char *host, char *secret, unsigned short port, char *msg) |
| Asks the server hostname on the specified port for a status message. | |
| DICT_ATTR * | rc_dict_addattr (rc_handle *rh, char const *namestr, uint32_t value, int type, uint32_t vendorspec) |
| Add attribute to dictionary. | |
| DICT_VALUE * | rc_dict_addval (rc_handle *rh, char const *attrstr, char const *namestr, uint32_t value) |
| Add value to dictionary. | |
| DICT_VENDOR * | rc_dict_addvend (rc_handle *rh, char const *namestr, uint32_t vendorspec) |
| Add vendor to dictionary. | |
| DICT_ATTR * | rc_dict_getattr (rc_handle const *rh, uint64_t attribute) |
| Lookup a DICT_ATTR by attribute number. | |
| DICT_ATTR * | rc_dict_findattr (rc_handle const *rh, char const *attrname) |
| Lookup a DICT_ATTR by its name. | |
| DICT_VALUE * | rc_dict_findval (rc_handle const *rh, char const *valname) |
| Lookup a DICT_VALUE by its name. | |
| DICT_VENDOR * | rc_dict_findvend (rc_handle const *rh, char const *vendorname) |
| Lookup a DICT_VENDOR by its name. | |
| DICT_VENDOR * | rc_dict_getvend (rc_handle const *rh, uint32_t vendorspec) |
| Lookup a DICT_VENDOR by its IANA number. | |
| DICT_VALUE * | rc_dict_getval (rc_handle const *rh, uint32_t value, char const *attrname) |
| Get DICT_VALUE based on attribute name and integer value number. | |
| int | rc_pack_list (rc_handle *rh, VALUE_PAIR *vp, char *secret, AUTH_HDR *auth, int max_len) |
| int | rc_send_server (rc_handle *rh, SEND_DATA *data, char *msg, rc_type type) |
| Sends a request to a RADIUS server and waits for the reply. | |
| int | rc_send_server_ctx (rc_handle *rh, RC_AAA_CTX **ctx, SEND_DATA *data, char *msg, rc_type type, int no_wait) |
Main API Functions.
| typedef struct rc_aaa_ctx_st RC_AAA_CTX |
Opaque context returned by rc_aaa_ctx() after a successful request.
Captures the shared secret and the request authenticator vector (AUTH_VECTOR_LEN bytes) that were used in the last request. These can be retrieved with rc_aaa_ctx_get_secret() and rc_aaa_ctx_get_vector().
Pass NULL for the ctx argument to rc_aaa_ctx() if this information is not needed. When a context is no longer needed, free it with rc_aaa_ctx_free().
| enum rc_attr_type |
Attribute types
| enum rc_send_status |
Return codes for rc_send_server()
| enum rc_socket_type |
| enum rc_standard_codes |
| enum rc_type |
| int rc_aaa | ( | rc_handle * | rh, |
| uint32_t | nas_port, | ||
| VALUE_PAIR * | send, | ||
| VALUE_PAIR ** | received, | ||
| char * | msg, | ||
| int | add_nas_port, | ||
| rc_standard_codes | request_type ) |
Builds an authentication/accounting request for port id nas_port with the value_pairs send and submits it to a server.
| rh | a handle to parsed configuration. |
| nas_port | the physical NAS port number to use (may be zero). |
| send | a VALUE_PAIR array of values (e.g., PW_USER_NAME). |
| received | an allocated array of received values. |
| msg | must be an array of PW_MAX_MSG_SIZE or NULL; will contain the concatenation of any PW_REPLY_MESSAGE received. |
| add_nas_port | this should be zero; if non-zero it will include PW_NAS_PORT in sent pairs. |
| request_type | one of standard RADIUS codes (e.g., PW_ACCESS_REQUEST). |
Definition at line 273 of file buildreq.c.
| int rc_aaa_ctx | ( | rc_handle * | rh, |
| RC_AAA_CTX ** | ctx, | ||
| uint32_t | nas_port, | ||
| VALUE_PAIR * | send, | ||
| VALUE_PAIR ** | received, | ||
| char * | msg, | ||
| int | add_nas_port, | ||
| rc_standard_codes | request_type ) |
Builds an authentication/accounting request and submits it to a server, optionally returning context.
Selects the server list from configuration (authserver or acctserver depending on request_type and transport), sends the request with automatic retry and server failover, and returns the server's response.
ctx set to NULL). Pass a non-NULL ctx only when you need to inspect the secret and vector used in the request afterwards.| rh | a handle to parsed configuration. |
| ctx | if non-NULL, receives an allocated RC_AAA_CTX on success; the caller must free it with rc_aaa_ctx_free(). Pass NULL if not needed. |
| nas_port | the physical NAS port number to include (may be zero). |
| send | VALUE_PAIR list of attributes to send (e.g., PW_USER_NAME). |
| received | on success, receives the server's reply VALUE_PAIR list; the caller must free it with rc_avpair_free(). |
| msg | if non-NULL, must point to a buffer of PW_MAX_MSG_SIZE bytes; will contain the concatenation of any PW_REPLY_MESSAGE attributes received. |
| add_nas_port | if non-zero, PW_NAS_PORT is added to the sent pairs. |
| request_type | one of the standard RADIUS codes (e.g., PW_ACCESS_REQUEST). |
Definition at line 156 of file buildreq.c.
| void rc_aaa_ctx_free | ( | RC_AAA_CTX * | ctx | ) |
Deinitializes an RC_AAA_CTX structure.
| ctx | a pointer to a RC_AAA_CTX structure. |
| const char * rc_aaa_ctx_get_secret | ( | RC_AAA_CTX * | ctx | ) |
Returns the secret available in this context. It is the secret value used in the request.
| ctx | a pointer to a RC_AAA_CTX structure. |
| const void * rc_aaa_ctx_get_vector | ( | RC_AAA_CTX * | ctx | ) |
Returns a pointer request vector used in the request. It is of AUTH_VECTOR_LEN size.
| ctx | a pointer to a RC_AAA_CTX structure. |
| int rc_aaa_ctx_server | ( | rc_handle * | rh, |
| RC_AAA_CTX ** | ctx, | ||
| SERVER * | aaaserver, | ||
| rc_type | type, | ||
| uint32_t | nas_port, | ||
| VALUE_PAIR * | send, | ||
| VALUE_PAIR ** | received, | ||
| char * | msg, | ||
| int | add_nas_port, | ||
| rc_standard_codes | request_type ) |
Builds an authentication/accounting request and submits it to a specific server.
Like rc_aaa_ctx() but sends to aaaserver instead of the server list from the configuration. Use this when the caller has already selected the server (e.g., in proxy scenarios).
| rh | a handle to parsed configuration. |
| ctx | if non-NULL, receives an allocated RC_AAA_CTX on success; the caller must free it with rc_aaa_ctx_free(). Pass NULL if not needed. |
| aaaserver | a non-NULL SERVER describing the target server(s). |
| type | AUTH to use the authentication port, ACCT for the accounting port. Under TLS/DTLS only AUTH is valid (both auth and acct share the same TLS connection to the authserver). |
| nas_port | the physical NAS port number to include (may be zero). |
| send | VALUE_PAIR list of attributes to send (e.g., PW_USER_NAME). |
| received | on success, receives the server's reply VALUE_PAIR list; the caller must free it with rc_avpair_free(). |
| msg | if non-NULL, must point to a buffer of PW_MAX_MSG_SIZE bytes; will contain the concatenation of any PW_REPLY_MESSAGE attributes received. |
| add_nas_port | if non-zero, PW_NAS_PORT is added to the sent pairs. |
| request_type | one of the standard RADIUS codes (e.g., PW_ACCESS_REQUEST). |
Definition at line 195 of file buildreq.c.
| int rc_acct | ( | rc_handle * | rh, |
| uint32_t | nas_port, | ||
| VALUE_PAIR * | send ) |
Builds an accounting request for port id nas_port with the value_pairs at send.
| rh | a handle to parsed configuration. |
| nas_port | the physical NAS port number to use (may be zero). |
| send | a VALUE_PAIR array of values (e.g., PW_USER_NAME). |
Definition at line 332 of file buildreq.c.
| int rc_acct_async | ( | rc_handle * | rh, |
| uint32_t | nas_port, | ||
| VALUE_PAIR * | send ) |
Sends an accounting request to every configured accounting server without waiting for a reply.
Selects the server list the same way rc_acct() does (acctserver, or authserver under TLS/DTLS). Unlike rc_acct()/rc_aaa(), which stop at the first server that replies and fail over to the next only after a timeout, this sends to every configured server unconditionally, since there is no reply to judge success or failure by. Intended for best-effort notifications such as an Accounting-Stop sent while an application is shutting down and cannot afford to block.
| rh | a handle to parsed configuration. |
| nas_port | the physical NAS port number to include (may be zero). |
| send | VALUE_PAIR list of attributes to send; NAS-Port and Acct-Delay-Time are filled in as with rc_acct(). |
Definition at line 432 of file buildreq.c.
| int rc_acct_proxy | ( | rc_handle * | rh, |
| VALUE_PAIR * | send ) |
Builds an accounting request with the value_pairs at send.
| rh | a handle to parsed configuration. |
| send | a VALUE_PAIR array of values (e.g., PW_USER_NAME). |
Definition at line 345 of file buildreq.c.
| int rc_auth | ( | rc_handle * | rh, |
| uint32_t | nas_port, | ||
| VALUE_PAIR * | send, | ||
| VALUE_PAIR ** | received, | ||
| char * | msg ) |
Builds an authentication request for port id nas_port with the value_pairs send and submits it to a server.
| rh | a handle to parsed configuration. |
| nas_port | the physical NAS port number to use (may be zero). |
| send | a VALUE_PAIR array of values (e.g., PW_USER_NAME). |
| received | an allocated array of received values. |
| msg | must be an array of PW_MAX_MSG_SIZE or NULL; will contain the concatenation of any PW_REPLY_MESSAGE received. |
Definition at line 293 of file buildreq.c.
| int rc_auth_proxy | ( | rc_handle * | rh, |
| VALUE_PAIR * | send, | ||
| VALUE_PAIR ** | received, | ||
| char * | msg ) |
Builds an authentication request for proxying.
Builds an authentication request with the value_pairs send and submits it to a server. Works for a proxy; does not add IP address, and does does not rely on config file.
| rh | a handle to parsed configuration. |
| send | a VALUE_PAIR array of values (e.g., PW_USER_NAME). |
| received | an allocated array of received values. |
| msg | must be an array of PW_MAX_MSG_SIZE or NULL; will contain the concatenation of any PW_REPLY_MESSAGE received. |
Definition at line 315 of file buildreq.c.
| VALUE_PAIR * rc_avpair_add | ( | rc_handle const * | rh, |
| VALUE_PAIR ** | list, | ||
| uint32_t | attrid, | ||
| void const * | pval, | ||
| int | len, | ||
| uint32_t | vendorspec ) |
Adds an attribute-value pair to the given list.
See rc_avpair_assign() for the format of the data.
| rh | a handle to parsed configuration. |
| list | a VALUE_PAIR array of values; initially must be NULL. |
| attrid | The attribute of the pair to add (e.g., PW_USER_NAME). |
| pval | the value (e.g., the actual username). |
| len | the length of pval, or -1 if to calculate (in case of strings). |
| vendorspec | The vendor ID in case of a vendor specific value - 0 otherwise. |
| int rc_avpair_assign | ( | VALUE_PAIR * | vp, |
| void const * | pval, | ||
| int | len ) |
Assigns the given value to an attribute-value pair.
If the value is of type PW_TYPE_STRING it must either be a null terminated string with len set to -1, or raw data with length properly set. For PW_TYPE_DATE, PW_TYPE_INTEGER, and PW_TYPE_IPADDR an uint32_t number should be set at pval. For IPv4 addresses it should be in host byte order.
For PW_TYPE_IPV6ADDR type a 16-byte long address is expected, and for PW_TYPE_IPV6PREFIX the rfc3162 prefix format is expected. Simply that is a zero byte, a byte with the value of prefix (e.g., 112), and the remaining bytes are the IPv6 address.
| vp | a pointer to a VALUE_PAIR structure. |
| pval | the value (e.g., the actual username). |
| len | the length of pval, or -1 if to calculate (in case of strings). |
| VALUE_PAIR * rc_avpair_copy | ( | VALUE_PAIR * | p | ) |
| void rc_avpair_free | ( | VALUE_PAIR * | pair | ) |
| VALUE_PAIR * rc_avpair_gen | ( | rc_handle const * | rh, |
| VALUE_PAIR * | pair, | ||
| unsigned char const * | ptr, | ||
| int | length, | ||
| uint32_t | vendorspec ) |
Decode a raw RADIUS attribute buffer into a VALUE_PAIR list.
Decodes the attribute/value region of a received RADIUS packet (the bytes that follow the 20-byte fixed header) into a linked list of VALUE_PAIR structures. Unknown attributes are logged and skipped; they are not a hard error.
| rh | a handle to parsed configuration (used for dictionary lookups). |
| pair | optional existing VALUE_PAIR list to append decoded attributes to; pass NULL to start a fresh list. |
| ptr | pointer to the start of the attribute data region. |
| length | number of bytes in the attribute region. |
| vendorspec | vendor PEN when decoding a vendor-specific sub-attribute block; pass 0 for top-level packet attributes. |
| VALUE_PAIR * rc_avpair_get | ( | VALUE_PAIR * | vp, |
| uint32_t | attrid, | ||
| uint32_t | vendorspec ) |
Find the first attribute value-pair (which matches the given attribute) from the specified value-pair list.
| vp | a pointer to a VALUE_PAIR structure. |
| attrid | The attribute of the pair to find (e.g., PW_USER_NAME). |
| vendorspec | The vendor ID in case of a vendor specific value - 0 otherwise. |
| void rc_avpair_get_attr | ( | VALUE_PAIR * | vp, |
| unsigned * | type, | ||
| unsigned * | id ) |
Get the attribute ID and type of the given attribute value-pair.
| vp | a pointer to a VALUE_PAIR structure. |
| type | The attribute type, of type rc_attr_type |
| id | The attribute identifier, of type rc_attr_id |
| int rc_avpair_get_in6 | ( | VALUE_PAIR * | vp, |
| struct in6_addr * | res, | ||
| unsigned * | prefix ) |
Get the IPv6 address and prefix value of the given attribute value-pair.
This function is valid for PW_TYPE_IPV6ADDR, PW_TYPE_IPV6PREFIX.
| vp | a pointer to a VALUE_PAIR structure. |
| res | An in6_addr structure for result to be copied in. |
| prefix | If of type PW_TYPE_IPV6PREFIX the prefix will be copied (may be NULL). |
| int rc_avpair_get_raw | ( | VALUE_PAIR * | vp, |
| char ** | res, | ||
| unsigned * | res_size ) |
Get the raw value of the given attribute value-pair.
This function is valid for PW_TYPE_STRING, PW_TYPE_IPV6ADDR, PW_TYPE_IPV6PREFIX.
| vp | a pointer to a VALUE_PAIR structure. |
| res | Will contain pointer to the data value. |
| res_size | Will contain the data size. |
| int rc_avpair_get_uint32 | ( | VALUE_PAIR * | vp, |
| uint32_t * | res ) |
Get the integer value of the given attribute value-pair.
This function is valid for PW_TYPE_INTEGER, PW_TYPE_IPADDR. PW_TYPE_DATE. In PW_TYPE_IPADDR this value will contain the IPv4 address in host by order.
| vp | a pointer to a VALUE_PAIR structure. |
| res | The integer value returned. |
| void rc_avpair_insert | ( | VALUE_PAIR ** | a, |
| VALUE_PAIR * | p, | ||
| VALUE_PAIR * | b ) |
Insert a VALUE_PAIR into a list.
Given the address of an existing list "a" and a pointer to an entry "p" in that list, add the value pair "b" to the "a" list after the "p" entry. If "p" is NULL, add the value pair "b" to the end of "a".
| a | a VALUE_PAIR array of values. |
| p | a pointer to a VALUE_PAIR in a. |
| b | The VALUE_PAIR pointer to add in a. |
| char * rc_avpair_log | ( | rc_handle const * | rh, |
| VALUE_PAIR * | pair, | ||
| char * | buf, | ||
| size_t | buf_len ) |
Format a sequence of attribute value pairs into a printable string.
The caller should provide a storage buffer and the buffer length.
| rh | a handle to parsed configuration. |
| pair | a pointer to a VALUE_PAIR structure. |
| buf | will hold the string output of the pair. |
| buf_len | the size of buf. |
| VALUE_PAIR * rc_avpair_new | ( | rc_handle const * | rh, |
| uint32_t | attrid, | ||
| void const * | pval, | ||
| int | len, | ||
| uint32_t | vendorspec ) |
Make a new attribute-value pair with given parameters.
See rc_avpair_assign() for the format of the data.
| rh | a handle to parsed configuration. |
| attrid | The attribute of the pair to add (e.g., PW_USER_NAME). |
| pval | the value (e.g., the actual username). |
| len | the length of pval, or -1 if to calculate (in case of strings). |
| vendorspec | The vendor ID in case of a vendor specific value - 0 otherwise. |
| VALUE_PAIR * rc_avpair_next | ( | VALUE_PAIR * | t | ) |
Iterates through the attribute-value pairs.
The attribute-value are organized in a linked-list, and this function provides a way to iterate them given the first element initially.
| t | the current pair. |
| int rc_avpair_parse | ( | rc_handle const * | rh, |
| char const * | buffer, | ||
| VALUE_PAIR ** | first_pair ) |
Parses the buffer to extract the attribute-value pairs.
| rh | a handle to parsed configuration. |
| buffer | the buffer to be parsed. |
| first_pair | an allocated array of values. |
| void rc_avpair_remove | ( | VALUE_PAIR ** | list, |
| uint32_t | attrid, | ||
| uint32_t | vendorspec ) |
Removes an attribute-value pair from the given list.
See rc_avpair_assign() for the format of the data.
| list | a VALUE_PAIR array of values |
| attrid | The attribute of the pair to remove (e.g., PW_USER_NAME). |
| vendorspec | The vendor ID in case of a vendor specific value - 0 otherwise. |
| int rc_avpair_tostr | ( | rc_handle const * | rh, |
| VALUE_PAIR * | pair, | ||
| char * | name, | ||
| int | ln, | ||
| char * | value, | ||
| int | lv ) |
Translate an av_pair into printable strings.
| rh | a handle to parsed configuration. |
| pair | a pointer to a VALUE_PAIR structure. |
| name | the name of the pair. |
| ln | the size of name. |
| value | the value of the pair. |
| lv | the size of value. |
| void rc_buildreq | ( | rc_handle const * | rh, |
| SEND_DATA * | data, | ||
| int | code, | ||
| char * | server, | ||
| unsigned short | port, | ||
| char * | secret, | ||
| int | timeout, | ||
| int | retries ) |
Build a skeleton RADIUS request using information from the config file.
| rh | a handle to parsed configuration. |
| data | a pointer to a SEND_DATA structure. |
| code | one of standard RADIUS codes (e.g., PW_ACCESS_REQUEST). |
| server | the name of the server. |
| port | the server's port number. |
| secret | the secret used by the server. |
| timeout | the timeout in seconds of a message. |
| retries | the number of retries. |
Definition at line 38 of file buildreq.c.
| int rc_check | ( | rc_handle * | rh, |
| char * | host, | ||
| char * | secret, | ||
| unsigned short | port, | ||
| char * | msg ) |
Asks the server hostname on the specified port for a status message.
| rh | a handle to parsed configuration. |
| host | the name of the server. |
| secret | the secret used by the server. |
| port | the server's port number. |
| msg | must be an array of PW_MAX_MSG_SIZE or NULL; will contain the concatenation of any PW_REPLY_MESSAGE received. |
Definition at line 453 of file buildreq.c.
| DICT_ATTR * rc_dict_addattr | ( | rc_handle * | rh, |
| char const * | namestr, | ||
| uint32_t | value, | ||
| int | type, | ||
| uint32_t | vendorspec ) |
Add attribute to dictionary.
A re-add identical to an already-loaded attribute of the same name returns that existing attribute rather than adding a duplicate; a re-add of the same name with a conflicting definition (different id/vendor/type) fails, after a warning naming both definitions.
| rh | a handle to configuration. |
| namestr | attribute name |
| type | attribute type |
| value | attribute value |
| vendorspec | vendorspec |
| DICT_VALUE * rc_dict_addval | ( | rc_handle * | rh, |
| char const * | attrstr, | ||
| char const * | namestr, | ||
| uint32_t | value ) |
Add value to dictionary.
A re-add identical to an already-loaded value of the same attribute+number returns that existing value rather than adding a duplicate; a re-add of the same attribute+number with a conflicting name fails, after a warning naming both definitions.
| rh | a handle to configuration. |
| attrstr | attribute name |
| namestr | name |
| value | attribute value |
| DICT_VENDOR * rc_dict_addvend | ( | rc_handle * | rh, |
| char const * | namestr, | ||
| uint32_t | vendorspec ) |
Add vendor to dictionary.
A re-add identical to an already-loaded vendor of the same name returns that existing vendor rather than adding a duplicate; a re-add of the same name with a conflicting Vendor-Id fails, after a warning naming both definitions.
| rh | a handle to configuration. |
| namestr | vendor name |
| vendorspec | vendorspec |
| DICT_ATTR * rc_dict_findattr | ( | rc_handle const * | rh, |
| char const * | attrname ) |
| DICT_VALUE * rc_dict_findval | ( | rc_handle const * | rh, |
| char const * | valname ) |
| DICT_VENDOR * rc_dict_findvend | ( | rc_handle const * | rh, |
| char const * | vendorname ) |
| DICT_ATTR * rc_dict_getattr | ( | rc_handle const * | rh, |
| uint64_t | attribute ) |
| DICT_VALUE * rc_dict_getval | ( | rc_handle const * | rh, |
| uint32_t | value, | ||
| char const * | attrname ) |
| DICT_VENDOR * rc_dict_getvend | ( | rc_handle const * | rh, |
| uint32_t | vendorspec ) |
| int rc_pack_list | ( | rc_handle * | rh, |
| VALUE_PAIR * | vp, | ||
| char * | secret, | ||
| AUTH_HDR * | auth, | ||
| int | max_len ) |
| int rc_send_server | ( | rc_handle * | rh, |
| SEND_DATA * | data, | ||
| char * | msg, | ||
| rc_type | type ) |
Sends a request to a RADIUS server and waits for the reply.
| rh | a handle to parsed configuration |
| data | a pointer to a SEND_DATA structure |
| msg | must be an array of PW_MAX_MSG_SIZE or NULL; will contain the concatenation of any PW_REPLY_MESSAGE received. |
| type | must be AUTH or ACCT |
| int rc_send_server_ctx | ( | rc_handle * | rh, |
| RC_AAA_CTX ** | ctx, | ||
| SEND_DATA * | data, | ||
| char * | msg, | ||
| rc_type | type, | ||
| int | no_wait ) |