1 /* RADIUS client doing blocking i/o. */
7 #include <event2/event.h>
8 #include "../libradsec.h"
11 #define SECRET "sikrit"
12 #define USER_NAME "bob"
13 #define USER_PW "hemligt"
16 rsx_client (const char *srvname, int srvport)
19 struct rs_connection *conn;
20 struct rs_peer *server;
21 struct rs_packet *req;
23 if (rs_context_create (&h, "/usr/share/freeradius/dictionary"))
26 if (rs_conn_create (h, &conn))
27 return rs_conn_err_pop (conn);
28 if (rs_conn_add_server (conn, &server, RS_CONN_TYPE_UDP, srvname, srvport))
29 return rs_conn_err_pop (conn);
30 rs_server_set_timeout (server, 10);
31 rs_server_set_tries (server, 3);
32 rs_server_set_secret (server, SECRET);
34 if (rs_packet_create_acc_request (conn, &req, USER_NAME, USER_PW))
35 return rs_conn_err_pop (conn);
37 if (rs_packet_send (conn, req, NULL))
38 return rs_conn_err_pop (conn);
42 if (rs_packet_recv (conn, &resp))
43 return rs_conn_err_pop (conn);
45 rs_dump_packet (resp);
49 rs_conn_destroy (conn);
50 rs_context_destroy (h);
55 main (int argc, char *argv[])
61 host = strsep (argv + 1, ":");
62 port = atoi (argv[1]);
63 err = rsx_client (host, port);
66 fprintf (stderr, "%s\n", rs_err_msg (err, 0));
67 return rs_err_code (err, 1);