lib/param: bring lp_smb_ports() into common by making it a list everywhere
authorAndrew Bartlett <abartlet@samba.org>
Wed, 18 Jul 2012 01:51:00 +0000 (11:51 +1000)
committerAndrew Bartlett <abartlet@samba.org>
Thu, 19 Jul 2012 06:02:32 +0000 (08:02 +0200)
lib/param/loadparm.c
lib/param/param_functions.c
source3/include/proto.h
source3/param/loadparm.c
source3/smbd/server.c

index d5f370e80f89a8a5e072c1e32cd946dc598d7fc2..33aef249db790bad3507204649f710fdfcca6933 100644 (file)
@@ -1526,7 +1526,6 @@ static struct loadparm_context *global_loadparm_context;
 FN_GLOBAL_BOOL(readraw, bReadRaw)
 FN_GLOBAL_BOOL(unicode, bUnicode)
 FN_GLOBAL_BOOL(writeraw, bWriteRaw)
-FN_GLOBAL_LIST(smb_ports, smb_ports)
 FN_GLOBAL_STRING(cachedir, szCacheDir)
 FN_GLOBAL_STRING(socket_address, szSocketAddress)
 FN_GLOBAL_STRING(statedir, szStateDir)
index c2bd63105aad9ed3ae1de057fe0514abd3843650..eb701902dc7c068c92679bfa2e25ed56702f9106 100644 (file)
@@ -356,6 +356,7 @@ FN_GLOBAL_LIST(preload_modules, szPreloadModules)
 FN_GLOBAL_LIST(rndc_command, szRNDCCommand)
 FN_GLOBAL_LIST(samba_kcc_command, szSambaKCCCommand)
 FN_GLOBAL_LIST(server_services, server_services)
+FN_GLOBAL_LIST(smb_ports, smb_ports)
 FN_GLOBAL_LIST(spn_update_command, szSPNUpdateCommand)
 FN_GLOBAL_LIST(svcctl_list, szServicesList)
 FN_GLOBAL_LIST(usershare_prefix_allow_list, szUsersharePrefixAllowList)
index 769a300403c5ddc62ea4de170367f25d16b32b47..4d99a607e35bb08b80cae176ccc98d7091e3ef95 100644 (file)
@@ -1002,7 +1002,7 @@ NTSTATUS change_trust_account_password( const char *domain, const char *remote_m
 
 /* The following definitions come from param/loadparm.c  */
 
-const char *lp_smb_ports(void);
+const char **lp_smb_ports(void);
 const char *lp_dos_charset(void);
 const char *lp_unix_charset(void);
 char *lp_logfile(TALLOC_CTX *ctx);
index 4c21d5032f93f97b3282a423366679bafe9c598c..00edc3f3d7d209648892f2dfbe971065b89df758 100644 (file)
@@ -1533,7 +1533,7 @@ static struct parm_struct parm_table[] = {
        },
        {
                .label          = "smb ports",
-               .type           = P_STRING,
+               .type           = P_LIST,
                .p_class        = P_GLOBAL,
                .offset         = GLOBAL_VAR(smb_ports),
                .special        = NULL,
@@ -4925,7 +4925,7 @@ static void init_globals(bool reinit_globals)
        Globals.server_signing = SMB_SIGNING_DEFAULT;
 
        Globals.bDeferSharingViolations = true;
-       string_set(&Globals.smb_ports, SMB_PORTS);
+       Globals.smb_ports = (const char **)str_list_make_v3(NULL, SMB_PORTS, NULL);
 
        Globals.bEnablePrivileges = true;
        Globals.bHostMSDfs        = true;
@@ -5109,7 +5109,6 @@ int lp_cups_encrypt(void)
 
 /* These functions remain in source3/param for now */
 
-FN_GLOBAL_CONST_STRING(smb_ports, smb_ports)
 FN_GLOBAL_INTEGER(security, security)
 FN_GLOBAL_INTEGER(usershare_max_shares, iUsershareMaxShares)
 FN_GLOBAL_STRING(configfile, szConfigFile)
index 28374fa985307e75b1de220f55c9c54e06dd249f..f7f1d8c7156d676317cdd3f40dbd5e134a1d557d 100644 (file)
@@ -733,8 +733,8 @@ static bool open_sockets_smbd(struct smbd_parent_context *parent,
                              const char *smb_ports)
 {
        int num_interfaces = iface_count();
-       int i;
-       const char *ports;
+       int i,j;
+       const char **ports;
        unsigned dns_port = 0;
 
 #ifdef HAVE_ATEXIT
@@ -744,16 +744,11 @@ static bool open_sockets_smbd(struct smbd_parent_context *parent,
        /* Stop zombies */
        smbd_setup_sig_chld_handler(parent);
 
+       ports = lp_smb_ports();
+
        /* use a reasonable default set of ports - listing on 445 and 139 */
-       if (!smb_ports) {
-               ports = lp_smb_ports();
-               if (!ports || !*ports) {
-                       ports = talloc_strdup(talloc_tos(), SMB_PORTS);
-               } else {
-                       ports = talloc_strdup(talloc_tos(), ports);
-               }
-       } else {
-               ports = talloc_strdup(talloc_tos(), smb_ports);
+       if (smb_ports) {
+               ports = (const char **)str_list_make_v3(talloc_tos(), smb_ports, NULL);
        }
 
        if (lp_interfaces() && lp_bind_interfaces_only()) {
@@ -767,9 +762,6 @@ static bool open_sockets_smbd(struct smbd_parent_context *parent,
                for(i = 0; i < num_interfaces; i++) {
                        const struct sockaddr_storage *ifss =
                                        iface_n_sockaddr_storage(i);
-                       char *tok;
-                       const char *ptr;
-
                        if (ifss == NULL) {
                                DEBUG(0,("open_sockets_smbd: "
                                        "interface %d has NULL IP address !\n",
@@ -777,9 +769,8 @@ static bool open_sockets_smbd(struct smbd_parent_context *parent,
                                continue;
                        }
 
-                       for (ptr=ports;
-                            next_token_talloc(talloc_tos(),&ptr, &tok, " \t,");) {
-                               unsigned port = atoi(tok);
+                       for (j = 0; ports && ports[j]; j++) {
+                               unsigned port = atoi(ports[j]);
                                if (port == 0 || port > 0xffff) {
                                        continue;
                                }
@@ -804,8 +795,6 @@ static bool open_sockets_smbd(struct smbd_parent_context *parent,
                /* Just bind to 0.0.0.0 - accept connections
                   from anywhere. */
 
-               char *tok;
-               const char *ptr;
                const char *sock_addr = lp_socket_address();
                char *sock_tok;
                const char *sock_ptr;
@@ -821,10 +810,10 @@ static bool open_sockets_smbd(struct smbd_parent_context *parent,
 
                for (sock_ptr=sock_addr;
                     next_token_talloc(talloc_tos(), &sock_ptr, &sock_tok, " \t,"); ) {
-                       for (ptr=ports; next_token_talloc(talloc_tos(), &ptr, &tok, " \t,"); ) {
+                       for (j = 0; ports && ports[j]; j++) {
                                struct sockaddr_storage ss;
 
-                               unsigned port = atoi(tok);
+                               unsigned port = atoi(ports[j]);
                                if (port == 0 || port > 0xffff) {
                                        continue;
                                }