summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2011-06-01 23:22:24 +1000
committerAndrew Bartlett <abartlet@samba.org>2011-06-06 17:37:51 +1000
commit1dfc6fa558e7735341a7095aa46e5568a4f56cfe (patch)
tree80c2474135ebb6eedb8287b2a469e3dd5754a68c /source3
parent521687be0d4bcd6326417696fabdce6506824b99 (diff)
downloadsamba-1dfc6fa558e7735341a7095aa46e5568a4f56cfe.tar.gz
samba-1dfc6fa558e7735341a7095aa46e5568a4f56cfe.tar.bz2
samba-1dfc6fa558e7735341a7095aa46e5568a4f56cfe.zip
s4-param Add hook between Samba3 and Samba4 loadparm systems.
In the top level build, this allows calls to code that requires a lpcfg_ style loadparm_context, while using the global parameters loaded from the source3 loadparm code. Andrew Bartlett
Diffstat (limited to 'source3')
-rw-r--r--source3/include/proto.h5
-rw-r--r--source3/param/loadparm.c23
-rw-r--r--source3/param/loadparm_ctx.c43
-rwxr-xr-xsource3/wscript_build10
4 files changed, 77 insertions, 4 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h
index c6fd38dd81..f732a53655 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -1210,6 +1210,7 @@ char *lp_passwd_chat(void);
const char *lp_passwordserver(void);
const char *lp_name_resolve_order(void);
const char *lp_realm(void);
+const char *lp_dnsdomain(void);
const char *lp_afs_username_map(void);
int lp_afs_token_lifetime(void);
char *lp_log_nt_token_command(void);
@@ -1662,6 +1663,10 @@ void lp_set_passdb_backend(const char *backend);
void widelinks_warning(int snum);
const char *lp_ncalrpc_dir(void);
+/* The following definitions come from param/loadparm_ctx.c */
+
+const struct loadparm_s3_context *loadparm_s3_context(void);
+
/* The following definitions come from param/loadparm_server_role.c */
int lp_server_role(void);
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index 350c95d9ac..dc79c36f19 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -159,6 +159,8 @@ struct global {
char *szPasswordServer;
char *szSocketOptions;
char *szRealm;
+ char *szRealmUpper;
+ char *szDnsDomain;
char *szAfsUsernameMap;
int iAfsTokenLifetime;
char *szLogNtTokenCommand;
@@ -705,6 +707,7 @@ static bool handle_idmap_uid( int snum, const char *pszParmValue, char **ptr);
static bool handle_idmap_gid( int snum, const char *pszParmValue, char **ptr);
static bool handle_debug_list( int snum, const char *pszParmValue, char **ptr );
static bool handle_workgroup( int snum, const char *pszParmValue, char **ptr );
+static bool handle_realm( int snum, const char *pszParmValue, char **ptr );
static bool handle_netbios_aliases( int snum, const char *pszParmValue, char **ptr );
static bool handle_netbios_scope( int snum, const char *pszParmValue, char **ptr );
static bool handle_charset( int snum, const char *pszParmValue, char **ptr );
@@ -1019,7 +1022,7 @@ static struct parm_struct parm_table[] = {
.type = P_USTRING,
.p_class = P_GLOBAL,
.ptr = &Globals.szRealm,
- .special = NULL,
+ .special = handle_realm,
.enum_list = NULL,
.flags = FLAG_BASIC | FLAG_ADVANCED | FLAG_WIZARD,
},
@@ -5616,7 +5619,8 @@ FN_GLOBAL_STRING(lp_passwd_program, &Globals.szPasswdProgram)
FN_GLOBAL_STRING(lp_passwd_chat, &Globals.szPasswdChat)
FN_GLOBAL_CONST_STRING(lp_passwordserver, &Globals.szPasswordServer)
FN_GLOBAL_CONST_STRING(lp_name_resolve_order, &Globals.szNameResolveOrder)
-FN_GLOBAL_CONST_STRING(lp_realm, &Globals.szRealm)
+FN_GLOBAL_CONST_STRING(lp_realm, &Globals.szRealmUpper)
+FN_GLOBAL_CONST_STRING(lp_dnsdomain, &Globals.szDnsDomain)
FN_GLOBAL_CONST_STRING(lp_afs_username_map, &Globals.szAfsUsernameMap)
FN_GLOBAL_INTEGER(lp_afs_token_lifetime, &Globals.iAfsTokenLifetime)
FN_GLOBAL_STRING(lp_log_nt_token_command, &Globals.szLogNtTokenCommand)
@@ -7593,6 +7597,21 @@ static bool handle_workgroup(int snum, const char *pszParmValue, char **ptr)
return ret;
}
+static bool handle_realm(int snum, const char *pszParmValue, char **ptr)
+{
+ bool ret = true;
+ char *realm = strupper_talloc(talloc_tos(), pszParmValue);
+ char *dnsdomain = strlower_talloc(talloc_tos(), pszParmValue);
+
+ ret &= string_set(&Globals.szRealm, pszParmValue);
+ ret &= string_set(&Globals.szRealmUpper, realm);
+ ret &= string_set(&Globals.szDnsDomain, dnsdomain);
+ TALLOC_FREE(realm);
+ TALLOC_FREE(dnsdomain);
+
+ return ret;
+}
+
static bool handle_netbios_scope(int snum, const char *pszParmValue, char **ptr)
{
bool ret;
diff --git a/source3/param/loadparm_ctx.c b/source3/param/loadparm_ctx.c
new file mode 100644
index 0000000000..3bcf80954a
--- /dev/null
+++ b/source3/param/loadparm_ctx.c
@@ -0,0 +1,43 @@
+#include "includes.h"
+#include "../source4/param/s3_param.h"
+
+/* These are in the order that they appear in the s4 loadparm file.
+ * All of the s4 loadparm functions should be here eventually, once
+ * they are implemented in the s3 loadparm, have the same format (enum
+ * values in particular) and defaults. */
+static const struct loadparm_s3_context s3_fns =
+{
+ .server_role = lp_server_role,
+
+ .winbind_separator = lp_winbind_separator,
+ .template_homedir = lp_template_homedir,
+ .template_shell = lp_template_shell,
+
+ .dos_charset = lp_dos_charset,
+ .unix_charset = lp_unix_charset,
+ .display_charset = lp_display_charset,
+
+ .realm = lp_realm,
+ .dnsdomain = lp_dnsdomain,
+ .socket_options = lp_socket_options,
+ .workgroup = lp_workgroup,
+
+ .netbios_name = global_myname,
+ .netbios_scope = global_scope,
+
+ .lanman_auth = lp_lanman_auth,
+ .ntlm_auth = lp_ntlm_auth,
+
+ .client_plaintext_auth = lp_client_plaintext_auth,
+ .client_lanman_auth = lp_client_lanman_auth,
+ .client_ntlmv2_auth = lp_client_ntlmv2_auth,
+
+ .private_dir = lp_private_dir,
+ .ncalrpc_dir = lp_ncalrpc_dir,
+ .lockdir = lp_lockdir
+};
+
+const struct loadparm_s3_context *loadparm_s3_context(void)
+{
+ return &s3_fns;
+}
diff --git a/source3/wscript_build b/source3/wscript_build
index 4fd7a7b556..b30c204ab3 100755
--- a/source3/wscript_build
+++ b/source3/wscript_build
@@ -737,9 +737,15 @@ bld.SAMBA3_SUBSYSTEM('PARAM_UTIL',
source=PARAM_UTIL_SRC,
deps='samba-util-common')
+if bld.env.toplevel_build:
+ bld.SAMBA3_SUBSYSTEM('LOADPARM_CTX',
+ source='param/loadparm_ctx.c',
+ deps='''s3_param_h PARAM_WITHOUT_REG''',
+ vars=locals())
+
bld.SAMBA3_SUBSYSTEM('PARAM_WITHOUT_REG',
source=PARAM_WITHOUT_REG_SRC,
- deps='''PARAM_UTIL smbd_conn ldap lber''',
+ deps='''PARAM_UTIL smbd_conn ldap lber LOADPARM_CTX''',
vars=locals())
bld.SAMBA3_SUBSYSTEM('param',
@@ -1410,7 +1416,7 @@ if not bld.env.toplevel_build:
bld.SAMBA3_SUBSYSTEM('ldb', source='', deps='ldb3')
bld.SAMBA3_SUBSYSTEM('dcerpc', '', deps='UTIL_TEVENT')
bld.SAMBA3_SUBSYSTEM('cli-ldap', '', deps='UTIL_TEVENT')
-
+ bld.SAMBA3_SUBSYSTEM('LOADPARM_CTX', '')
########################## INCLUDES #################################