4fbb54f1c4bc48970ae6a3e6d9de90eb4db7c8a4
[radsecproxy.git] / lib / peer.c
1 /* See the file COPYING for licensing information.  */
2 #if defined HAVE_CONFIG_H
3 #include <config.h>
4 #endif
5
6 #include <assert.h>
7 #include <radsec/radsec.h>
8 #include <radsec/radsec-impl.h>
9
10 int
11 rs_peer_create (struct rs_connection *conn, struct rs_peer **peer_out)
12 {
13   struct rs_peer *peer;
14
15   peer = _rs_peer_create (conn->ctx, &conn->peers);
16   if (peer)
17     {
18       peer->conn = conn;
19       peer->realm->timeout = 2;
20       peer->realm->retries = 2;
21     }
22   else
23     return rs_err_conn_push_fl (conn, RSE_NOMEM, __FILE__, __LINE__, NULL);
24   if (*peer_out)
25     *peer_out = peer;
26   return RSE_OK;
27 }
28
29 int
30 rs_peer_set_address (struct rs_peer *peer, const char *hostname,
31                        const char *service)
32 {
33   struct rs_error *err;
34
35   assert (peer);
36   assert (peer->realm);
37
38   err = _rs_resolv (&peer->addr, peer->realm->type, hostname, service);
39   if (err)
40     return _rs_err_conn_push_err (peer->conn, err);
41   return RSE_OK;
42 }
43
44 void
45 rs_peer_set_timeout (struct rs_peer *peer, int timeout)
46 {
47   assert (peer);
48   assert (peer->realm);
49   peer->realm->timeout = timeout;
50 }
51 void
52 rs_peer_set_retries (struct rs_peer *peer, int retries)
53 {
54   assert (peer);
55   assert (peer->realm);
56   peer->realm->retries = retries;
57 }
58
59 int
60 rs_peer_set_secret (struct rs_peer *peer, const char *secret)
61 {
62   if (peer->secret)
63     free (peer->secret);
64   peer->secret = (char *) malloc (strlen(secret) + 1);
65   if (!peer->secret)
66     return rs_err_conn_push (peer->conn, RSE_NOMEM, NULL);
67   strcpy (peer->secret, secret);
68   return RSE_OK;
69 }
70