diff options
author | Linus Nordberg <linus@nordu.net> | 2010-09-02 00:20:31 +0200 |
---|---|---|
committer | Linus Nordberg <linus@nordu.net> | 2010-09-02 00:20:31 +0200 |
commit | 48b620f3122749897f286fb4552230767a8baa29 (patch) | |
tree | c638f56bb37c6b68e6133e7ddbcfafae63801a1c /lib/libradsec.h | |
parent | 4a7d2fa4f75050545d0834613baab3afb1818a38 (diff) |
Split libradsec.h in -base.h and -libevent.h.
Diffstat (limited to 'lib/libradsec.h')
-rw-r--r-- | lib/libradsec.h | 106 |
1 files changed, 7 insertions, 99 deletions
diff --git a/lib/libradsec.h b/lib/libradsec.h index 5765282..89f9f2f 100644 --- a/lib/libradsec.h +++ b/lib/libradsec.h @@ -1,5 +1,5 @@ -/*! \file libradsec.h - \brief Header file for libradsec. */ +/** @file libradsec.h + @brief Header file for libradsec. */ /* FIXME: License blurb goes here. */ @@ -7,9 +7,13 @@ #include <sys/socket.h> #include "../list.h" - /* Data types. */ +struct rs_config { + /* FIXME: What's in here that's not in struct rs_conn or + * rs_credentials? */; +}; + enum rs_cred_type { RS_CRED_NONE = 0, RS_CRED_TLS_PSK_RSA, /* RFC 4279. */ @@ -48,102 +52,6 @@ struct rs_packet { struct list *attrs; }; - -typedef void (*rs_conn_connected_cb)(void *user_data /* FIXME: peer? */); -typedef void (*rs_conn_disconnected_cb)(void *user_data /* FIXME: reason? */); -typedef void (*rs_conn_packet_received_cb)(const struct rs_packet *packet, - void *user_data); -typedef void (*rs_conn_packet_sent_cb)(void *user_data); - -/*! Connection callbacks. */ -struct rs_conn_callbacks { - /*! Callback invoked when the connection has been established. */ - rs_conn_connected_cb connected_cb; - /*! Callback invoked when the connection has been torn down. */ - rs_conn_disconnected_cb disconnected_cb; - /*! Callback invoked when a packet was received. */ - rs_conn_packet_received_cb received_cb; - /*! Callback invoked when a packet was successfully sent. */ - rs_conn_packet_sent_cb sent_cb; -}; - - -/* Function prototypes. */ - -/* - FIXME: Do we want alloc and free? Or perhaps init and free, - decoupling allocation from initialization? IMO we want _some_ init - function, f.ex. for setting open_flag = 1 when type == UDP. - -struct conn *conn_alloc (enum conn_type type, struct sockaddr_in6 address, ...); -void conn_free (struct conn *conn); -*/ - -/*! Open connection and return 0 on success. - \param conn Connection object, obtained through a call to \a - conn_alloc. - \param cb Callbacks for events on the connection. If NULL, all I/O - will be blocking. - \param user_data A pointer passed to the callbacks when invoked. */ -int rs_conn_open(struct rs_conn *conn, - const struct rs_conn_callbacks *cb, - void *user_data); - -/*! Close connection and return 0 on success. - \param conn Connection object, obtained through a call to \a - conn_alloc. - \param user_data A pointer passed to the callbacks when the \a - disconnected_cb in \a conn is invoked. */ -int rs_conn_close(struct rs_conn *conn, void *user_data); /* FIXME: return type? */ - -/*! Allocate a packet object. Should be freed using \a rs_packet_free. */ -struct rs_packet *rs_packet_alloc(); - -/*! Free a packet object previously allocated with \a rs_packet_alloc. */ -void rs_packet_free(); - -/*! Add an attribute to a packet. - \param packet The packet. - \param attribute Attribute to add to packet. */ -int rs_packet_add_attribute(struct rs_packet *packet, - const struct rs_attribute *attribute); - -/*! Send \a packet on \a conn and return 0 on success. - \param conn Connection object, obtained through a call to \a - conn_alloc and opened with \a rs_conn_open. - \param packet Packet to send. - \param user_data Pointer passed to \a rs_conn_packet_sent_cb, invoked - when packet has been sent. - */ -int rs_packet_send(const struct rs_conn *conn, - const struct rs_packet *packet, - void *user_data); - -/*! Return the next packet received on \a conn, blocking while waiting. - The packet returned must be freed using \a rs_packet_free. */ -struct rs_packet *rs_packet_receive(const struct rs_conn *conn); - - -/* Thinking out loud here... - - We could let the user drive the underlying libevent event loop in - three different ways, from easiest to hairiest: - - i) Blocking i/o model: User passes NULL for the callbacks in - rs_conn_open(). The open, send and receive calls will block until - the desired event occurs. Other events occurring while waiting - will be either silently discarded or signaled as an error - (f.ex. broken connection while sending). - - ii) Simple event loop interface with a timeout: User calls - rs_event_loop(timeout) to process pending i/o. Should be a good - choice for most applications. - - iii) Full libevent interface: TODO. - */ -#error "need an rs_event_loop() and more" - - /* Local Variables: */ /* c-file-style: "stroustrup" */ /* End: */ |