summaryrefslogtreecommitdiff
path: root/dtls.c
diff options
context:
space:
mode:
authorvenaas <venaas>2008-08-21 09:55:13 +0000
committervenaas <venaas@e88ac4ed-0b26-0410-9574-a7f39faa03bf>2008-08-21 09:55:13 +0000
commit0821c152301b03565125e823f580deef4812d554 (patch)
tree2ac62b398656d0af683d278ae4c494d0128e4950 /dtls.c
parent193b6127860d8bd6ec638fb3d74ceff63698fb8d (diff)
restructuring code
git-svn-id: https://svn.testnett.uninett.no/radsecproxy/trunk@351 e88ac4ed-0b26-0410-9574-a7f39faa03bf
Diffstat (limited to 'dtls.c')
-rw-r--r--dtls.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/dtls.c b/dtls.c
index 5bd7826..9f68133 100644
--- a/dtls.c
+++ b/dtls.c
@@ -32,6 +32,9 @@
#include "radsecproxy.h"
#include "dtls.h"
+static int client4_sock = -1;
+static int client6_sock = -1;
+
int udp2bio(int s, struct queue *q, int cnt) {
unsigned char *buf;
BIO *rbio;
@@ -470,3 +473,42 @@ void *dtlsclientrd(void *arg) {
free(buf);
}
}
+
+void addclientdtls(struct client *client) {
+ client->replyq = newqueue();
+ client->rbios = newqueue();
+}
+
+void addserverextradtls(struct clsrvconf *conf) {
+ switch (conf->addrinfo->ai_family) {
+ case AF_INET:
+ if (client4_sock < 0) {
+ client4_sock = bindtoaddr(getsrcprotores(RAD_DTLS), AF_INET, 0, 1);
+ if (client4_sock < 0)
+ debugx(1, DBG_ERR, "addserver: failed to create client socket for server %s", conf->host);
+ }
+ conf->servers->sock = client4_sock;
+ break;
+ case AF_INET6:
+ if (client6_sock < 0) {
+ client6_sock = bindtoaddr(getsrcprotores(RAD_DTLS), AF_INET6, 0, 1);
+ if (client6_sock < 0)
+ debugx(1, DBG_ERR, "addserver: failed to create client socket for server %s", conf->host);
+ }
+ conf->servers->sock = client6_sock;
+ break;
+ default:
+ debugx(1, DBG_ERR, "addserver: unsupported address family");
+ }
+}
+
+void initextradtls() {
+ pthread_t cl4th, cl6th;
+
+ if (client4_sock >= 0)
+ if (pthread_create(&cl4th, NULL, udpdtlsclientrd, (void *)&client4_sock))
+ debugx(1, DBG_ERR, "pthread_create failed");
+ if (client6_sock >= 0)
+ if (pthread_create(&cl6th, NULL, udpdtlsclientrd, (void *)&client6_sock))
+ debugx(1, DBG_ERR, "pthread_create failed");
+}