1 /** @file libradsec-impl.h
2 @brief Libraray internal header file for libradsec. */
4 /* See the file COPYING for licensing information. */
7 #define RS_HEADER_LEN 4
11 RS_CONN_TYPE_NONE = 0,
17 typedef unsigned int rs_conn_type_t;
21 RS_CRED_TLS_PSK_RSA, /* RFC 4279. */
23 typedef unsigned int rs_cred_type_t;
25 struct rs_credentials {
26 enum rs_cred_type type;
31 typedef void * (*rs_calloc_fp)(size_t nmemb, size_t size);
32 typedef void * (*rs_malloc_fp)(size_t size);
33 typedef void (*rs_free_fp)(void *ptr);
34 typedef void * (*rs_realloc_fp)(void *ptr, size_t size);
35 struct rs_alloc_scheme {
39 rs_realloc_fp realloc;
42 typedef void (*rs_conn_connected_cb)(void *user_data /* FIXME: peer? */);
43 typedef void (*rs_conn_disconnected_cb)(void *user_data /* FIXME: reason? */);
44 typedef void (*rs_conn_packet_received_cb)(const struct rs_packet *packet,
46 typedef void (*rs_conn_packet_sent_cb)(void *user_data);
48 /** Connection callbacks. */
49 struct rs_conn_callbacks {
50 /** Callback invoked when the connection has been established. */
51 rs_conn_connected_cb connected_cb;
52 /** Callback invoked when the connection has been torn down. */
53 rs_conn_disconnected_cb disconnected_cb;
54 /** Callback invoked when a packet was received. */
55 rs_conn_packet_received_cb received_cb;
56 /** Callback invoked when a packet was successfully sent. */
57 rs_conn_packet_sent_cb sent_cb;
61 struct rs_alloc_scheme alloc_scheme;
62 /* TODO: dictionary? */
65 struct rs_connection {
66 struct rs_handle *ctx;
67 enum rs_conn_type conn_type;
68 struct rs_credentials transport_credentials;
69 struct rs_conn_callbacks callbacks;
85 /* Convenience macros. */
86 #define rs_calloc(ctx, nmemb, size) \
87 (ctx->alloc_scheme.calloc ? ctx->alloc_scheme.calloc : calloc)(nmemb, size)
88 #define rs_malloc(ctx, size) \
89 (ctx->alloc_scheme.malloc ? ctx->alloc_scheme.malloc : malloc)(size)
90 #define rs_free(ctx, ptr) \
91 (ctx->alloc_scheme.free ? ctx->alloc_scheme.free : free)(ptr)
92 #define rs_(ctx, realloc, ptr, size) \
93 (ctx->alloc_scheme.realloc ? ctx->alloc_scheme.realloc : realloc)(ptr, size)
95 /* Local Variables: */
96 /* c-file-style: "stroustrup" */