moved bindtoaddr back to radsecproxy.c
authorvenaas <venaas>
Thu, 21 Aug 2008 12:18:01 +0000 (12:18 +0000)
committervenaas <venaas@e88ac4ed-0b26-0410-9574-a7f39faa03bf>
Thu, 21 Aug 2008 12:18:01 +0000 (12:18 +0000)
git-svn-id: https://svn.testnett.uninett.no/radsecproxy/trunk@355 e88ac4ed-0b26-0410-9574-a7f39faa03bf

radsecproxy.c
radsecproxy.h
util.c
util.h

index 853b594..c97e7ed 100644 (file)
@@ -383,6 +383,32 @@ void freeclsrvres(struct clsrvconf *res) {
     free(res);
 }
 
+int bindtoaddr(struct addrinfo *addrinfo, int family, int reuse, int v6only) {
+    int s, on = 1;
+    struct addrinfo *res;
+
+    for (res = addrinfo; res; res = res->ai_next) {
+       if (family != AF_UNSPEC && family != res->ai_family)
+           continue;
+       s = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
+       if (s < 0) {
+           debug(DBG_WARN, "bindtoaddr: socket failed");
+           continue;
+       }
+       if (reuse)
+           setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
+#ifdef IPV6_V6ONLY
+       if (v6only)
+           setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY, &on, sizeof(on));
+#endif
+       if (!bind(s, res->ai_addr, res->ai_addrlen))
+           return s;
+       debug(DBG_WARN, "bindtoaddr: bind failed");
+       close(s);
+    }
+    return -1;
+}
+       
 int connecttcp(struct addrinfo *addrinfo, struct addrinfo *src) {
     int s;
     struct addrinfo *res;
index ee85c79..2546470 100644 (file)
@@ -213,3 +213,4 @@ X509 *verifytlscert(SSL *ssl);
 int verifyconfcert(X509 *cert, struct clsrvconf *conf);
 int replyh(struct server *server, unsigned char *buf);
 int connecttcp(struct addrinfo *addrinfo, struct addrinfo *src);
+int bindtoaddr(struct addrinfo *addrinfo, int family, int reuse, int v6only);
diff --git a/util.c b/util.c
index f30f0fb..d551cf0 100644 (file)
--- a/util.c
+++ b/util.c
@@ -98,33 +98,6 @@ char *addr2string(struct sockaddr *addr, socklen_t len) {
     return addr_buf[i];
 }
 
-int bindtoaddr(struct addrinfo *addrinfo, int family, int reuse, int v6only) {
-    int s, on = 1;
-    struct addrinfo *res;
-
-    for (res = addrinfo; res; res = res->ai_next) {
-       if (family != AF_UNSPEC && family != res->ai_family)
-           continue;
-       s = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
-       if (s < 0) {
-           debug(DBG_WARN, "bindtoaddr: socket failed");
-           continue;
-       }
-       if (reuse)
-           setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
-       #ifdef IPV6_V6ONLY
-       if (v6only)
-           setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY, &on, sizeof(on));
-#endif
-
-       if (!bind(s, res->ai_addr, res->ai_addrlen))
-           return s;
-       debug(DBG_WARN, "bindtoaddr: bind failed");
-       close(s);
-    }
-    return -1;
-}
-
 int connectport(int type, char *host, char *port) {
     struct addrinfo hints, *res0, *res;
     int s = -1;
diff --git a/util.h b/util.h
index ca0b425..c151b90 100644 (file)
--- a/util.h
+++ b/util.h
@@ -5,4 +5,3 @@ char *stringcopy(const char *s, int len);
 char *addr2string(struct sockaddr *addr, socklen_t len);
 void printfchars(char *prefixfmt, char *prefix, char *charfmt, char *chars, int len);
 int connectport(int type, char *host, char *port);
-int bindtoaddr(struct addrinfo *addrinfo, int family, int reuse, int v6only);