1 /** @file libradsec-impl.h
2 @brief Libraray internal header file for libradsec. */
4 /* See the file COPYING for licensing information. */
6 #include <freeradius/libradius.h>
7 #include <event2/util.h>
10 #define RS_HEADER_LEN 4
15 RS_CRED_TLS_PSK_RSA, /* RFC 4279. */
17 typedef unsigned int rs_cred_type_t;
21 struct rs_credentials {
22 enum rs_cred_type type;
33 typedef void * (*rs_calloc_fp)(size_t nmemb, size_t size);
34 typedef void * (*rs_malloc_fp)(size_t size);
35 typedef void (*rs_free_fp)(void *ptr);
36 typedef void * (*rs_realloc_fp)(void *ptr, size_t size);
37 struct rs_alloc_scheme {
41 rs_realloc_fp realloc;
44 typedef void (*rs_conn_connected_cb)(void *user_data /* FIXME: peer? */);
45 typedef void (*rs_conn_disconnected_cb)(void *user_data /* FIXME: reason? */);
46 typedef void (*rs_conn_packet_received_cb)(const struct rs_packet *packet,
48 typedef void (*rs_conn_packet_sent_cb)(void *user_data);
50 /** Connection callbacks. */
51 struct rs_conn_callbacks {
52 /** Callback invoked when the connection has been established. */
53 rs_conn_connected_cb connected_cb;
54 /** Callback invoked when the connection has been torn down. */
55 rs_conn_disconnected_cb disconnected_cb;
56 /** Callback invoked when a packet was received. */
57 rs_conn_packet_received_cb received_cb;
58 /** Callback invoked when a packet was successfully sent. */
59 rs_conn_packet_sent_cb sent_cb;
63 struct rs_alloc_scheme alloc_scheme;
65 fr_randctx fr_randctx;
67 /* TODO: dictionary? */
71 struct rs_connection *conn;
72 struct evutil_addrinfo *addr;
75 int timeout; /* client only */
76 int tries; /* client only */
80 struct rs_connection {
81 struct rs_handle *ctx;
82 enum rs_conn_type type;
83 struct rs_credentials transport_credentials;
84 struct rs_conn_callbacks callbacks;
85 struct rs_peer *peers;
86 struct rs_peer *active_peer;
91 struct rs_connection *conn;
96 struct rs_packet *pkt;
100 /* Internal functions. */
101 int rs_conn_open(struct rs_connection *conn);
103 /* Convenience macros. */
104 #define rs_calloc(h, nmemb, size) \
105 (h->alloc_scheme.calloc ? h->alloc_scheme.calloc : calloc)(nmemb, size)
106 #define rs_malloc(h, size) \
107 (h->alloc_scheme.malloc ? h->alloc_scheme.malloc : malloc)(size)
108 #define rs_free(h, ptr) \
109 (h->alloc_scheme.free ? h->alloc_scheme.free : free)(ptr)
110 #define rs_realloc(h, realloc, ptr, size) \
111 (h->alloc_scheme.realloc ? h->alloc_scheme.realloc : realloc)(ptr, size)
113 /* Local Variables: */
114 /* c-file-style: "stroustrup" */