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>
9 #define RS_HEADER_LEN 4
14 RS_CRED_TLS_PSK_RSA, /* RFC 4279. */
16 typedef unsigned int rs_cred_type_t;
18 struct rs_credentials {
19 enum rs_cred_type type;
30 typedef void * (*rs_calloc_fp)(size_t nmemb, size_t size);
31 typedef void * (*rs_malloc_fp)(size_t size);
32 typedef void (*rs_free_fp)(void *ptr);
33 typedef void * (*rs_realloc_fp)(void *ptr, size_t size);
34 struct rs_alloc_scheme {
38 rs_realloc_fp realloc;
41 typedef void (*rs_conn_connected_cb)(void *user_data /* FIXME: peer? */);
42 typedef void (*rs_conn_disconnected_cb)(void *user_data /* FIXME: reason? */);
43 typedef void (*rs_conn_packet_received_cb)(const struct rs_packet *packet,
45 typedef void (*rs_conn_packet_sent_cb)(void *user_data);
47 /** Connection callbacks. */
48 struct rs_conn_callbacks {
49 /** Callback invoked when the connection has been established. */
50 rs_conn_connected_cb connected_cb;
51 /** Callback invoked when the connection has been torn down. */
52 rs_conn_disconnected_cb disconnected_cb;
53 /** Callback invoked when a packet was received. */
54 rs_conn_packet_received_cb received_cb;
55 /** Callback invoked when a packet was successfully sent. */
56 rs_conn_packet_sent_cb sent_cb;
60 struct rs_alloc_scheme alloc_scheme;
62 fr_randctx fr_randctx;
64 /* TODO: dictionary? */
70 int timeout; /* client only */
71 int tries; /* client only */
74 struct rs_connection {
75 struct rs_handle *ctx;
76 enum rs_conn_type conn_type;
77 struct rs_credentials transport_credentials;
78 struct rs_conn_callbacks callbacks;
84 struct rs_connection *conn;
89 struct rs_packet *pkt;
94 /* Convenience macros. */
95 #define rs_calloc(ctx, nmemb, size) \
96 (ctx->alloc_scheme.calloc ? ctx->alloc_scheme.calloc : calloc)(nmemb, size)
97 #define rs_malloc(ctx, size) \
98 (ctx->alloc_scheme.malloc ? ctx->alloc_scheme.malloc : malloc)(size)
99 #define rs_free(ctx, ptr) \
100 (ctx->alloc_scheme.free ? ctx->alloc_scheme.free : free)(ptr)
101 #define rs_(ctx, realloc, ptr, size) \
102 (ctx->alloc_scheme.realloc ? ctx->alloc_scheme.realloc : realloc)(ptr, size)
104 /* Local Variables: */
105 /* c-file-style: "stroustrup" */