]> ruderich.org/simon Gitweb - tlsproxy/tlsproxy.git/commitdiff
Add ./configure --disable-ipv6 to use IPv4 only.
authorSimon Ruderich <simon@ruderich.org>
Tue, 15 Mar 2011 16:01:29 +0000 (17:01 +0100)
committerSimon Ruderich <simon@ruderich.org>
Tue, 15 Mar 2011 16:01:29 +0000 (17:01 +0100)
For networks stacks which don't support any IPv6.

configure.ac
src/tlsproxy.c

index 4a3786a9b70297e6a0cad0e2b87c3bacf7f3ea50..1717a3af2241045e332a72516667fe36e396ca13 100644 (file)
@@ -24,6 +24,13 @@ AC_ARG_ENABLE([debug],
                    AC_DEFINE([DEBUG], 1, [Define to enable debug output.])
                fi])
 
+AC_ARG_ENABLE([ipv6],
+              [AC_HELP_STRING([--disable-ipv6],
+                              [disable IPv6, for IPv4 only network stacks])],
+              [if test "x$enableval" = xno; then
+                   AC_DEFINE([USE_IPV4_ONLY], 1, [Define to not use IPv6.])
+               fi])
+
 AC_CONFIG_HEADERS([config.h])
 AC_CONFIG_FILES([Makefile src/Makefile tests/Makefile])
 AC_OUTPUT
index 5fed55427ae95468c88bed20b615472ba2bf8625..a54a6e9c5161e6a67f3c68950daac3da7894596c 100644 (file)
@@ -89,7 +89,11 @@ static void worker_thread(void);
 int main(int argc, char **argv) {
     int port;
     int client_socket, server_socket;
+#ifdef USE_IPV4_ONLY
+    struct sockaddr_in server_in;
+#else
     struct sockaddr_in6 server_in;
+#endif
 
     size_t i;
     pthread_t *threads;
@@ -154,7 +158,11 @@ int main(int argc, char **argv) {
         threads[i] = thread;
     }
 
+#ifdef USE_IPV4_ONLY
+    server_socket = socket(PF_INET, SOCK_STREAM, 0);
+#else
     server_socket = socket(PF_INET6, SOCK_STREAM, 0);
+#endif
     if (-1 == server_socket) {
         perror("socket()");
         return EXIT_FAILURE;
@@ -171,9 +179,15 @@ int main(int argc, char **argv) {
 
     /* Bind to the listen socket. */
     memset(&server_in, 0, sizeof(server_in));
+#ifdef USE_IPV4_ONLY
+    server_in.sin_family      = AF_INET;               /* IPv4 only */
+    server_in.sin_addr.s_addr = INADDR_ANY;            /* bind to any address */
+    server_in.sin_port        = htons((uint16_t)port); /* port to bind to */
+#else
     server_in.sin6_family = AF_INET6;              /* IPv6 (and IPv4) */
     server_in.sin6_addr   = in6addr_any;           /* bind to any address */
     server_in.sin6_port   = htons((uint16_t)port); /* port to bind to */
+#endif
     if (-1 == bind(server_socket, (struct sockaddr *)&server_in,
                                   sizeof(server_in))) {
         perror("bind()");