]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
Add commandline option to switch on IPv6 support
authorBtbN <btbn@btbn.de>
Tue, 15 Jan 2013 11:32:54 +0000 (12:32 +0100)
committerBtbN <btbn@btbn.de>
Tue, 15 Jan 2013 15:33:21 +0000 (16:33 +0100)
src/main.c
src/tcp.c
src/tcp.h

index c6e0254d9ac41accf55e00a72257b3dc6c2ddde0..4026121319b85aed0ad179318bdbcb105fa091a8 100644 (file)
@@ -359,7 +359,8 @@ main(int argc, char **argv)
               opt_debug        = 0,
               opt_syslog       = 0,
               opt_uidebug      = 0,
-              opt_abort        = 0;
+              opt_abort        = 0,
+              opt_ipv6         = 0;
   const char *opt_config       = NULL,
              *opt_user         = NULL,
              *opt_group        = NULL,
@@ -391,8 +392,8 @@ main(int argc, char **argv)
     { 'a', "adapters",  "Use only specified DVB adapters",
       OPT_STR, &opt_dvb_adapters },
 #endif
-
     {   0, NULL,         "Server Connectivity",    OPT_BOOL, NULL         },
+    { '6', "ipv6",       "Listen on IPv6",         OPT_BOOL, &opt_ipv6    },
     {   0, "http_port",  "Specify alternative http port",
       OPT_INT, &tvheadend_webui_port },
     {   0, "http_root",  "Specify alternative http webroot",
@@ -606,7 +607,7 @@ main(int argc, char **argv)
   timeshift_init();
 #endif
 
-  tcp_server_init();
+  tcp_server_init(opt_ipv6);
   http_server_init();
   webui_init();
 
index 3653e8b2c6768a0e8ab9ae0ad5fb4abf7b9fb6be..5ccf1bacef45a9ac6e1c7bca55d7767c4543d370 100644 (file)
--- a/src/tcp.c
+++ b/src/tcp.c
@@ -35,6 +35,7 @@
 #include "tcp.h"
 #include "tvheadend.h"
 
+int tcp_preferred_address_family = AF_INET;
 
 /**
  *
@@ -526,7 +527,7 @@ tcp_server_create(int port, tcp_server_callback_t *start, void *opaque)
   ressave = res;
   while(res)
   {
-    if(res->ai_family == AF_INET6)
+    if(res->ai_family == tcp_preferred_address_family)
     {
       use = res;
       break;
@@ -574,10 +575,13 @@ tcp_server_create(int port, tcp_server_callback_t *start, void *opaque)
  *
  */
 void
-tcp_server_init(void)
+tcp_server_init(int opt_ipv6)
 {
   pthread_t tid;
 
+  if(opt_ipv6)
+    tcp_preferred_address_family = AF_INET6;
+
   tcp_server_epoll_fd = epoll_create(10);
   pthread_create(&tid, NULL, tcp_server_loop, NULL);
 }
index 187a9d5765fc41b50193deb890c39d046cd430e8..0c061e435506a08c3fb7ea3ba593aac9e6fc5384 100644 (file)
--- a/src/tcp.h
+++ b/src/tcp.h
@@ -21,7 +21,9 @@
 
 #include "htsbuf.h"
 
-void tcp_server_init(void);
+extern int tcp_preferred_address_family;
+
+void tcp_server_init(int opt_ipv6);
 
 int tcp_connect(const char *hostname, int port, char *errbuf,
                size_t errbufsize, int timeout);