1 /* Copyright 2010, 2011 NORDUnet A/S. All rights reserved.
2 See the file COPYING for licensing information. */
4 #if defined HAVE_CONFIG_H
12 #include <radsec/radsec.h>
13 #include <radsec/radsec-impl.h>
18 peer_pick_peer (struct rs_connection *conn)
22 if (conn->active_peer)
23 conn->active_peer = conn->active_peer->next; /* Next. */
24 if (!conn->active_peer)
25 conn->active_peer = conn->peers; /* From the top. */
27 return conn->active_peer;
31 peer_create (struct rs_context *ctx, struct rs_peer **rootp)
35 p = (struct rs_peer *) rs_malloc (ctx, sizeof(*p));
38 memset (p, 0, sizeof(struct rs_peer));
41 p->next = (*rootp)->next;
50 /* Public functions. */
52 rs_peer_create (struct rs_connection *conn, struct rs_peer **peer_out)
56 peer = peer_create (conn->ctx, &conn->peers);
60 peer->realm->timeout = 2; /* FIXME: Why? */
61 peer->realm->retries = 2; /* FIXME: Why? */
64 return rs_err_conn_push_fl (conn, RSE_NOMEM, __FILE__, __LINE__, NULL);
71 rs_peer_set_address (struct rs_peer *peer, const char *hostname,
79 err = rs_resolv (&peer->addr, peer->realm->type, hostname, service);
81 return err_conn_push_err (peer->conn, err);
86 rs_peer_set_timeout (struct rs_peer *peer, int timeout)
90 peer->realm->timeout = timeout;
93 rs_peer_set_retries (struct rs_peer *peer, int retries)
97 peer->realm->retries = retries;
101 rs_peer_set_secret (struct rs_peer *peer, const char *secret)
105 peer->secret = (char *) malloc (strlen(secret) + 1);
107 return rs_err_conn_push (peer->conn, RSE_NOMEM, NULL);
108 strcpy (peer->secret, secret);