diff options
author | Andrew Bartlett <abartlet@samba.org> | 2011-06-01 23:22:24 +1000 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2011-06-06 17:37:51 +1000 |
commit | 1dfc6fa558e7735341a7095aa46e5568a4f56cfe (patch) | |
tree | 80c2474135ebb6eedb8287b2a469e3dd5754a68c /source3 | |
parent | 521687be0d4bcd6326417696fabdce6506824b99 (diff) | |
download | samba-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.h | 5 | ||||
-rw-r--r-- | source3/param/loadparm.c | 23 | ||||
-rw-r--r-- | source3/param/loadparm_ctx.c | 43 | ||||
-rwxr-xr-x | source3/wscript_build | 10 |
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 ################################# |