txtinfo: only listen on IPv6 when running under IPv6
authorPatrick Grimm <patrick@lunatiki.de>
Thu, 10 Jul 2014 16:41:28 +0000 (18:41 +0200)
committerFerry Huberts <ferry.huberts@pelagic.nl>
Thu, 10 Jul 2014 16:56:42 +0000 (18:56 +0200)
When the IPV6_V6ONLY flag is not set then olsrd running on IPv6
will listen on both IPv6 and IPv4 ports. A subsequent process
running on IPv4 can't listen on the same IPv4 port.

Signed-off-by: Patrick Grimm <patrick@lunatiki.de>
lib/txtinfo/src/olsrd_txtinfo.c

index 66937fa..0ca6b11 100644 (file)
@@ -198,6 +198,14 @@ plugin_ipc_init(void)
       return 0;
     }
 #endif /* (defined __FreeBSD__ || defined __FreeBSD_kernel__) && defined SO_NOSIGPIPE */
+#if defined linux
+    if (olsr_cnf->ip_version == AF_INET6) {
+      if (setsockopt(ipc_socket, IPPROTO_IPV6, IPV6_V6ONLY, (char *)&yes, sizeof(yes)) < 0) {
+        perror("IPV6_V6ONLY failed");
+        return 0;
+      }
+    }
+#endif /* defined linux */
     /* Bind the socket */
 
     /* complete the socket structure */