The branch, master has been updated
via d1db751... Revert "s4:web_server: use tsocket_address functions to
get the local ip and port"
via 79a29a8... s4:cldap_server/netlogon.c - handle the domain SID
correctly
via eceffe6... nbt: samlogon/netlogon structures - unify denominations
via 3f1bd92... s4:fill_netlogon_samlogon_response - reorder assign
operations (to be consistent)
via a89ba9e... s4:fill_netlogon_samlogon_response - use "lp_workgroup"
for the short netbios domainname
via 7efb436... s4:torture - DsRAddressToSitenames[Ex]W testsuite - make
it IPv4-only compatible
from 8f8e7c7... Revert "s3-build: Remove --enable-merged support."
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit d1db751ff8e6b15c059db254b57c72dfda8d4bfc
Author: Matthias Dieter Wallnöfer <[email protected]>
Date: Tue Apr 27 18:25:21 2010 +0200
Revert "s4:web_server: use tsocket_address functions to get the local ip
and port"
This reverts commit 9a1a00199c2603376eacfdba7e7d0d55bc64f405.
This broke the build.
commit 79a29a8cd65534884934c60ae2fb2854e064722b
Author: Matthias Dieter Wallnöfer <[email protected]>
Date: Tue Apr 27 18:07:09 2010 +0200
s4:cldap_server/netlogon.c - handle the domain SID correctly
commit eceffe690912b1fbce4ecddaffd29b52e2cf9cd1
Author: Matthias Dieter Wallnöfer <[email protected]>
Date: Tue Apr 27 16:56:36 2010 +0200
nbt: samlogon/netlogon structures - unify denominations
commit 3f1bd92306b2f11b5c8086ef9e0a311d9e99da89
Author: Matthias Dieter Wallnöfer <[email protected]>
Date: Tue Apr 27 16:32:46 2010 +0200
s4:fill_netlogon_samlogon_response - reorder assign operations (to be
consistent)
commit a89ba9e21d53ae2c163e6cdaf4198d3148d5019e
Author: Matthias Dieter Wallnöfer <[email protected]>
Date: Tue Apr 27 16:31:07 2010 +0200
s4:fill_netlogon_samlogon_response - use "lp_workgroup" for the short
netbios domainname
This call is only for the DC mode.
commit 7efb43669838245cd240ac2c5aa443ba0d285b9c
Author: Matthias Dieter Wallnöfer <[email protected]>
Date: Tue Apr 27 15:27:40 2010 +0200
s4:torture - DsRAddressToSitenames[Ex]W testsuite - make it IPv4-only
compatible
-----------------------------------------------------------------------
Summary of changes:
libcli/ndr_netlogon.c | 4 +-
libcli/netlogon.c | 6 ++--
librpc/gen_ndr/nbt.h | 6 ++--
librpc/gen_ndr/ndr_nbt.c | 18 +++++-----
librpc/idl/nbt.idl | 6 ++--
source3/libsmb/clidgram.c | 2 +-
source3/libsmb/dsgetdcname.c | 14 ++++----
source4/cldap_server/netlogon.c | 43 ++++++++++++++++---------
source4/libnet/libnet_become_dc.c | 2 +-
source4/libnet/libnet_unbecome_dc.c | 2 +-
source4/nbt_server/irpc.c | 4 +-
source4/torture/ldap/cldap.c | 12 +++---
source4/torture/rpc/netlogon.c | 60 ++++++++++++++++++++++++++++++++--
source4/web_server/wsgi.c | 16 +++------
14 files changed, 127 insertions(+), 68 deletions(-)
Changeset truncated at 500 lines:
diff --git a/libcli/ndr_netlogon.c b/libcli/ndr_netlogon.c
index 0354cfb..1c6b2bc 100644
--- a/libcli/ndr_netlogon.c
+++ b/libcli/ndr_netlogon.c
@@ -131,7 +131,7 @@ enum ndr_err_code
ndr_push_NETLOGON_SAM_LOGON_RESPONSE_EX_with_flags(struct ndr_
NDR_CHECK(ndr_push_nbt_string(ndr, NDR_SCALARS,
r->forest));
NDR_CHECK(ndr_push_nbt_string(ndr, NDR_SCALARS,
r->dns_domain));
NDR_CHECK(ndr_push_nbt_string(ndr, NDR_SCALARS,
r->pdc_dns_name));
- NDR_CHECK(ndr_push_nbt_string(ndr, NDR_SCALARS,
r->domain));
+ NDR_CHECK(ndr_push_nbt_string(ndr, NDR_SCALARS,
r->domain_name));
NDR_CHECK(ndr_push_nbt_string(ndr, NDR_SCALARS,
r->pdc_name));
NDR_CHECK(ndr_push_nbt_string(ndr, NDR_SCALARS,
r->user_name));
NDR_CHECK(ndr_push_nbt_string(ndr, NDR_SCALARS,
r->server_site));
@@ -177,7 +177,7 @@ enum ndr_err_code
ndr_pull_NETLOGON_SAM_LOGON_RESPONSE_EX_with_flags(struct ndr_
NDR_CHECK(ndr_pull_nbt_string(ndr, NDR_SCALARS,
&r->forest));
NDR_CHECK(ndr_pull_nbt_string(ndr, NDR_SCALARS,
&r->dns_domain));
NDR_CHECK(ndr_pull_nbt_string(ndr, NDR_SCALARS,
&r->pdc_dns_name));
- NDR_CHECK(ndr_pull_nbt_string(ndr, NDR_SCALARS,
&r->domain));
+ NDR_CHECK(ndr_pull_nbt_string(ndr, NDR_SCALARS,
&r->domain_name));
NDR_CHECK(ndr_pull_nbt_string(ndr, NDR_SCALARS,
&r->pdc_name));
NDR_CHECK(ndr_pull_nbt_string(ndr, NDR_SCALARS,
&r->user_name));
NDR_CHECK(ndr_pull_nbt_string(ndr, NDR_SCALARS,
&r->server_site));
diff --git a/libcli/netlogon.c b/libcli/netlogon.c
index acfce61..9ad941c 100644
--- a/libcli/netlogon.c
+++ b/libcli/netlogon.c
@@ -152,7 +152,7 @@ void map_netlogon_samlogon_response(struct
netlogon_samlogon_response *response)
response_5_ex.command = response->data.nt5.command;
response_5_ex.pdc_name = response->data.nt5.pdc_name;
response_5_ex.user_name = response->data.nt5.user_name;
- response_5_ex.domain = response->data.nt5.domain_name;
+ response_5_ex.domain_name = response->data.nt5.domain_name;
response_5_ex.domain_uuid = response->data.nt5.domain_uuid;
response_5_ex.forest = response->data.nt5.forest;
response_5_ex.dns_domain = response->data.nt5.dns_domain;
@@ -169,9 +169,9 @@ void map_netlogon_samlogon_response(struct
netlogon_samlogon_response *response)
case NETLOGON_NT_VERSION_1:
ZERO_STRUCT(response_5_ex);
response_5_ex.command = response->data.nt4.command;
- response_5_ex.pdc_name = response->data.nt4.server;
+ response_5_ex.pdc_name = response->data.nt4.pdc_name;
response_5_ex.user_name = response->data.nt4.user_name;
- response_5_ex.domain = response->data.nt4.domain;
+ response_5_ex.domain_name = response->data.nt4.domain_name;
response_5_ex.nt_version = response->data.nt4.nt_version;
response_5_ex.lmnt_token = response->data.nt4.lmnt_token;
response_5_ex.lm20_token = response->data.nt4.lm20_token;
diff --git a/librpc/gen_ndr/nbt.h b/librpc/gen_ndr/nbt.h
index dc39a5c..49f96c2 100644
--- a/librpc/gen_ndr/nbt.h
+++ b/librpc/gen_ndr/nbt.h
@@ -473,9 +473,9 @@ struct NETLOGON_SAM_LOGON_REQUEST {
struct NETLOGON_SAM_LOGON_RESPONSE_NT40 {
enum netlogon_command command;
- const char * server;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
+ const char * pdc_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
const char * user_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
- const char * domain;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
+ const char * domain_name;/* [flag(LIBNDR_FLAG_STR_NULLTERM)] */
uint32_t nt_version;
uint16_t lmnt_token;
uint16_t lm20_token;
@@ -506,7 +506,7 @@ struct NETLOGON_SAM_LOGON_RESPONSE_EX {
const char * forest;
const char * dns_domain;
const char * pdc_dns_name;
- const char * domain;
+ const char * domain_name;
const char * pdc_name;
const char * user_name;
const char * server_site;
diff --git a/librpc/gen_ndr/ndr_nbt.c b/librpc/gen_ndr/ndr_nbt.c
index dc9e8cb..b3fcb85 100644
--- a/librpc/gen_ndr/ndr_nbt.c
+++ b/librpc/gen_ndr/ndr_nbt.c
@@ -1753,7 +1753,7 @@ _PUBLIC_ enum ndr_err_code
ndr_push_NETLOGON_SAM_LOGON_RESPONSE_NT40(struct ndr_
{
uint32_t _flags_save_string = ndr->flags;
ndr_set_flags(&ndr->flags,
LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS,
r->server));
+ NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS,
r->pdc_name));
ndr->flags = _flags_save_string;
}
{
@@ -1765,7 +1765,7 @@ _PUBLIC_ enum ndr_err_code
ndr_push_NETLOGON_SAM_LOGON_RESPONSE_NT40(struct ndr_
{
uint32_t _flags_save_string = ndr->flags;
ndr_set_flags(&ndr->flags,
LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS,
r->domain));
+ NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS,
r->domain_name));
ndr->flags = _flags_save_string;
}
NDR_CHECK(ndr_push_netlogon_nt_version_flags(ndr,
NDR_SCALARS, r->nt_version));
@@ -1791,7 +1791,7 @@ _PUBLIC_ enum ndr_err_code
ndr_pull_NETLOGON_SAM_LOGON_RESPONSE_NT40(struct ndr_
{
uint32_t _flags_save_string = ndr->flags;
ndr_set_flags(&ndr->flags,
LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS,
&r->server));
+ NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS,
&r->pdc_name));
ndr->flags = _flags_save_string;
}
{
@@ -1803,7 +1803,7 @@ _PUBLIC_ enum ndr_err_code
ndr_pull_NETLOGON_SAM_LOGON_RESPONSE_NT40(struct ndr_
{
uint32_t _flags_save_string = ndr->flags;
ndr_set_flags(&ndr->flags,
LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS,
&r->domain));
+ NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS,
&r->domain_name));
ndr->flags = _flags_save_string;
}
NDR_CHECK(ndr_pull_netlogon_nt_version_flags(ndr,
NDR_SCALARS, &r->nt_version));
@@ -1826,9 +1826,9 @@ _PUBLIC_ void
ndr_print_NETLOGON_SAM_LOGON_RESPONSE_NT40(struct ndr_print *ndr,
ndr_set_flags(&ndr->flags, LIBNDR_FLAG_NOALIGN);
ndr->depth++;
ndr_print_netlogon_command(ndr, "command", r->command);
- ndr_print_string(ndr, "server", r->server);
+ ndr_print_string(ndr, "pdc_name", r->pdc_name);
ndr_print_string(ndr, "user_name", r->user_name);
- ndr_print_string(ndr, "domain", r->domain);
+ ndr_print_string(ndr, "domain_name", r->domain_name);
ndr_print_netlogon_nt_version_flags(ndr, "nt_version",
r->nt_version);
ndr_print_uint16(ndr, "lmnt_token", r->lmnt_token);
ndr_print_uint16(ndr, "lm20_token", r->lm20_token);
@@ -1967,7 +1967,7 @@ _PUBLIC_ enum ndr_err_code
ndr_push_NETLOGON_SAM_LOGON_RESPONSE_EX(struct ndr_pu
NDR_CHECK(ndr_push_nbt_string(ndr, NDR_SCALARS,
r->forest));
NDR_CHECK(ndr_push_nbt_string(ndr, NDR_SCALARS,
r->dns_domain));
NDR_CHECK(ndr_push_nbt_string(ndr, NDR_SCALARS,
r->pdc_dns_name));
- NDR_CHECK(ndr_push_nbt_string(ndr, NDR_SCALARS,
r->domain));
+ NDR_CHECK(ndr_push_nbt_string(ndr, NDR_SCALARS,
r->domain_name));
NDR_CHECK(ndr_push_nbt_string(ndr, NDR_SCALARS,
r->pdc_name));
NDR_CHECK(ndr_push_nbt_string(ndr, NDR_SCALARS,
r->user_name));
NDR_CHECK(ndr_push_nbt_string(ndr, NDR_SCALARS,
r->server_site));
@@ -2006,7 +2006,7 @@ _PUBLIC_ enum ndr_err_code
ndr_pull_NETLOGON_SAM_LOGON_RESPONSE_EX(struct ndr_pu
NDR_CHECK(ndr_pull_nbt_string(ndr, NDR_SCALARS,
&r->forest));
NDR_CHECK(ndr_pull_nbt_string(ndr, NDR_SCALARS,
&r->dns_domain));
NDR_CHECK(ndr_pull_nbt_string(ndr, NDR_SCALARS,
&r->pdc_dns_name));
- NDR_CHECK(ndr_pull_nbt_string(ndr, NDR_SCALARS,
&r->domain));
+ NDR_CHECK(ndr_pull_nbt_string(ndr, NDR_SCALARS,
&r->domain_name));
NDR_CHECK(ndr_pull_nbt_string(ndr, NDR_SCALARS,
&r->pdc_name));
NDR_CHECK(ndr_pull_nbt_string(ndr, NDR_SCALARS,
&r->user_name));
NDR_CHECK(ndr_pull_nbt_string(ndr, NDR_SCALARS,
&r->server_site));
@@ -2045,7 +2045,7 @@ _PUBLIC_ void
ndr_print_NETLOGON_SAM_LOGON_RESPONSE_EX(struct ndr_print *ndr, co
ndr_print_nbt_string(ndr, "forest", r->forest);
ndr_print_nbt_string(ndr, "dns_domain", r->dns_domain);
ndr_print_nbt_string(ndr, "pdc_dns_name", r->pdc_dns_name);
- ndr_print_nbt_string(ndr, "domain", r->domain);
+ ndr_print_nbt_string(ndr, "domain_name", r->domain_name);
ndr_print_nbt_string(ndr, "pdc_name", r->pdc_name);
ndr_print_nbt_string(ndr, "user_name", r->user_name);
ndr_print_nbt_string(ndr, "server_site", r->server_site);
diff --git a/librpc/idl/nbt.idl b/librpc/idl/nbt.idl
index a51132c..6d9f9b5 100644
--- a/librpc/idl/nbt.idl
+++ b/librpc/idl/nbt.idl
@@ -415,9 +415,9 @@ interface nbt
typedef [flag(NDR_NOALIGN),public] struct {
netlogon_command command;
- nstring server;
+ nstring pdc_name;
nstring user_name;
- nstring domain;
+ nstring domain_name;
netlogon_nt_version_flags nt_version;
uint16 lmnt_token;
uint16 lm20_token;
@@ -451,7 +451,7 @@ interface nbt
nbt_string forest;
nbt_string dns_domain;
nbt_string pdc_dns_name;
- nbt_string domain;
+ nbt_string domain_name;
nbt_string pdc_name;
nbt_string user_name;
nbt_string server_site;
diff --git a/source3/libsmb/clidgram.c b/source3/libsmb/clidgram.c
index f5dbd72..bce57ce 100644
--- a/source3/libsmb/clidgram.c
+++ b/source3/libsmb/clidgram.c
@@ -279,7 +279,7 @@ bool receive_getdc_response(TALLOC_CTX *mem_ctx,
/* do we still need this ? */
*nt_version = r.ntver;
- returned_domain = r.data.nt5_ex.domain;
+ returned_domain = r.data.nt5_ex.domain_name;
returned_dc = r.data.nt5_ex.pdc_name;
if (!strequal(returned_domain, domain_name)) {
diff --git a/source3/libsmb/dsgetdcname.c b/source3/libsmb/dsgetdcname.c
index 1e1eac3..8c50a0a 100644
--- a/source3/libsmb/dsgetdcname.c
+++ b/source3/libsmb/dsgetdcname.c
@@ -196,13 +196,13 @@ static NTSTATUS store_cldap_reply(TALLOC_CTX *mem_ctx,
return ndr_map_error2ntstatus(ndr_err);
}
- if (r->domain) {
- status = dsgetdcname_cache_store(mem_ctx, r->domain, &blob);
+ if (r->domain_name) {
+ status = dsgetdcname_cache_store(mem_ctx, r->domain_name,
&blob);
if (!NT_STATUS_IS_OK(status)) {
goto done;
}
if (r->client_site) {
- sitename_store(r->domain, r->client_site);
+ sitename_store(r->domain_name, r->client_site);
}
}
if (r->dns_domain) {
@@ -786,7 +786,7 @@ static NTSTATUS make_dc_info_from_cldap_reply(TALLOC_CTX
*mem_ctx,
map_dc_and_domain_names(flags,
r->pdc_name,
- r->domain,
+ r->domain_name,
r->pdc_dns_name,
r->dns_domain,
&dc_flags,
@@ -1002,9 +1002,9 @@ static NTSTATUS process_dc_netbios(TALLOC_CTX *mem_ctx,
nt_version = NETLOGON_NT_VERSION_1;
logon1.nt_version = nt_version;
- logon1.server = tmp_dc_name;
- logon1.domain = talloc_strdup_upper(mem_ctx,
domain_name);
- NT_STATUS_HAVE_NO_MEMORY(logon1.domain);
+ logon1.pdc_name = tmp_dc_name;
+ logon1.domain_name = talloc_strdup_upper(mem_ctx,
domain_name);
+ NT_STATUS_HAVE_NO_MEMORY(logon1.domain_name);
r->data.nt4 = logon1;
r->ntver = nt_version;
diff --git a/source4/cldap_server/netlogon.c b/source4/cldap_server/netlogon.c
index 06c61ac..414f08a 100644
--- a/source4/cldap_server/netlogon.c
+++ b/source4/cldap_server/netlogon.c
@@ -280,7 +280,7 @@ NTSTATUS fill_netlogon_samlogon_response(struct ldb_context
*sam_ctx,
lp_netbios_name(lp_ctx)),
dns_domain);
NT_STATUS_HAVE_NO_MEMORY(pdc_dns_name);
- flatname = lp_sam_name(lp_ctx);
+ flatname = lp_workgroup(lp_ctx);
server_site = samdb_server_site_name(sam_ctx, mem_ctx);
NT_STATUS_HAVE_NO_MEMORY(server_site);
client_site = samdb_client_site_name(sam_ctx, mem_ctx,
@@ -310,17 +310,15 @@ NTSTATUS fill_netlogon_samlogon_response(struct
ldb_context *sam_ctx,
} else {
netlogon->data.nt5_ex.command =
LOGON_SAM_LOGON_USER_UNKNOWN_EX;
}
- netlogon->data.nt5_ex.server_type = server_type;
+ netlogon->data.nt5_ex.pdc_name = pdc_name;
+ netlogon->data.nt5_ex.user_name = user;
+ netlogon->data.nt5_ex.domain_name = flatname;
netlogon->data.nt5_ex.domain_uuid = domain_uuid;
netlogon->data.nt5_ex.forest = forest_domain;
netlogon->data.nt5_ex.dns_domain = dns_domain;
netlogon->data.nt5_ex.pdc_dns_name = pdc_dns_name;
- netlogon->data.nt5_ex.domain = flatname;
- netlogon->data.nt5_ex.pdc_name = lp_netbios_name(lp_ctx);
- netlogon->data.nt5_ex.user_name = user;
netlogon->data.nt5_ex.server_site = server_site;
netlogon->data.nt5_ex.client_site = client_site;
-
if (version & NETLOGON_NT_VERSION_5EX_WITH_IP) {
/* Clearly this needs to be fixed up for IPv6 */
extra_flags = NETLOGON_NT_VERSION_5EX_WITH_IP;
@@ -328,6 +326,7 @@ NTSTATUS fill_netlogon_samlogon_response(struct ldb_context
*sam_ctx,
netlogon->data.nt5_ex.sockaddr.pdc_ip = pdc_ip;
netlogon->data.nt5_ex.sockaddr.remaining =
data_blob_talloc_zero(mem_ctx, 8);
}
+ netlogon->data.nt5_ex.server_type = server_type;
netlogon->data.nt5_ex.nt_version =
NETLOGON_NT_VERSION_1|NETLOGON_NT_VERSION_5EX|extra_flags;
netlogon->data.nt5_ex.lmnt_token = 0xFFFF;
netlogon->data.nt5_ex.lm20_token = 0xFFFF;
@@ -362,9 +361,9 @@ NTSTATUS fill_netlogon_samlogon_response(struct ldb_context
*sam_ctx,
} else {
netlogon->data.nt4.command =
LOGON_SAM_LOGON_USER_UNKNOWN;
}
- netlogon->data.nt4.server = pdc_name;
+ netlogon->data.nt4.pdc_name = pdc_name;
netlogon->data.nt4.user_name = user;
- netlogon->data.nt4.domain = flatname;
+ netlogon->data.nt4.domain_name = flatname;
netlogon->data.nt4.nt_version = NETLOGON_NT_VERSION_1;
netlogon->data.nt4.lmnt_token = 0xFFFF;
netlogon->data.nt4.lm20_token = 0xFFFF;
@@ -389,7 +388,7 @@ void cldapd_netlogon_request(struct cldap_socket *cldap,
const char *host = NULL;
const char *user = NULL;
const char *domain_guid = NULL;
- const char *domain_sid = NULL;
+ struct dom_sid *domain_sid = NULL;
int acct_control = -1;
int version = -1;
struct netlogon_samlogon_response netlogon;
@@ -421,9 +420,20 @@ void cldapd_netlogon_request(struct cldap_socket *cldap,
}
}
if (strcasecmp(t->u.equality.attr, "DomainSid") == 0) {
- domain_sid = talloc_strndup(tmp_ctx,
- (const char
*)t->u.equality.value.data,
- t->u.equality.value.length);
+ enum ndr_err_code ndr_err;
+
+ domain_sid = talloc(tmp_ctx, struct dom_sid);
+ if (domain_sid == NULL) {
+ goto failed;
+ }
+ ndr_err = ndr_pull_struct_blob(&t->u.equality.value,
+ domain_sid, NULL,
+ domain_sid,
+
(ndr_pull_flags_fn_t)ndr_pull_dom_sid);
+ if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+ talloc_free(domain_sid);
+ goto failed;
+ }
}
if (strcasecmp(t->u.equality.attr, "User") == 0) {
user = talloc_strndup(tmp_ctx,
@@ -440,7 +450,7 @@ void cldapd_netlogon_request(struct cldap_socket *cldap,
}
}
- if (domain_guid == NULL && domain == NULL) {
+ if ((domain == NULL) && (domain_guid == NULL) && (domain_sid == NULL)) {
domain = lp_dnsdomain(cldapd->task->lp_ctx);
}
@@ -451,10 +461,13 @@ void cldapd_netlogon_request(struct cldap_socket *cldap,
DEBUG(5,("cldap netlogon query domain=%s host=%s user=%s version=%d
guid=%s\n",
domain, host, user, version, domain_guid));
- status = fill_netlogon_samlogon_response(cldapd->samctx, tmp_ctx,
domain, NULL, NULL, domain_guid,
+ status = fill_netlogon_samlogon_response(cldapd->samctx, tmp_ctx,
+ domain, NULL, domain_sid,
+ domain_guid,
user, acct_control,
tsocket_address_inet_addr_string(src, tmp_ctx),
- version, cldapd->task->lp_ctx,
&netlogon, false);
+ version, cldapd->task->lp_ctx,
+ &netlogon, false);
if (!NT_STATUS_IS_OK(status)) {
goto failed;
}
diff --git a/source4/libnet/libnet_become_dc.c
b/source4/libnet/libnet_become_dc.c
index 74242c0..a284b33 100644
--- a/source4/libnet/libnet_become_dc.c
+++ b/source4/libnet/libnet_become_dc.c
@@ -811,7 +811,7 @@ static void becomeDC_recv_cldap(struct tevent_req *req)
s->cldap.netlogon = s->cldap.io.out.netlogon.data.nt5_ex;
s->domain.dns_name = s->cldap.netlogon.dns_domain;
- s->domain.netbios_name = s->cldap.netlogon.domain;
+ s->domain.netbios_name = s->cldap.netlogon.domain_name;
s->domain.guid = s->cldap.netlogon.domain_uuid;
s->forest.dns_name = s->cldap.netlogon.forest;
diff --git a/source4/libnet/libnet_unbecome_dc.c
b/source4/libnet/libnet_unbecome_dc.c
index 208854e..b584c75 100644
--- a/source4/libnet/libnet_unbecome_dc.c
+++ b/source4/libnet/libnet_unbecome_dc.c
@@ -307,7 +307,7 @@ static void unbecomeDC_recv_cldap(struct tevent_req *req)
s->cldap.netlogon = s->cldap.io.out.netlogon.data.nt5_ex;
s->domain.dns_name = s->cldap.netlogon.dns_domain;
- s->domain.netbios_name = s->cldap.netlogon.domain;
+ s->domain.netbios_name = s->cldap.netlogon.domain_name;
s->domain.guid = s->cldap.netlogon.domain_uuid;
s->source_dsa.dns_name = s->cldap.netlogon.pdc_dns_name;
diff --git a/source4/nbt_server/irpc.c b/source4/nbt_server/irpc.c
index dbaebf6..261e066 100644
--- a/source4/nbt_server/irpc.c
+++ b/source4/nbt_server/irpc.c
@@ -85,12 +85,12 @@ static void getdc_recv_netlogon_reply(struct
dgram_mailslot_handler *dgmslot,
goto done;
}
- p = netlogon.data.samlogon.data.nt4.server;
+ p = netlogon.data.samlogon.data.nt4.pdc_name;
DEBUG(10, ("NTLOGON_SAM_LOGON_REPLY: server: %s, user: %s, "
"domain: %s\n", p,
netlogon.data.samlogon.data.nt4.user_name,
- netlogon.data.samlogon.data.nt4.domain));
+ netlogon.data.samlogon.data.nt4.domain_name));
if (*p == '\\') p += 1;
if (*p == '\\') p += 1;
diff --git a/source4/torture/ldap/cldap.c b/source4/torture/ldap/cldap.c
index 247a56e..05af0a6 100644
--- a/source4/torture/ldap/cldap.c
+++ b/source4/torture/ldap/cldap.c
@@ -188,7 +188,7 @@ static bool test_cldap_netlogon(struct torture_context
*tctx, const char *dest)
CHECK_STATUS(status, NT_STATUS_OK);
CHECK_STRING(search.out.netlogon.data.nt5_ex.forest,
n1.data.nt5_ex.dns_domain);
CHECK_STRING(search.out.netlogon.data.nt5_ex.dns_domain,
n1.data.nt5_ex.dns_domain);
- CHECK_STRING(search.out.netlogon.data.nt5_ex.domain,
n1.data.nt5_ex.domain);
+ CHECK_STRING(search.out.netlogon.data.nt5_ex.domain_name,
n1.data.nt5_ex.domain_name);
CHECK_STRING(search.out.netlogon.data.nt5_ex.pdc_name,
n1.data.nt5_ex.pdc_name);
CHECK_STRING(search.out.netlogon.data.nt5_ex.user_name, search.in.user);
CHECK_STRING(search.out.netlogon.data.nt5_ex.server_site,
n1.data.nt5_ex.server_site);
@@ -201,7 +201,7 @@ static bool test_cldap_netlogon(struct torture_context
*tctx, const char *dest)
CHECK_VAL(search.out.netlogon.data.nt5_ex.command,
LOGON_SAM_LOGON_USER_UNKNOWN_EX);
CHECK_STRING(search.out.netlogon.data.nt5_ex.forest,
n1.data.nt5_ex.dns_domain);
CHECK_STRING(search.out.netlogon.data.nt5_ex.dns_domain,
n1.data.nt5_ex.dns_domain);
- CHECK_STRING(search.out.netlogon.data.nt5_ex.domain,
n1.data.nt5_ex.domain);
+ CHECK_STRING(search.out.netlogon.data.nt5_ex.domain_name,
n1.data.nt5_ex.domain_name);
CHECK_STRING(search.out.netlogon.data.nt5_ex.pdc_name,
n1.data.nt5_ex.pdc_name);
CHECK_STRING(search.out.netlogon.data.nt5_ex.user_name, search.in.user);
CHECK_STRING(search.out.netlogon.data.nt5_ex.server_site,
n1.data.nt5_ex.server_site);
@@ -220,7 +220,7 @@ static bool test_cldap_netlogon(struct torture_context
*tctx, const char *dest)
CHECK_VAL(search.out.netlogon.data.nt5_ex.command,
LOGON_SAM_LOGON_RESPONSE_EX);
CHECK_STRING(search.out.netlogon.data.nt5_ex.forest,
n1.data.nt5_ex.dns_domain);
CHECK_STRING(search.out.netlogon.data.nt5_ex.dns_domain,
n1.data.nt5_ex.dns_domain);
- CHECK_STRING(search.out.netlogon.data.nt5_ex.domain,
n1.data.nt5_ex.domain);
+ CHECK_STRING(search.out.netlogon.data.nt5_ex.domain_name,
n1.data.nt5_ex.domain_name);
CHECK_STRING(search.out.netlogon.data.nt5_ex.pdc_name,
n1.data.nt5_ex.pdc_name);
CHECK_STRING(search.out.netlogon.data.nt5_ex.user_name, "");
CHECK_STRING(search.out.netlogon.data.nt5_ex.server_site,
n1.data.nt5_ex.server_site);
@@ -233,7 +233,7 @@ static bool test_cldap_netlogon(struct torture_context
*tctx, const char *dest)
CHECK_VAL(search.out.netlogon.data.nt5_ex.command,
LOGON_SAM_LOGON_RESPONSE_EX);
CHECK_STRING(search.out.netlogon.data.nt5_ex.forest,
n1.data.nt5_ex.dns_domain);
CHECK_STRING(search.out.netlogon.data.nt5_ex.dns_domain,
n1.data.nt5_ex.dns_domain);
- CHECK_STRING(search.out.netlogon.data.nt5_ex.domain,
n1.data.nt5_ex.domain);
+ CHECK_STRING(search.out.netlogon.data.nt5_ex.domain_name,
n1.data.nt5_ex.domain_name);
CHECK_STRING(search.out.netlogon.data.nt5_ex.pdc_name,
n1.data.nt5_ex.pdc_name);
CHECK_STRING(search.out.netlogon.data.nt5_ex.user_name, "");
CHECK_STRING(search.out.netlogon.data.nt5_ex.server_site,
n1.data.nt5_ex.server_site);
@@ -247,7 +247,7 @@ static bool test_cldap_netlogon(struct torture_context
*tctx, const char *dest)
CHECK_VAL(search.out.netlogon.data.nt5_ex.command,
LOGON_SAM_LOGON_RESPONSE_EX);
CHECK_STRING(search.out.netlogon.data.nt5_ex.forest,
n1.data.nt5_ex.dns_domain);
CHECK_STRING(search.out.netlogon.data.nt5_ex.dns_domain,
n1.data.nt5_ex.dns_domain);
- CHECK_STRING(search.out.netlogon.data.nt5_ex.domain,
n1.data.nt5_ex.domain);
+ CHECK_STRING(search.out.netlogon.data.nt5_ex.domain_name,
n1.data.nt5_ex.domain_name);
CHECK_STRING(search.out.netlogon.data.nt5_ex.pdc_name,
n1.data.nt5_ex.pdc_name);
CHECK_STRING(search.out.netlogon.data.nt5_ex.user_name, "");
CHECK_STRING(search.out.netlogon.data.nt5_ex.server_site,
n1.data.nt5_ex.server_site);
@@ -259,7 +259,7 @@ static bool test_cldap_netlogon(struct torture_context
*tctx, const char *dest)
CHECK_STATUS(status, NT_STATUS_OK);
CHECK_STRING(search.out.netlogon.data.nt5_ex.forest,
n1.data.nt5_ex.dns_domain);
CHECK_STRING(search.out.netlogon.data.nt5_ex.dns_domain,
n1.data.nt5_ex.dns_domain);
- CHECK_STRING(search.out.netlogon.data.nt5_ex.domain,
n1.data.nt5_ex.domain);
+ CHECK_STRING(search.out.netlogon.data.nt5_ex.domain_name,
n1.data.nt5_ex.domain_name);
CHECK_STRING(search.out.netlogon.data.nt5_ex.pdc_name,
n1.data.nt5_ex.pdc_name);
CHECK_STRING(search.out.netlogon.data.nt5_ex.user_name, search.in.user);
CHECK_STRING(search.out.netlogon.data.nt5_ex.server_site,
n1.data.nt5_ex.server_site);
diff --git a/source4/torture/rpc/netlogon.c b/source4/torture/rpc/netlogon.c
index d6bc013..ae6a757 100644
--- a/source4/torture/rpc/netlogon.c
+++ b/source4/torture/rpc/netlogon.c
@@ -2366,7 +2366,9 @@ static bool test_netr_DsRAddressToSitenamesW(struct
torture_context *tctx,
struct netr_DsRAddressToSitenamesW r;
struct netr_DsRAddress addrs[6];
struct sockaddr_in *addr;
+#ifdef HAVE_IPV6
struct sockaddr_in6 *addr6;
+#endif
struct netr_DsRAddressToSitenamesWCtr *ctr;
struct dcerpc_binding_handle *b = p->binding_handle;
uint32_t i;
@@ -2406,10 +2408,10 @@ static bool test_netr_DsRAddressToSitenamesW(struct
torture_context *tctx,
addrs[2].buffer = talloc_zero_array(tctx, uint8_t, addrs[2].size);
addr = (struct sockaddr_in *) addrs[2].buffer;
addr->sin_family = AF_INET;
- ret = inet_pton(AF_INET, "255.255.255.255",
- &((struct sockaddr_in *)addrs[2].buffer)->sin_addr);
+ ret = inet_pton(AF_INET, "255.255.255.255", &addr->sin_addr);
torture_assert(tctx, ret > 0, "inet_pton failed");
+#ifdef HAVE_IPV6
addrs[3].size = sizeof(struct sockaddr_in6);
addrs[3].buffer = talloc_zero_array(tctx, uint8_t, addrs[3].size);
addr6 = (struct sockaddr_in6 *) addrs[3].buffer;
@@ -2430,6 +2432,30 @@ static bool test_netr_DsRAddressToSitenamesW(struct
torture_context *tctx,
addr6->sin6_family = AF_INET6;
ret = inet_pton(AF_INET6, "ff02::1", &addr6->sin6_addr);
torture_assert(tctx, ret > 0, "inet_pton failed");
+#else
+ /* the test cases are repeated to have exactly 6. This is for
+ * compatibility with IPv4-only machines */
+ addrs[3].size = sizeof(struct sockaddr_in);
+ addrs[3].buffer = talloc_zero_array(tctx, uint8_t, addrs[3].size);
+ addr = (struct sockaddr_in *) addrs[3].buffer;
+ addr->sin_family = AF_INET;
+ ret = inet_pton(AF_INET, "127.0.0.1", &addr->sin_addr);
+ torture_assert(tctx, ret > 0, "inet_pton failed");
+
+ addrs[4].size = sizeof(struct sockaddr_in);
+ addrs[4].buffer = talloc_zero_array(tctx, uint8_t, addrs[4].size);
+ addr = (struct sockaddr_in *) addrs[4].buffer;
+ addr->sin_family = AF_INET;
+ ret = inet_pton(AF_INET, "0.0.0.0", &addr->sin_addr);
+ torture_assert(tctx, ret > 0, "inet_pton failed");
+
+ addrs[5].size = sizeof(struct sockaddr_in);
+ addrs[5].buffer = talloc_zero_array(tctx, uint8_t, addrs[5].size);
+ addr = (struct sockaddr_in *) addrs[5].buffer;
+ addr->sin_family = AF_INET;
+ ret = inet_pton(AF_INET, "255.255.255.255", &addr->sin_addr);
--
Samba Shared Repository