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>
15 peer_pick_peer (struct rs_connection *conn)
19 if (conn->active_peer)
20 conn->active_peer = conn->active_peer->next; /* Next. */
21 if (!conn->active_peer)
22 conn->active_peer = conn->peers; /* From the top. */
24 return conn->active_peer;
28 peer_create (struct rs_context *ctx, struct rs_peer **rootp)
32 p = (struct rs_peer *) rs_malloc (ctx, sizeof(*p));
35 memset (p, 0, sizeof(struct rs_peer));
38 p->next = (*rootp)->next;
47 /* Public functions. */
49 rs_peer_create (struct rs_connection *conn, struct rs_peer **peer_out)
53 peer = peer_create (conn->ctx, &conn->peers);
57 peer->realm->timeout = 2; /* FIXME: Why? */
58 peer->realm->retries = 2; /* FIXME: Why? */
61 return rs_err_conn_push_fl (conn, RSE_NOMEM, __FILE__, __LINE__, NULL);
68 rs_peer_set_address (struct rs_peer *peer, const char *hostname,
76 err = rs_resolv (&peer->addr, peer->realm->type, hostname, service);
78 return err_conn_push_err (peer->conn, err);
83 rs_peer_set_timeout (struct rs_peer *peer, int timeout)
87 peer->realm->timeout = timeout;
90 rs_peer_set_retries (struct rs_peer *peer, int retries)
94 peer->realm->retries = retries;
98 rs_peer_set_secret (struct rs_peer *peer, const char *secret)
102 peer->secret = (char *) malloc (strlen(secret) + 1);
104 return rs_err_conn_push (peer->conn, RSE_NOMEM, NULL);
105 strcpy (peer->secret, secret);