|  | The FreeRADIUS server $Id: 15bac2a4c627c01d1aa2047687b3418955ac7f00 $
    | 
Main include file for our libcurl extension API. More...
#include <curl/curl.h>#include <freeradius-devel/server/global_lib.h>#include <freeradius-devel/server/module.h>#include <freeradius-devel/server/request.h>#include <freeradius-devel/util/event.h>#include <freeradius-devel/util/slab.h>#include <freeradius-devel/unlang/xlat.h> Include dependency graph for base.h:
 Include dependency graph for base.h: This graph shows which files directly or indirectly include this file:
 This graph shows which files directly or indirectly include this file:Go to the source code of this file.
| Data Structures | |
| struct | fr_curl_conn_config_t | 
| struct | fr_curl_handle_t | 
| Uctx data for timer and I/O functions.  More... | |
| struct | fr_curl_io_request_t | 
| Structure representing an individual request being passed to curl for processing.  More... | |
| struct | fr_curl_tls_t | 
| Macros | |
| #define | CURL_AT_LEAST_VERSION(x, y, z) (LIBCURL_VERSION_NUM >= CURL_VERSION_BITS(x, y, z)) | 
| #define | CURL_NO_OLDIES 1 | 
| #define | CURL_VERSION_BITS(x, y, z) ((x) << 16 | (y) << 8 | (z)) | 
| #define | FR_CURL_REQUEST_SET_OPTION(_x, _y) | 
| #define | FR_CURL_ROPTIONAL_SET_OPTION(_x, _y) | 
| #define | FR_CURL_SET_OPTION(_x, _y) | 
| Functions | |
| int | fr_curl_easy_tls_init (fr_curl_io_request_t *randle, fr_curl_tls_t const *conf) | 
| fr_curl_handle_t * | fr_curl_io_init (TALLOC_CTX *ctx, fr_event_list_t *el, bool multiplex) | 
| fr_curl_io_request_t * | fr_curl_io_request_alloc (TALLOC_CTX *ctx) | 
| Allocate a new curl easy request and wrapper struct. | |
| int | fr_curl_io_request_enqueue (fr_curl_handle_t *mhandle, request_t *request, fr_curl_io_request_t *creq) | 
| Sends a request using libcurl. | |
| int | fr_curl_response_certinfo (request_t *request, fr_curl_io_request_t *randle) | 
| CURL * | fr_curl_tmp_handle (void) | 
| Return a thread local curl easy handle. | |
| Variables | |
| global_lib_autoinst_t | fr_curl_autoinst | 
| conf_parser_t | fr_curl_conn_config [] | 
| conf_parser_t | fr_curl_tls_config [] | 
Main include file for our libcurl extension API.
Definition in file base.h.
| struct fr_curl_conn_config_t | 
 Collaboration diagram for fr_curl_conn_config_t:
 Collaboration diagram for fr_curl_conn_config_t:| Data Fields | ||
|---|---|---|
| fr_time_delta_t | connect_timeout | |
| fr_slab_config_t | reuse | |
| struct fr_curl_handle_t | 
Uctx data for timer and I/O functions.
Seems like overkill for a single field, but I'm sure we'll need to pass around other things later.
 Collaboration diagram for fr_curl_handle_t:
 Collaboration diagram for fr_curl_handle_t:| Data Fields | ||
|---|---|---|
| fr_event_list_t * | el | Event list servicing I/O events. | 
| fr_timer_t * | ev | Multi-Handle timer. | 
| CURLM * | mandle | The multi handle. | 
| uint64_t | transfers | How many transfers are current in progress. | 
| struct fr_curl_io_request_t | 
Structure representing an individual request being passed to curl for processing.
 Collaboration diagram for fr_curl_io_request_t:
 Collaboration diagram for fr_curl_io_request_t:| Data Fields | ||
|---|---|---|
| CURL * | candle | Request specific handle. | 
| request_t * | request | Current request. | 
| CURLcode | result | Result of executing the request. | 
| void * | uctx | Private data for the module using the API. | 
| struct fr_curl_tls_t | 
| Data Fields | ||
|---|---|---|
| char const * | ca_file | |
| char const * | ca_issuer_file | |
| char const * | ca_path | |
| char const * | certificate_file | |
| bool | check_cert | |
| bool | check_cert_cn | |
| bool | extract_cert_attrs | |
| char const * | keylog_file | Where to log SSL keying material like the pre-master secret. The log file can then be used to decrypt the SSL session with Wireshark. | 
| char const * | private_key_file | |
| char const * | private_key_password | |
| char const * | random_file | |
| long | require_cert | |
| #define CURL_AT_LEAST_VERSION | ( | x, | |
| y, | |||
| z | |||
| ) | (LIBCURL_VERSION_NUM >= CURL_VERSION_BITS(x, y, z)) | 
| #define CURL_VERSION_BITS | ( | x, | |
| y, | |||
| z | |||
| ) | ((x) << 16 | (y) << 8 | (z)) | 
| #define FR_CURL_REQUEST_SET_OPTION | ( | _x, | |
| _y | |||
| ) | 
| #define FR_CURL_ROPTIONAL_SET_OPTION | ( | _x, | |
| _y | |||
| ) | 
| #define FR_CURL_SET_OPTION | ( | _x, | |
| _y | |||
| ) | 
| int fr_curl_easy_tls_init | ( | fr_curl_io_request_t * | randle, | 
| fr_curl_tls_t const * | conf | ||
| ) | 
| fr_curl_handle_t * fr_curl_io_init | ( | TALLOC_CTX * | ctx, | 
| fr_event_list_t * | el, | ||
| bool | multiplex | ||
| ) | 
 Here is the caller graph for this function:
 Here is the caller graph for this function:| fr_curl_io_request_t * fr_curl_io_request_alloc | ( | TALLOC_CTX * | ctx | ) | 
| int fr_curl_io_request_enqueue | ( | fr_curl_handle_t * | mhandle, | 
| request_t * | request, | ||
| fr_curl_io_request_t * | randle | ||
| ) | 
Sends a request using libcurl.
Send the actual curl request to the server. The response will be handled by the numerous callbacks configured for the easy handle.
| [in] | mhandle | Thread-specific mhandle wrapper. | 
| [in] | request | Current request. | 
| [in] | randle | representing the request. | 
Definition at line 480 of file io.c.
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| int fr_curl_response_certinfo | ( | request_t * | request, | 
| fr_curl_io_request_t * | randle | ||
| ) | 
| CURL * fr_curl_tmp_handle | ( | void | ) | 
Return a thread local curl easy handle.
This should only be used for calls into libcurl functions which don't operate on an active request, like the escape/unescape functions.
Definition at line 267 of file base.c.
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | extern | 
| 
 | extern | 
| 
 | extern | 
 1.9.8
 1.9.8