40 lines
1.8 KiB
Text
40 lines
1.8 KiB
Text
|
Example application using RADIUS client as a library
|
||
|
Copyright (c) 2007, Jouni Malinen <j@w1.fi>
|
||
|
|
||
|
This program is free software; you can redistribute it and/or modify
|
||
|
it under the terms of the GNU General Public License version 2 as
|
||
|
published by the Free Software Foundation.
|
||
|
|
||
|
Alternatively, this software may be distributed under the terms of BSD
|
||
|
license.
|
||
|
|
||
|
|
||
|
This directory contains an example showing how the RADIUS client
|
||
|
functionality from hostapd can be used as a library in another
|
||
|
program. The example program initializes the RADIUS client and send a
|
||
|
Access-Request using User-Name and User-Password attributes. A reply
|
||
|
from the RADIUS authentication server will be processed and it is used
|
||
|
as a trigger to terminate the example program.
|
||
|
|
||
|
The RADIUS library links in couple of helper functions from src/utils and
|
||
|
src/crypto directories. Most of these are suitable as-is, but it may
|
||
|
be desirable to replace the debug output code in src/utils/wpa_debug.c
|
||
|
by dropping this file from the library and re-implementing the
|
||
|
functions there in a way that better fits in with the main
|
||
|
application.
|
||
|
|
||
|
RADIUS client implementation takes care of receiving messages,
|
||
|
timeouts, and retransmissions of packets. Consequently, it requires
|
||
|
functionality for registering timeouts and received packet
|
||
|
notifications. This is implemented using the generic event loop
|
||
|
implementation (see src/utils/eloop.h).
|
||
|
|
||
|
The main application may either use the included event loop
|
||
|
implementation or alternatively, implement eloop_* wrapper functions
|
||
|
to use whatever event loop design is used in the main program. This
|
||
|
would involve removing src/utils/eloop.o from the library and
|
||
|
implementing following functions defines in src/utils/eloop.h:
|
||
|
eloop_register_timeout(), eloop_cancel_timeout(),
|
||
|
eloop_register_read_sock(), eloop_unregister_read_sock(), and
|
||
|
eloop_terminated().
|