1 /* Copyright 2010, 2011 NORDUnet A/S. All rights reserved.
2 See the file COPYING for licensing information. */
4 #if defined HAVE_CONFIG_H
9 #include <radsec/radsec.h>
10 #include <radsec/radsec-impl.h>
16 peer_pick_peer (struct rs_connection *conn)
20 if (conn->active_peer)
21 conn->active_peer = conn->active_peer->next; /* Next. */
22 if (!conn->active_peer)
23 conn->active_peer = conn->peers; /* From the top. */
25 return conn->active_peer;
29 peer_create (struct rs_context *ctx, struct rs_peer **rootp)
33 p = (struct rs_peer *) rs_malloc (ctx, sizeof(*p));
36 memset (p, 0, sizeof(struct rs_peer));
39 p->next = (*rootp)->next;
48 /* Public functions. */
50 rs_peer_create (struct rs_connection *conn, struct rs_peer **peer_out)
54 peer = peer_create (conn->ctx, &conn->peers);
58 peer->realm->timeout = 2; /* FIXME: Why? */
59 peer->realm->retries = 2; /* FIXME: Why? */
62 return rs_err_conn_push_fl (conn, RSE_NOMEM, __FILE__, __LINE__, NULL);
69 rs_peer_set_address (struct rs_peer *peer, const char *hostname,
74 assert (peer->conn->ctx);
76 peer->hostname = rs_strdup (peer->conn->ctx, hostname);
77 peer->service = rs_strdup (peer->conn->ctx, service);
78 if (peer->hostname == NULL || peer->service == NULL)
85 rs_peer_set_timeout (struct rs_peer *peer, int timeout)
89 peer->realm->timeout = timeout;
92 rs_peer_set_retries (struct rs_peer *peer, int retries)
96 peer->realm->retries = retries;
100 rs_peer_set_secret (struct rs_peer *peer, const char *secret)
104 peer->secret = (char *) malloc (strlen(secret) + 1);
106 return rs_err_conn_push (peer->conn, RSE_NOMEM, NULL);
107 strcpy (peer->secret, secret);