1 /* Copyright 2010-2012 NORDUnet A/S. All rights reserved.
2 See LICENSE for licensing information. */
4 #if defined HAVE_CONFIG_H
12 #include <radsec/radsec.h>
13 #include <radsec/radsec-impl.h>
19 peer_pick_peer (struct rs_connection *conn)
23 if (conn->active_peer)
24 conn->active_peer = conn->active_peer->next; /* Next. */
25 if (!conn->active_peer)
26 conn->active_peer = conn->peers; /* From the top. */
28 return conn->active_peer;
32 peer_create (struct rs_context *ctx, struct rs_peer **rootp)
36 p = (struct rs_peer *) rs_malloc (ctx, sizeof(*p));
39 memset (p, 0, sizeof(struct rs_peer));
42 p->next = (*rootp)->next;
51 /* Public functions. */
53 rs_peer_create (struct rs_connection *conn, struct rs_peer **peer_out)
57 peer = peer_create (conn->ctx, &conn->peers);
61 peer->realm->timeout = 2; /* FIXME: Why? */
62 peer->realm->retries = 2; /* FIXME: Why? */
65 return rs_err_conn_push_fl (conn, RSE_NOMEM, __FILE__, __LINE__, NULL);
72 rs_peer_set_address (struct rs_peer *peer, const char *hostname,
77 assert (peer->conn->ctx);
79 peer->hostname = rs_strdup (peer->conn->ctx, hostname);
80 peer->service = rs_strdup (peer->conn->ctx, service);
81 if (peer->hostname == NULL || peer->service == NULL)
88 rs_peer_set_timeout (struct rs_peer *peer, int timeout)
92 peer->realm->timeout = timeout;
95 rs_peer_set_retries (struct rs_peer *peer, int retries)
99 peer->realm->retries = retries;
103 rs_peer_set_secret (struct rs_peer *peer, const char *secret)
107 peer->secret = (char *) malloc (strlen(secret) + 1);
109 return rs_err_conn_push (peer->conn, RSE_NOMEM, NULL);
110 strcpy (peer->secret, secret);