[SCM] Samba Shared Repository - branch v3-3-test updated -
release-3-2-0pre2-2484-g452a9ea
Günther Deschner
gd at samba.org
Fri May 16 10:17:52 GMT 2008
The branch, v3-3-test has been updated
via 452a9ea4af19d3aebc35929edaf4e5adf8c1fd11 (commit)
via ae60695a349bccd1128e6c439664b0607627ef23 (commit)
via ff8a9655ccd40bc2ca3ef0403308193d956c4adf (commit)
via a01ed719c31998620927dc9b1664ba8e36bd9b21 (commit)
from 151d62da1321322615daadabb41d049974f5fe6a (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-3-test
- Log -----------------------------------------------------------------
commit 452a9ea4af19d3aebc35929edaf4e5adf8c1fd11
Author: Günther Deschner <gd at samba.org>
Date: Fri May 16 12:16:04 2008 +0200
libnetjoin: for informational reasons, report forest_name.
Guenther
commit ae60695a349bccd1128e6c439664b0607627ef23
Author: Günther Deschner <gd at samba.org>
Date: Fri May 16 12:11:43 2008 +0200
netdomjoin-gui: before prompting for creds (for receiving joinable ous), find a dc.
Guenther
commit ff8a9655ccd40bc2ca3ef0403308193d956c4adf
Author: Günther Deschner <gd at samba.org>
Date: Fri May 16 11:52:48 2008 +0200
net: use the netapi_ctx from the net_context struct.
Guenther
commit a01ed719c31998620927dc9b1664ba8e36bd9b21
Author: Günther Deschner <gd at samba.org>
Date: Thu May 15 17:47:07 2008 +0200
dsgetdcname: store client sitename for mailslot and cldap replies.
Guenther
-----------------------------------------------------------------------
Summary of changes:
.../examples/netdomjoin-gui/netdomjoin-gui.c | 32 +++++++++++++++++++-
source/libnet/libnet_join.c | 1 +
source/librpc/gen_ndr/libnet_join.h | 2 +
source/librpc/gen_ndr/ndr_libnet_join.c | 2 +
source/librpc/idl/libnet_join.idl | 2 +
source/libsmb/dsgetdcname.c | 6 ++++
source/utils/net_dom.c | 32 +++++++------------
7 files changed, 56 insertions(+), 21 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source/lib/netapi/examples/netdomjoin-gui/netdomjoin-gui.c b/source/lib/netapi/examples/netdomjoin-gui/netdomjoin-gui.c
index a11b0eb..df81937 100644
--- a/source/lib/netapi/examples/netdomjoin-gui/netdomjoin-gui.c
+++ b/source/lib/netapi/examples/netdomjoin-gui/netdomjoin-gui.c
@@ -932,6 +932,9 @@ static void callback_do_getous(GtkWidget *widget,
const char **ous = NULL;
int i;
const char *domain = NULL;
+ struct DOMAIN_CONTROLLER_INFO *dc_info = NULL;
+ const char *err_str = NULL;
+ GtkWidget *dialog;
struct join_state *state = (struct join_state *)data;
@@ -939,6 +942,34 @@ static void callback_do_getous(GtkWidget *widget,
domain = state->name_buffer_new ? state->name_buffer_new : state->name_buffer_initial;
+ status = DsGetDcName(NULL,
+ domain,
+ NULL,
+ NULL,
+ 0,
+ &dc_info);
+ if (status != 0) {
+ err_str = libnetapi_get_error_string(state->ctx, status);
+ g_print("callback_do_getous: failed find dc (%s)\n", err_str);
+
+ dialog = gtk_message_dialog_new(GTK_WINDOW(state->window_parent),
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_CLOSE,
+ "Failed to find a domain controller for domain: \"%s\": %s",
+ domain,
+ err_str);
+
+ gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
+ g_signal_connect_swapped(dialog, "response",
+ G_CALLBACK(gtk_widget_destroy),
+ dialog);
+
+ gtk_widget_show(dialog);
+
+ return;
+ }
+
if (!state->account || !state->password) {
debug("callback_do_getous: no creds yet\n");
callback_creds_prompt(NULL, state,
@@ -956,7 +987,6 @@ static void callback_do_getous(GtkWidget *widget,
state->password,
&num_ous, &ous);
if (status != NET_API_STATUS_SUCCESS) {
- GtkWidget *dialog;
callback_do_freeauth(NULL, state);
debug("failed to call NetGetJoinableOUs: %s\n",
libnetapi_get_error_string(state->ctx, status));
diff --git a/source/libnet/libnet_join.c b/source/libnet/libnet_join.c
index 4cfdd50..6426dc3 100644
--- a/source/libnet/libnet_join.c
+++ b/source/libnet/libnet_join.c
@@ -689,6 +689,7 @@ static NTSTATUS libnet_join_lookup_dc_rpc(TALLOC_CTX *mem_ctx,
r->out.domain_is_ad = true;
r->out.netbios_domain_name = info->dns.name.string;
r->out.dns_domain_name = info->dns.dns_domain.string;
+ r->out.forest_name = info->dns.dns_forest.string;
r->out.domain_sid = info->dns.sid;
}
diff --git a/source/librpc/gen_ndr/libnet_join.h b/source/librpc/gen_ndr/libnet_join.h
index e5ec438..f4c44e4 100644
--- a/source/librpc/gen_ndr/libnet_join.h
+++ b/source/librpc/gen_ndr/libnet_join.h
@@ -35,6 +35,7 @@ struct libnet_JoinCtx {
const char * account_name;
const char * netbios_domain_name;
const char * dns_domain_name;
+ const char * forest_name;
const char * dn;
struct dom_sid *domain_sid;/* [ref] */
uint8_t modified_config;
@@ -66,6 +67,7 @@ struct libnet_UnjoinCtx {
struct {
const char * netbios_domain_name;
const char * dns_domain_name;
+ const char * forest_name;
uint8_t modified_config;
const char * error_string;
uint8_t disabled_machine_account;
diff --git a/source/librpc/gen_ndr/ndr_libnet_join.c b/source/librpc/gen_ndr/ndr_libnet_join.c
index 753859f..a9241f6 100644
--- a/source/librpc/gen_ndr/ndr_libnet_join.c
+++ b/source/librpc/gen_ndr/ndr_libnet_join.c
@@ -50,6 +50,7 @@ _PUBLIC_ void ndr_print_libnet_JoinCtx(struct ndr_print *ndr, const char *name,
ndr_print_string(ndr, "account_name", r->out.account_name);
ndr_print_string(ndr, "netbios_domain_name", r->out.netbios_domain_name);
ndr_print_string(ndr, "dns_domain_name", r->out.dns_domain_name);
+ ndr_print_string(ndr, "forest_name", r->out.forest_name);
ndr_print_string(ndr, "dn", r->out.dn);
ndr_print_ptr(ndr, "domain_sid", r->out.domain_sid);
ndr->depth++;
@@ -104,6 +105,7 @@ _PUBLIC_ void ndr_print_libnet_UnjoinCtx(struct ndr_print *ndr, const char *name
ndr->depth++;
ndr_print_string(ndr, "netbios_domain_name", r->out.netbios_domain_name);
ndr_print_string(ndr, "dns_domain_name", r->out.dns_domain_name);
+ ndr_print_string(ndr, "forest_name", r->out.forest_name);
ndr_print_uint8(ndr, "modified_config", r->out.modified_config);
ndr_print_string(ndr, "error_string", r->out.error_string);
ndr_print_uint8(ndr, "disabled_machine_account", r->out.disabled_machine_account);
diff --git a/source/librpc/idl/libnet_join.idl b/source/librpc/idl/libnet_join.idl
index 7f6e346..5af6b05 100644
--- a/source/librpc/idl/libnet_join.idl
+++ b/source/librpc/idl/libnet_join.idl
@@ -35,6 +35,7 @@ interface libnetjoin
[out] string account_name,
[out] string netbios_domain_name,
[out] string dns_domain_name,
+ [out] string forest_name,
[out] string dn,
[out] dom_sid *domain_sid,
[out] boolean8 modified_config,
@@ -58,6 +59,7 @@ interface libnetjoin
[in,noprint] messaging_context *msg_ctx,
[out] string netbios_domain_name,
[out] string dns_domain_name,
+ [out] string forest_name,
[out] boolean8 modified_config,
[out] string error_string,
[out] boolean8 disabled_machine_account,
diff --git a/source/libsmb/dsgetdcname.c b/source/libsmb/dsgetdcname.c
index 16148a3..d57689c 100644
--- a/source/libsmb/dsgetdcname.c
+++ b/source/libsmb/dsgetdcname.c
@@ -342,12 +342,18 @@ static NTSTATUS store_cldap_reply(TALLOC_CTX *mem_ctx,
if (!NT_STATUS_IS_OK(status)) {
goto done;
}
+ if (logon29.client_site) {
+ sitename_store(logon29.domain, logon29.client_site);
+ }
}
if (logon29.dns_domain) {
status = dsgetdcname_cache_store(mem_ctx, logon29.dns_domain, &blob);
if (!NT_STATUS_IS_OK(status)) {
goto done;
}
+ if (logon29.client_site) {
+ sitename_store(logon29.dns_domain, logon29.client_site);
+ }
}
done:
diff --git a/source/utils/net_dom.c b/source/utils/net_dom.c
index 86dad65..1a876a7 100644
--- a/source/utils/net_dom.c
+++ b/source/utils/net_dom.c
@@ -42,7 +42,6 @@ int net_help_dom(struct net_context *c, int argc, const char **argv)
static int net_dom_unjoin(struct net_context *c, int argc, const char **argv)
{
- struct libnetapi_ctx *ctx = NULL;
const char *server_name = NULL;
const char *account = NULL;
const char *password = NULL;
@@ -90,18 +89,10 @@ static int net_dom_unjoin(struct net_context *c, int argc, const char **argv)
}
}
- status = libnetapi_init(&ctx);
- if (status != 0) {
- return -1;
- }
-
- libnetapi_set_username(ctx, c->opt_user_name);
- libnetapi_set_password(ctx, c->opt_password);
-
status = NetUnjoinDomain(server_name, account, password, unjoin_flags);
if (status != 0) {
printf("Failed to unjoin domain: %s\n",
- libnetapi_get_error_string(ctx, status));
+ libnetapi_get_error_string(c->netapi_ctx, status));
goto done;
}
@@ -136,7 +127,6 @@ static int net_dom_unjoin(struct net_context *c, int argc, const char **argv)
static int net_dom_join(struct net_context *c, int argc, const char **argv)
{
- struct libnetapi_ctx *ctx = NULL;
const char *server_name = NULL;
const char *domain_name = NULL;
const char *account_ou = NULL;
@@ -204,19 +194,11 @@ static int net_dom_join(struct net_context *c, int argc, const char **argv)
/* check if domain is a domain or a workgroup */
- status = libnetapi_init(&ctx);
- if (status != 0) {
- return -1;
- }
-
- libnetapi_set_username(ctx, c->opt_user_name);
- libnetapi_set_password(ctx, c->opt_password);
-
status = NetJoinDomain(server_name, domain_name, account_ou,
Account, password, join_flags);
if (status != 0) {
printf("Failed to join domain: %s\n",
- libnetapi_get_error_string(ctx, status));
+ libnetapi_get_error_string(c->netapi_ctx, status));
goto done;
}
@@ -251,6 +233,8 @@ static int net_dom_join(struct net_context *c, int argc, const char **argv)
int net_dom(struct net_context *c, int argc, const char **argv)
{
+ NET_API_STATUS status;
+
struct functable func[] = {
{"JOIN", net_dom_join},
{"UNJOIN", net_dom_unjoin},
@@ -258,5 +242,13 @@ int net_dom(struct net_context *c, int argc, const char **argv)
{NULL, NULL}
};
+ status = libnetapi_init(&c->netapi_ctx);
+ if (status != 0) {
+ return -1;
+ }
+
+ libnetapi_set_username(c->netapi_ctx, c->opt_user_name);
+ libnetapi_set_password(c->netapi_ctx, c->opt_password);
+
return net_run_function(c, argc, argv, func, net_dom_usage);
}
--
Samba Shared Repository
More information about the samba-cvs
mailing list