Update documentation and configure.ac for libradsec-0.0.4.
[libradsec.git] / lib / HACKING
index b9ccd6b..57369d2 100644 (file)
@@ -1,27 +1,43 @@
 HACKING file for libradsec (in Emacs -*- org -*- mode).
 
-Status as of libradsec-0.0.2.dev (2011-03-24).
+Status as of libradsec-0.0.4 (2013-12-18).
 
 * Build instructions
-cd libradsec/lib
 sh autogen.sh
-./configure #--enable-tls
+./configure
 make
 
 examples/client -r examples/client.conf blocking-tls; echo $?
 
 * Design of the API
-- There are three usage modes
-  - Application use the send and receive calls (blocking mode)
-  - Application registers callbacks and runs the libevent dispatch
-    loop (a.k.a. user dispatch mode)
+- There are three usage modes:
+
+  - Application uses blocking send and receive calls (blocking
+    mode). This is typically fine for a simple client.
+
+  - Application registers callbacks with libradsec and runs the
+    libevent dispatch loop (a.k.a. user dispatch mode). This would
+    probably how to implement a server or a proxy.
+
   - Application runs its own event loop, using fd's for select and
-    performs I/O using the libradsec send/receive calls
-    (a.k.a. on-your-own mode)
-- Fully reentrant
-- User chooses allocation regime
+    performs I/O using libradsec send/receive functions
+    (a.k.a. on-your-own mode). Might be useful for an application
+    which already has an event loop that wants to add RadSec
+    functionality.
+
+- Apart from configuration and error handling, an application
+  shouldn't need to handle TCP and UDP connections
+  differently. Similarly, the use of TLS/DTLS or not shouldn't
+  influence the libradsec calls made by the application.
+
+- Configuration is done either by using the API or by pointing at a
+  configuration file which is parsed by libradsec.
+
+- Fully reentrant.
+
+- Application chooses allocation regime.
 
-Note that as of 0.0.2.dev libradsec suffers from way too much focus on
+Note that as of 0.0.4 libradsec suffers from way too much focus on
 the behaviour of a blocking client and is totally useless as a server.
 Not only does it lack most of the functions needed for writing a
 server but it also contains at least one architectural mishap which
@@ -40,7 +56,7 @@ Details (within parentheses) apply to Debian Wheezy.
 - OpenSSL (1.0.1c-4) -- optional, for TLS and DTLS support
   sudo apt-get install libssl-dev libssl1.0.0
   
-* Functionality and quality
+* Functionality and quality in 0.0.x
 ** Not well tested
 - reading config file
 - [TCP] short read
@@ -54,9 +70,12 @@ Details (within parentheses) apply to Debian Wheezy.
 - custom allocation scheme is not used in all places
 
 ** Not implemented
-- [client] server failover
+- dispatch mode (planned for 0.1)
+- [client] server failover / RFC3539 watchdog (planned for 0.1)
+- [server] support (planned for 0.2)
+- [client] TCP keepalive
+- on-your-own mode
 - [DTLS] support
-- [server] support
 
 * Found a bug?
 Please report it. That is how we improve the quality of the code.