mirror of
https://github.com/samba-team/samba.git
synced 2025-08-03 04:22:09 +03:00
libsmb: Pass "account_name/flags" through nb_getdc
Don't hardcode values that we might want to change later Signed-off-by: Volker Lendecke <vl@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org>
This commit is contained in:
committed by
Jeremy Allison
parent
d34014c935
commit
07532f6a59
@ -299,6 +299,8 @@ struct tevent_req *nbt_getdc_send(TALLOC_CTX *mem_ctx,
|
|||||||
const struct sockaddr_storage *dc_addr,
|
const struct sockaddr_storage *dc_addr,
|
||||||
const char *domain_name,
|
const char *domain_name,
|
||||||
const struct dom_sid *sid,
|
const struct dom_sid *sid,
|
||||||
|
const char *account_name,
|
||||||
|
uint32_t account_flags,
|
||||||
uint32_t nt_version)
|
uint32_t nt_version)
|
||||||
{
|
{
|
||||||
struct tevent_req *req, *subreq;
|
struct tevent_req *req, *subreq;
|
||||||
@ -335,20 +337,10 @@ struct tevent_req *nbt_getdc_send(TALLOC_CTX *mem_ctx,
|
|||||||
|
|
||||||
generate_random_buffer((uint8_t *)(void *)&dgm_id, sizeof(dgm_id));
|
generate_random_buffer((uint8_t *)(void *)&dgm_id, sizeof(dgm_id));
|
||||||
|
|
||||||
{
|
ok = prep_getdc_request(dc_addr, account_name, account_flags,
|
||||||
size_t len = strlen(lp_netbios_name());
|
domain_name, sid, nt_version,
|
||||||
char my_acct_name[len+2];
|
state->my_mailslot, dgm_id & 0x7fff,
|
||||||
|
&state->p);
|
||||||
snprintf(my_acct_name,
|
|
||||||
sizeof(my_acct_name),
|
|
||||||
"%s$",
|
|
||||||
lp_netbios_name());
|
|
||||||
|
|
||||||
ok = prep_getdc_request(dc_addr, my_acct_name, ACB_WSTRUST,
|
|
||||||
domain_name, sid, nt_version,
|
|
||||||
state->my_mailslot, dgm_id & 0x7fff,
|
|
||||||
&state->p);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!ok) {
|
if (!ok) {
|
||||||
DEBUG(3, ("prep_getdc_request failed\n"));
|
DEBUG(3, ("prep_getdc_request failed\n"));
|
||||||
@ -452,6 +444,8 @@ NTSTATUS nbt_getdc(struct messaging_context *msg_ctx,
|
|||||||
const struct sockaddr_storage *dc_addr,
|
const struct sockaddr_storage *dc_addr,
|
||||||
const char *domain_name,
|
const char *domain_name,
|
||||||
const struct dom_sid *sid,
|
const struct dom_sid *sid,
|
||||||
|
const char *account_name,
|
||||||
|
uint32_t account_flags,
|
||||||
uint32_t nt_version,
|
uint32_t nt_version,
|
||||||
TALLOC_CTX *mem_ctx,
|
TALLOC_CTX *mem_ctx,
|
||||||
uint32_t *pnt_version,
|
uint32_t *pnt_version,
|
||||||
@ -468,7 +462,7 @@ NTSTATUS nbt_getdc(struct messaging_context *msg_ctx,
|
|||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
req = nbt_getdc_send(ev, ev, msg_ctx, dc_addr, domain_name,
|
req = nbt_getdc_send(ev, ev, msg_ctx, dc_addr, domain_name,
|
||||||
sid, nt_version);
|
sid, account_name, account_flags, nt_version);
|
||||||
if (req == NULL) {
|
if (req == NULL) {
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,8 @@ struct tevent_req *nbt_getdc_send(TALLOC_CTX *mem_ctx,
|
|||||||
const struct sockaddr_storage *dc_addr,
|
const struct sockaddr_storage *dc_addr,
|
||||||
const char *domain_name,
|
const char *domain_name,
|
||||||
const struct dom_sid *sid,
|
const struct dom_sid *sid,
|
||||||
|
const char *account_name,
|
||||||
|
uint32_t account_flags,
|
||||||
uint32_t nt_version);
|
uint32_t nt_version);
|
||||||
NTSTATUS nbt_getdc_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
|
NTSTATUS nbt_getdc_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
|
||||||
uint32_t *nt_version, const char **dc_name,
|
uint32_t *nt_version, const char **dc_name,
|
||||||
@ -41,6 +43,8 @@ NTSTATUS nbt_getdc(struct messaging_context *msg_ctx,
|
|||||||
const struct sockaddr_storage *dc_addr,
|
const struct sockaddr_storage *dc_addr,
|
||||||
const char *domain_name,
|
const char *domain_name,
|
||||||
const struct dom_sid *sid,
|
const struct dom_sid *sid,
|
||||||
|
const char *account_name,
|
||||||
|
uint32_t account_flags,
|
||||||
uint32_t nt_version,
|
uint32_t nt_version,
|
||||||
TALLOC_CTX *mem_ctx,
|
TALLOC_CTX *mem_ctx,
|
||||||
uint32_t *pnt_version,
|
uint32_t *pnt_version,
|
||||||
|
@ -911,6 +911,8 @@ static NTSTATUS process_dc_netbios(TALLOC_CTX *mem_ctx,
|
|||||||
uint32_t nt_version = NETLOGON_NT_VERSION_1 |
|
uint32_t nt_version = NETLOGON_NT_VERSION_1 |
|
||||||
NETLOGON_NT_VERSION_5 |
|
NETLOGON_NT_VERSION_5 |
|
||||||
NETLOGON_NT_VERSION_5EX_WITH_IP;
|
NETLOGON_NT_VERSION_5EX_WITH_IP;
|
||||||
|
size_t len = strlen(lp_netbios_name());
|
||||||
|
char my_acct_name[len+2];
|
||||||
|
|
||||||
if (msg_ctx == NULL) {
|
if (msg_ctx == NULL) {
|
||||||
return NT_STATUS_INVALID_PARAMETER;
|
return NT_STATUS_INVALID_PARAMETER;
|
||||||
@ -922,6 +924,11 @@ static NTSTATUS process_dc_netbios(TALLOC_CTX *mem_ctx,
|
|||||||
|
|
||||||
nt_version |= map_ds_flags_to_nt_version(flags);
|
nt_version |= map_ds_flags_to_nt_version(flags);
|
||||||
|
|
||||||
|
snprintf(my_acct_name,
|
||||||
|
sizeof(my_acct_name),
|
||||||
|
"%s$",
|
||||||
|
lp_netbios_name());
|
||||||
|
|
||||||
DEBUG(10,("process_dc_netbios\n"));
|
DEBUG(10,("process_dc_netbios\n"));
|
||||||
|
|
||||||
for (i=0; i<num_dcs; i++) {
|
for (i=0; i<num_dcs; i++) {
|
||||||
@ -937,7 +944,7 @@ static NTSTATUS process_dc_netbios(TALLOC_CTX *mem_ctx,
|
|||||||
}
|
}
|
||||||
|
|
||||||
status = nbt_getdc(msg_ctx, 10, &dclist[i].ss, domain_name,
|
status = nbt_getdc(msg_ctx, 10, &dclist[i].ss, domain_name,
|
||||||
NULL, nt_version,
|
NULL, my_acct_name, ACB_WSTRUST, nt_version,
|
||||||
mem_ctx, &nt_version, &dc_name, &r);
|
mem_ctx, &nt_version, &dc_name, &r);
|
||||||
if (NT_STATUS_IS_OK(status)) {
|
if (NT_STATUS_IS_OK(status)) {
|
||||||
store_cache = true;
|
store_cache = true;
|
||||||
|
@ -1466,9 +1466,21 @@ static bool dcip_check_name(TALLOC_CTX *mem_ctx,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
status = nbt_getdc(server_messaging_context(), 10, pss, domain->name,
|
{
|
||||||
&domain->sid, nt_version, mem_ctx, &nt_version,
|
size_t len = strlen(lp_netbios_name());
|
||||||
&dc_name, NULL);
|
char my_acct_name[len+2];
|
||||||
|
|
||||||
|
snprintf(my_acct_name,
|
||||||
|
sizeof(my_acct_name),
|
||||||
|
"%s$",
|
||||||
|
lp_netbios_name());
|
||||||
|
|
||||||
|
status = nbt_getdc(server_messaging_context(), 10, pss,
|
||||||
|
domain->name, &domain->sid,
|
||||||
|
my_acct_name, ACB_WSTRUST,
|
||||||
|
nt_version, mem_ctx, &nt_version,
|
||||||
|
&dc_name, NULL);
|
||||||
|
}
|
||||||
if (NT_STATUS_IS_OK(status)) {
|
if (NT_STATUS_IS_OK(status)) {
|
||||||
*name = talloc_strdup(mem_ctx, dc_name);
|
*name = talloc_strdup(mem_ctx, dc_name);
|
||||||
if (*name == NULL) {
|
if (*name == NULL) {
|
||||||
|
Reference in New Issue
Block a user