[SCM] Samba Shared Repository - branch v3-2-test updated -
initial-v3-2-unstable-863-g0e7f215
Michael Adam
obnox at samba.org
Sun Dec 23 03:11:13 GMT 2007
The branch, v3-2-test has been updated
via 0e7f215f54c68b2d40f65f90ed11c41e1a7ef5ed (commit)
via fa844866493ee270f31faa3eca77cdff16b26301 (commit)
via b9f22adfd3e67046b7d786b5b338e078b4cdc6df (commit)
via 60f49b22b5aa125ff6cb358a258a1be99c378d7a (commit)
via 7cb51a1d6d95704225d9ab22e88cc76fa910d38c (commit)
via 81b9f1301d61f05f9153be61d62c13e82cecf7e2 (commit)
via 415fc0a5261f4d941027e5d5305fcea882724aef (commit)
via 0cff79e3552e91ba0b6bc054802d28afcf4e8da4 (commit)
via ba71c6844588f0342589163f514385911e7331e7 (commit)
via 8cf8ed9de8c3f41588fa93bd102f61f5b8b493c4 (commit)
from 120048d2f40cf1a0ace2ecde205cbc694d263d69 (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test
- Log -----------------------------------------------------------------
commit 0e7f215f54c68b2d40f65f90ed11c41e1a7ef5ed
Author: Michael Adam <obnox at samba.org>
Date: Sun Dec 23 04:10:15 2007 +0100
Rename libnet_reg_createkey_internal() to libnet_smbconf_reg_createkey_internal().
Michael
commit fa844866493ee270f31faa3eca77cdff16b26301
Author: Michael Adam <obnox at samba.org>
Date: Sun Dec 23 03:52:00 2007 +0100
Make libnet_smbconf_set_global_param() call libnet_smbconf_setparm().
This not only removes duplicate logic, but also the use of
libnet_smbconf_reg_setvalue_internal() instead of do_modify_val_config()
which is removed, does add important tests and canonicalizations.
Michael
commit b9f22adfd3e67046b7d786b5b338e078b4cdc6df
Author: Michael Adam <obnox at samba.org>
Date: Sun Dec 23 03:47:16 2007 +0100
Reorder libnet_conf.c some, adding "section" comments.
Michael
commit 60f49b22b5aa125ff6cb358a258a1be99c378d7a
Author: Michael Adam <obnox at samba.org>
Date: Sun Dec 23 03:41:55 2007 +0100
Move net_conf_setparm() to libnet_conf.c
renaming it to libnet_smbconf_setparm()
Michael
commit 7cb51a1d6d95704225d9ab22e88cc76fa910d38c
Author: Michael Adam <obnox at samba.org>
Date: Sun Dec 23 03:34:36 2007 +0100
Move reg_setvalue_internal() to libnet_conf.c
renaming it to libnet_smbconf_setvalue_internal()
Michael
commit 81b9f1301d61f05f9153be61d62c13e82cecf7e2
Author: Michael Adam <obnox at samba.org>
Date: Sun Dec 23 03:13:30 2007 +0100
Remove occurrences of registry_key from libnet_join.c
Replace duplicated logic by calls of libnet_smbconf_set_global_param()
from libnet_conf.c, pushing logic from do_JoinConfig() and do_UnjoinConfig()
to do_join_modify_vals_config() and do_unjoin_modify_vals_config()
respectively.
Only the net_conf api functions should be exported by libnet_conf.c, not
the lower level registry access functions.
Michael
commit 415fc0a5261f4d941027e5d5305fcea882724aef
Author: Michael Adam <obnox at samba.org>
Date: Sun Dec 23 03:02:19 2007 +0100
Replace direct deletion of registry value by use of libnet_smbconf_delparm().
Michael
commit 0cff79e3552e91ba0b6bc054802d28afcf4e8da4
Author: Michael Adam <obnox at samba.org>
Date: Sun Dec 23 02:55:25 2007 +0100
Move logic of net_smbconf_delparm() to libnet/libnet_conf.c
Logic in new function libnet_smbconf_delparm().
Michael
commit ba71c6844588f0342589163f514385911e7331e7
Author: Michael Adam <obnox at samba.org>
Date: Sun Dec 23 02:44:29 2007 +0100
Move smbconf_value_exists() to libnet/net_conf.c
renaming it to libnet_smbconf_value_exists().
Michael
commit 8cf8ed9de8c3f41588fa93bd102f61f5b8b493c4
Author: Michael Adam <obnox at samba.org>
Date: Sun Dec 23 01:43:13 2007 +0100
Make libnet_smbconf_open_path_q() static.
Michael
-----------------------------------------------------------------------
Summary of changes:
source/libnet/libnet_conf.c | 176 +++++++++++++++++++++++++++++++++++-------
source/libnet/libnet_join.c | 84 +++++----------------
source/utils/net_conf.c | 136 ++++-----------------------------
3 files changed, 181 insertions(+), 215 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source/libnet/libnet_conf.c b/source/libnet/libnet_conf.c
index 8bc5161..69a105f 100644
--- a/source/libnet/libnet_conf.c
+++ b/source/libnet/libnet_conf.c
@@ -20,13 +20,21 @@
#include "includes.h"
+/**********************************************************************
+ *
+ * Helper functions (mostly registry related)
+ * TODO: These should be eventually static.
+
+ **********************************************************************/
+
/*
* Open a subkey of KEY_SMBCONF (i.e a service)
* - variant without error output (q = quiet)-
*/
-WERROR libnet_smbconf_open_path_q(TALLOC_CTX *ctx, const char *subkeyname,
- uint32 desired_access,
- struct registry_key **key)
+static WERROR libnet_smbconf_open_path_q(TALLOC_CTX *ctx,
+ const char *subkeyname,
+ uint32 desired_access,
+ struct registry_key **key)
{
WERROR werr = WERR_OK;
char *path = NULL;
@@ -76,6 +84,23 @@ done:
return ret;
}
+static bool libnet_smbconf_value_exists(TALLOC_CTX *ctx,
+ struct registry_key *key,
+ const char *param)
+{
+ bool ret = False;
+ WERROR werr = WERR_OK;
+ struct registry_value *value = NULL;
+
+ werr = reg_queryvalue(ctx, key, param, &value);
+ if (W_ERROR_IS_OK(werr)) {
+ ret = True;
+ }
+
+ TALLOC_FREE(value);
+ return ret;
+}
+
/*
* Open a subkey of KEY_SMBCONF (i.e a service)
* - variant with error output -
@@ -109,9 +134,9 @@ WERROR libnet_smbconf_open_basepath(TALLOC_CTX *ctx, uint32 desired_access,
/*
* create a subkey of KEY_SMBCONF
*/
-WERROR libnet_reg_createkey_internal(TALLOC_CTX *ctx,
- const char * subkeyname,
- struct registry_key **newkey)
+WERROR libnet_smbconf_reg_createkey_internal(TALLOC_CTX *ctx,
+ const char * subkeyname,
+ struct registry_key **newkey)
{
WERROR werr = WERR_OK;
struct registry_key *create_parent = NULL;
@@ -147,49 +172,140 @@ done:
return werr;
}
-static WERROR do_modify_val_config(struct registry_key *key,
- const char *val_name,
- const char *val_data)
+/*
+ * add a value to a key.
+ */
+WERROR libnet_smbconf_reg_setvalue_internal(struct registry_key *key,
+ const char *valname,
+ const char *valstr)
{
struct registry_value val;
+ WERROR werr = WERR_OK;
+ char *subkeyname;
+ const char *canon_valname;
+ const char *canon_valstr;
+
+ if (!lp_canonicalize_parameter_with_value(valname, valstr,
+ &canon_valname,
+ &canon_valstr))
+ {
+ if (canon_valname == NULL) {
+ d_fprintf(stderr, "invalid parameter '%s' given\n",
+ valname);
+ } else {
+ d_fprintf(stderr, "invalid value '%s' given for "
+ "parameter '%s'\n", valstr, valname);
+ }
+ werr = WERR_INVALID_PARAM;
+ goto done;
+ }
ZERO_STRUCT(val);
val.type = REG_SZ;
- val.v.sz.str = CONST_DISCARD(char *, val_data);
- val.v.sz.len = strlen(val_data) + 1;
+ val.v.sz.str = CONST_DISCARD(char *, canon_valstr);
+ val.v.sz.len = strlen(canon_valstr) + 1;
+
+ if (registry_smbconf_valname_forbidden(canon_valname)) {
+ d_fprintf(stderr, "Parameter '%s' not allowed in registry.\n",
+ canon_valname);
+ werr = WERR_INVALID_PARAM;
+ goto done;
+ }
+
+ subkeyname = strrchr_m(key->key->name, '\\');
+ if ((subkeyname == NULL) || (*(subkeyname +1) == '\0')) {
+ d_fprintf(stderr, "Invalid registry key '%s' given as "
+ "smbconf section.\n", key->key->name);
+ werr = WERR_INVALID_PARAM;
+ goto done;
+ }
+ subkeyname++;
+ if (!strequal(subkeyname, GLOBAL_NAME) &&
+ lp_parameter_is_global(valname))
+ {
+ d_fprintf(stderr, "Global paramter '%s' not allowed in "
+ "service definition ('%s').\n", canon_valname,
+ subkeyname);
+ werr = WERR_INVALID_PARAM;
+ goto done;
+ }
+
+ werr = reg_setvalue(key, canon_valname, &val);
+ if (!W_ERROR_IS_OK(werr)) {
+ d_fprintf(stderr,
+ "Error adding value '%s' to "
+ "key '%s': %s\n",
+ canon_valname, key->key->name, dos_errstr(werr));
+ }
- return reg_setvalue(key, val_name, &val);
+done:
+ return werr;
}
-WERROR libnet_smbconf_set_global_param(TALLOC_CTX *mem_ctx,
- const char *param,
- const char *val)
+/**********************************************************************
+ *
+ * The actual net conf api functions, that are exported.
+ *
+ **********************************************************************/
+
+WERROR libnet_smbconf_setparm(TALLOC_CTX *mem_ctx,
+ const char *service,
+ const char *param,
+ const char *valstr)
{
WERROR werr;
struct registry_key *key = NULL;
- if (!lp_include_registry_globals()) {
- return WERR_NOT_SUPPORTED;
+ if (!libnet_smbconf_key_exists(mem_ctx, service)) {
+ werr = libnet_smbconf_reg_createkey_internal(mem_ctx, service,
+ &key);
+ } else {
+ werr = libnet_smbconf_open_path(mem_ctx, service, REG_KEY_WRITE,
+ &key);
}
+ W_ERROR_NOT_OK_RETURN(werr);
- if (!registry_init_regdb()) {
- return WERR_REG_IO_FAILURE;
- }
+ werr = libnet_smbconf_reg_setvalue_internal(key, param, valstr);
- if (!libnet_smbconf_key_exists(mem_ctx, GLOBAL_NAME)) {
- werr = libnet_reg_createkey_internal(mem_ctx,
- GLOBAL_NAME, &key);
- } else {
- werr = libnet_smbconf_open_path(mem_ctx,
- GLOBAL_NAME,
- REG_KEY_WRITE, &key);
+ return werr;
+}
+
+WERROR libnet_smbconf_delparm(TALLOC_CTX *mem_ctx,
+ const char *service,
+ const char *param)
+{
+ struct registry_key *key = NULL;
+ WERROR werr = WERR_OK;
+
+ if (!libnet_smbconf_key_exists(mem_ctx, service)) {
+ return WERR_NO_SUCH_SERVICE;
}
- if (!W_ERROR_IS_OK(werr)) {
- return werr;
+ werr = libnet_smbconf_open_path(mem_ctx, service, REG_KEY_READ, &key);
+ W_ERROR_NOT_OK_RETURN(werr);
+
+ if (!libnet_smbconf_value_exists(mem_ctx, key, param)) {
+ return WERR_INVALID_PARAM;
}
- return do_modify_val_config(key, param, val);
+ werr = reg_deletevalue(key, param);
+ W_ERROR_NOT_OK_RETURN(werr);
+
+ return WERR_OK;
+}
+
+
+/**********************************************************************
+ *
+ * Convenience functions, that are also exportet.
+ *
+ **********************************************************************/
+
+WERROR libnet_smbconf_set_global_param(TALLOC_CTX *mem_ctx,
+ const char *param,
+ const char *val)
+{
+ return libnet_smbconf_setparm(mem_ctx, GLOBAL_NAME, param, val);
}
diff --git a/source/libnet/libnet_join.c b/source/libnet/libnet_join.c
index 2994c3f..68244e5 100644
--- a/source/libnet/libnet_join.c
+++ b/source/libnet/libnet_join.c
@@ -331,35 +331,20 @@ done:
return status;
}
-static WERROR do_modify_val_config(struct registry_key *key,
- const char *val_name,
- const char *val_data)
-{
- struct registry_value val;
-
- ZERO_STRUCT(val);
-
- val.type = REG_SZ;
- val.v.sz.str = CONST_DISCARD(char *, val_data);
- val.v.sz.len = strlen(val_data) + 1;
-
- return reg_setvalue(key, val_name, &val);
-}
-
static WERROR do_join_modify_vals_config(TALLOC_CTX *mem_ctx,
- struct libnet_JoinCtx *r,
- struct registry_key *key)
+ struct libnet_JoinCtx *r)
{
WERROR werr;
bool is_ad = false;
if (!(r->in.join_flags & WKSSVC_JOIN_FLAGS_JOIN_TYPE)) {
- werr = do_modify_val_config(key, "security", "user");
+ werr = libnet_smbconf_set_global_param(mem_ctx, "security",
+ "user");
W_ERROR_NOT_OK_RETURN(werr);
- werr = do_modify_val_config(key, "workgroup",
- r->in.domain_name);
+ werr = libnet_smbconf_set_global_param(mem_ctx, "workgroup",
+ r->in.domain_name);
return werr;
}
@@ -367,19 +352,20 @@ static WERROR do_join_modify_vals_config(TALLOC_CTX *mem_ctx,
is_ad = true;
}
- werr = do_modify_val_config(key, "security", "domain");
+ werr = libnet_smbconf_set_global_param(mem_ctx, "security", "domain");
W_ERROR_NOT_OK_RETURN(werr);
- werr = do_modify_val_config(key, "workgroup",
- r->out.netbios_domain_name);
+ werr = libnet_smbconf_set_global_param(mem_ctx, "workgroup",
+ r->out.netbios_domain_name);
W_ERROR_NOT_OK_RETURN(werr);
if (is_ad) {
- werr = do_modify_val_config(key, "security", "ads");
+ werr = libnet_smbconf_set_global_param(mem_ctx, "security",
+ "ads");
W_ERROR_NOT_OK_RETURN(werr);
- werr = do_modify_val_config(key, "realm",
- r->out.dns_domain_name);
+ werr = libnet_smbconf_set_global_param(mem_ctx, "realm",
+ r->out.dns_domain_name);
W_ERROR_NOT_OK_RETURN(werr);
}
@@ -387,18 +373,18 @@ static WERROR do_join_modify_vals_config(TALLOC_CTX *mem_ctx,
}
static WERROR do_unjoin_modify_vals_config(TALLOC_CTX *mem_ctx,
- struct libnet_UnjoinCtx *r,
- struct registry_key *key)
+ struct libnet_UnjoinCtx *r)
{
WERROR werr = WERR_OK;
if (r->in.unjoin_flags & WKSSVC_JOIN_FLAGS_JOIN_TYPE) {
- werr = do_modify_val_config(key, "security", "user");
+ werr = libnet_smbconf_set_global_param(mem_ctx, "security",
+ "user");
W_ERROR_NOT_OK_RETURN(werr);
}
- reg_deletevalue(key, "realm");
+ werr = libnet_smbconf_delparm(mem_ctx, "GLOBAL", "realm");
return werr;
}
@@ -408,7 +394,6 @@ static WERROR do_JoinConfig(TALLOC_CTX *mem_ctx,
struct libnet_JoinCtx *r)
{
WERROR werr;
- struct registry_key *key = NULL;
if (!W_ERROR_IS_OK(r->out.result)) {
return r->out.result;
@@ -418,23 +403,7 @@ static WERROR do_JoinConfig(TALLOC_CTX *mem_ctx,
return WERR_OK;
}
- if (!registry_init_regdb()) {
- return WERR_REG_IO_FAILURE;
- }
-
- if (!libnet_smbconf_key_exists(mem_ctx, GLOBAL_NAME)) {
- werr = libnet_reg_createkey_internal(mem_ctx,
- GLOBAL_NAME, &key);
- } else {
- werr = libnet_smbconf_open_path(mem_ctx,
- GLOBAL_NAME,
- REG_KEY_WRITE, &key);
- }
- if (!W_ERROR_IS_OK(werr)) {
- return werr;
- }
-
- werr = do_join_modify_vals_config(mem_ctx, r, key);
+ werr = do_join_modify_vals_config(mem_ctx, r);
if (!W_ERROR_IS_OK(werr)) {
return werr;
}
@@ -449,7 +418,6 @@ static WERROR do_UnjoinConfig(TALLOC_CTX *mem_ctx,
struct libnet_UnjoinCtx *r)
{
WERROR werr;
- struct registry_key *key = NULL;
if (!W_ERROR_IS_OK(r->out.result)) {
return r->out.result;
@@ -459,23 +427,7 @@ static WERROR do_UnjoinConfig(TALLOC_CTX *mem_ctx,
return WERR_OK;
}
- if (!registry_init_regdb()) {
- return WERR_REG_IO_FAILURE;
- }
-
- if (!libnet_smbconf_key_exists(mem_ctx, GLOBAL_NAME)) {
- werr = libnet_reg_createkey_internal(mem_ctx,
- GLOBAL_NAME, &key);
- } else {
- werr = libnet_smbconf_open_path(mem_ctx,
- GLOBAL_NAME,
- REG_KEY_WRITE, &key);
- }
- if (!W_ERROR_IS_OK(werr)) {
- return werr;
- }
-
- werr = do_unjoin_modify_vals_config(mem_ctx, r, key);
+ werr = do_unjoin_modify_vals_config(mem_ctx, r);
if (!W_ERROR_IS_OK(werr)) {
return werr;
}
diff --git a/source/utils/net_conf.c b/source/utils/net_conf.c
index 808ba8d..673d373 100644
--- a/source/utils/net_conf.c
+++ b/source/utils/net_conf.c
@@ -144,77 +144,6 @@ static char *format_value(TALLOC_CTX *mem_ctx, struct registry_value *value)
}
/*
- * add a value to a key.
- */
-static WERROR reg_setvalue_internal(struct registry_key *key,
- const char *valname,
- const char *valstr)
-{
- struct registry_value val;
- WERROR werr = WERR_OK;
- char *subkeyname;
- const char *canon_valname;
- const char *canon_valstr;
-
- if (!lp_canonicalize_parameter_with_value(valname, valstr,
- &canon_valname,
- &canon_valstr))
- {
- if (canon_valname == NULL) {
- d_fprintf(stderr, "invalid parameter '%s' given\n",
- valname);
- } else {
- d_fprintf(stderr, "invalid value '%s' given for "
- "parameter '%s'\n", valstr, valname);
- }
- werr = WERR_INVALID_PARAM;
- goto done;
- }
-
- ZERO_STRUCT(val);
-
- val.type = REG_SZ;
- val.v.sz.str = CONST_DISCARD(char *, canon_valstr);
- val.v.sz.len = strlen(canon_valstr) + 1;
-
- if (registry_smbconf_valname_forbidden(canon_valname)) {
- d_fprintf(stderr, "Parameter '%s' not allowed in registry.\n",
- canon_valname);
- werr = WERR_INVALID_PARAM;
- goto done;
- }
-
- subkeyname = strrchr_m(key->key->name, '\\');
- if ((subkeyname == NULL) || (*(subkeyname +1) == '\0')) {
- d_fprintf(stderr, "Invalid registry key '%s' given as "
- "smbconf section.\n", key->key->name);
- werr = WERR_INVALID_PARAM;
- goto done;
- }
- subkeyname++;
- if (!strequal(subkeyname, GLOBAL_NAME) &&
- lp_parameter_is_global(valname))
- {
- d_fprintf(stderr, "Global paramter '%s' not allowed in "
- "service definition ('%s').\n", canon_valname,
- subkeyname);
- werr = WERR_INVALID_PARAM;
- goto done;
- }
-
- werr = reg_setvalue(key, canon_valname, &val);
- if (!W_ERROR_IS_OK(werr)) {
- d_fprintf(stderr,
- "Error adding value '%s' to "
- "key '%s': %s\n",
- canon_valname, key->key->name, dos_errstr(werr));
- }
-
-done:
- return werr;
-}
-
-/*
* delete a subkey of KEY_SMBCONF
*/
static WERROR reg_delkey_internal(TALLOC_CTX *ctx, const char *keyname)
@@ -238,22 +167,6 @@ done:
return werr;
}
-static bool smbconf_value_exists(TALLOC_CTX *ctx, struct registry_key *key,
- const char *param)
-{
- bool ret = False;
- WERROR werr = WERR_OK;
- struct registry_value *value = NULL;
-
- werr = reg_queryvalue(ctx, key, param, &value);
- if (W_ERROR_IS_OK(werr)) {
- ret = True;
- }
-
- TALLOC_FREE(value);
- return ret;
-}
-
static WERROR list_values(TALLOC_CTX *ctx, struct registry_key *key)
{
WERROR werr = WERR_OK;
@@ -433,7 +346,7 @@ static int import_process_service(TALLOC_CTX *ctx,
goto done;
}
--
Samba Shared Repository
More information about the samba-cvs
mailing list