s4-ipv6: added iface_list_wildcard()
authorAndrew Tridgell <tridge@samba.org>
Thu, 12 May 2011 10:23:35 +0000 (12:23 +0200)
committerAndrew Tridgell <tridge@samba.org>
Mon, 6 Jun 2011 02:26:09 +0000 (12:26 +1000)
this returns a list of wildcard address to listen on, when we don't
have 'bind interfaces only' set. It is a list, not a single address,
we need to listen separately for the IPv6 "::" address from the IPv4
0.0.0.0 address.

This also takes account of the loadparm "socket address" option

source4/lib/socket/interface.c
source4/lib/socket/wscript_build

index b762f5573a11db293b7e4fa532d3069ba2431684..83d8e4c1292aac4c3aa909a2d0f6d4e78e51c5d1 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "includes.h"
 #include "system/network.h"
+#include "param/param.h"
 #include "lib/socket/netif.h"
 #include "../lib/util/util_net.h"
 #include "../lib/util/dlinklist.h"
@@ -428,3 +429,30 @@ bool iface_list_same_net(const char *ip1, const char *ip2, const char *netmask)
                        interpret_addr2(ip2),
                        interpret_addr2(netmask));
 }
+
+/**
+   return the list of wildcard interfaces
+   this will include the IPv4 0.0.0.0, and may include IPv6 ::
+   it is overridden by the 'socket address' option in smb.conf
+*/
+const char **iface_list_wildcard(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx)
+{
+       const char **ret;
+       const char *socket_address;
+
+       /* the user may have configured a specific address */
+       socket_address = lpcfg_socket_address(lp_ctx);
+       if (strcmp(socket_address, "") != 0) {
+               ret = (const char **)str_list_make(mem_ctx, socket_address, NULL);
+               return ret;
+       }
+
+       ret = (const char **)str_list_make(mem_ctx, "0.0.0.0", NULL);
+       if (ret == NULL) return NULL;
+
+#ifdef HAVE_IPV6
+       return str_list_add(ret, "::");
+#endif
+
+       return ret;
+}
index fa497335fb85be4ca615e23637e22d45c811583b..c10970d17aa36cd73d904d86bfb01201ad1a2322 100644 (file)
@@ -2,7 +2,7 @@
 
 bld.SAMBA_LIBRARY('netif',
                   source='interface.c',
-                  deps='samba-util interfaces',
+                  deps='samba-util interfaces samba-hostconfig',
                   private_library=True,
                   autoproto='netif_proto.h'
                   )