started on dtls support
authorvenaas <venaas>
Tue, 12 Aug 2008 15:11:36 +0000 (15:11 +0000)
committervenaas <venaas@e88ac4ed-0b26-0410-9574-a7f39faa03bf>
Tue, 12 Aug 2008 15:11:36 +0000 (15:11 +0000)
git-svn-id: https://svn.testnett.uninett.no/radsecproxy/trunk@333 e88ac4ed-0b26-0410-9574-a7f39faa03bf

radsecproxy.c
radsecproxy.h

index 9136c18..d0e65ea 100644 (file)
@@ -140,6 +140,20 @@ static const struct protodefs protodefs[] = {
        tcpclientrd, /* clientreader */
        clientradputtcp /* clientradput */
     },
+    {   "dtls", /* DTLS, assuming RAD_DTLS defined as 3 */
+       NULL, /* secretdefault */
+       SOCK_DGRAM, /* socktype */
+       "1812", /* portdefault */
+       REQUEST_RETRY_COUNT, /* retrycountdefault */
+       10, /* retrycountmax */
+       REQUEST_RETRY_INTERVAL, /* retryintervaldefault */
+       60, /* retryintervalmax */
+       udpserverrd, /* listener */
+       &options.sourceudp, /* srcaddrport */
+       NULL, /* connecter */
+       udpclientrd, /* clientreader */
+       clientradputudp /* clientradput */
+    },
     {   NULL
     }
 };
@@ -615,6 +629,7 @@ void freeserver(struct server *server, uint8_t destroymutex) {
 
 int addserver(struct clsrvconf *conf) {
     struct clsrvconf *res;
+    uint8_t type;
     
     if (conf->servers) {
        debug(DBG_ERR, "addserver: currently works with just one server per conf");
@@ -628,14 +643,18 @@ int addserver(struct clsrvconf *conf) {
     memset(conf->servers, 0, sizeof(struct server));
     conf->servers->conf = conf;
 
-    if (!srcprotores[conf->type]) {
-       res = resolve_hostport(conf->type, *conf->pdef->srcaddrport, NULL);
-       srcprotores[conf->type] = res->addrinfo;
+    type = conf->type;
+    if (type == RAD_DTLS)
+       type = RAD_UDP;
+    
+    if (!srcprotores[type]) {
+       res = resolve_hostport(type, *conf->pdef->srcaddrport, NULL);
+       srcprotores[type] = res->addrinfo;
        res->addrinfo = NULL;
        freeclsrvres(res);
     }
 
-    if (conf->type == RAD_UDP) {
+    if (type == RAD_UDP) {
        switch (conf->addrinfo->ai_family) {
        case AF_INET:
            if (udp_client4_sock < 0) {
index cd1d778..c64a1ad 100644 (file)
@@ -29,6 +29,7 @@
 #define RAD_UDP 0
 #define RAD_TLS 1
 #define RAD_TCP 2
+#define RAD_DTLS 3
 
 #define RAD_Attr_User_Name 1
 #define RAD_Attr_User_Password 2