summaryrefslogtreecommitdiff
path: root/source3/utils/net.c
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2003-04-21 14:09:03 +0000
committerAndrew Bartlett <abartlet@samba.org>2003-04-21 14:09:03 +0000
commitf071020f5e49837154581c97c5af5f84d0e2de89 (patch)
tree14c4f4c08cc935145926000a886f8dd718c66e93 /source3/utils/net.c
parent06c99d15e217e265d51778268d5b859dff3c478c (diff)
downloadsamba-f071020f5e49837154581c97c5af5f84d0e2de89.tar.gz
samba-f071020f5e49837154581c97c5af5f84d0e2de89.tar.bz2
samba-f071020f5e49837154581c97c5af5f84d0e2de89.zip
Merge from HEAD - save the type of channel used to contact the DC.
This allows us to join as a BDC, without appearing on the network as one until we have the database replicated, and the admin changes the configuration. This also change the SID retreval order from secrets.tdb, so we no longer require a 'net rpc getsid' - the sid fetch during the domain join is sufficient. Also minor fixes to 'net'. Andrew Bartlett (This used to be commit 876e00fd112e4aaf7519eec27f382eb99ec7562a)
Diffstat (limited to 'source3/utils/net.c')
-rw-r--r--source3/utils/net.c32
1 files changed, 27 insertions, 5 deletions
diff --git a/source3/utils/net.c b/source3/utils/net.c
index 67d3176b4d..b404bac595 100644
--- a/source3/utils/net.c
+++ b/source3/utils/net.c
@@ -68,7 +68,7 @@ int opt_force = 0;
int opt_port = 0;
int opt_maxusers = -1;
const char *opt_comment = "";
-char *opt_container = "cn=Users";
+const char *opt_container = "cn=Users";
int opt_flags = -1;
int opt_timeout = 0;
const char *opt_target_workgroup = NULL;
@@ -77,6 +77,27 @@ static int opt_machine_pass = 0;
BOOL opt_have_ip = False;
struct in_addr opt_dest_ip;
+uint32 get_sec_channel_type(const char *param)
+{
+ if (!(param && *param)) {
+ return get_default_sec_channel();
+ } else {
+ if (strcasecmp(param, "PDC")==0) {
+ return SEC_CHAN_BDC;
+ } else if (strcasecmp(param, "BDC")==0) {
+ return SEC_CHAN_BDC;
+ } else if (strcasecmp(param, "MEMBER")==0) {
+ return SEC_CHAN_WKSTA;
+#if 0
+ } else if (strcasecmp(param, "DOMAIN")==0) {
+ return SEC_CHAN_DOMAIN;
+#endif
+ } else {
+ return get_default_sec_channel();
+ }
+ }
+}
+
/*
run a function from a function table. If not found then
call the specified usage function
@@ -623,11 +644,11 @@ static struct functable net_func[] = {
}
if (!opt_workgroup) {
- opt_workgroup = lp_workgroup();
+ opt_workgroup = smb_xstrdup(lp_workgroup());
}
if (!opt_target_workgroup) {
- opt_target_workgroup = strdup(lp_workgroup());
+ opt_target_workgroup = smb_xstrdup(lp_workgroup());
}
if (!init_names())
@@ -636,7 +657,7 @@ static struct functable net_func[] = {
load_interfaces();
if (opt_machine_pass) {
- char *user;
+ char *user = NULL;
/* it is very useful to be able to make ads queries as the
machine account for testing purposes and for domain leave */
@@ -645,9 +666,10 @@ static struct functable net_func[] = {
exit(1);
}
+ opt_password = secrets_fetch_machine_password(opt_workgroup, NULL, NULL);
+
asprintf(&user,"%s$", global_myname());
opt_user_name = user;
- opt_password = secrets_fetch_machine_password();
if (!opt_password) {
d_printf("ERROR: Unable to fetch machine password\n");
exit(1);