1
0
mirror of https://github.com/samba-team/samba.git synced 2025-11-22 16:23:49 +03:00

Implement NETLOGON GetDCName client side. You can ask a DC for the name of

a DC it trusts.

Volker
This commit is contained in:
Volker Lendecke
-
parent 9ad22b8a3d
commit ae6840320f
4 changed files with 179 additions and 0 deletions

View File

@@ -424,6 +424,90 @@ BOOL net_io_r_logon_ctrl(const char *desc, NET_R_LOGON_CTRL *r_l, prs_struct *ps
return True;
}
/*******************************************************************
Inits an NET_R_GETDCNAME structure.
********************************************************************/
void init_net_q_getdcname(NET_Q_GETDCNAME *r_t, const char *logon_server,
const char *domainname)
{
DEBUG(5,("init_r_getdcname\n"));
r_t->ptr_logon_server = (logon_server != NULL);
init_unistr2(&r_t->uni_logon_server, logon_server, UNI_STR_TERMINATE);
r_t->ptr_domainname = (domainname != NULL);
init_unistr2(&r_t->uni_domainname, domainname, UNI_STR_TERMINATE);
}
/*******************************************************************
Reads or writes an NET_Q_GETDCNAME structure.
********************************************************************/
BOOL net_io_q_getdcname(const char *desc, NET_Q_GETDCNAME *r_t, prs_struct *ps,
int depth)
{
if (r_t == NULL)
return False;
prs_debug(ps, depth, desc, "net_io_q_getdcname");
depth++;
if (!prs_uint32("ptr_logon_server", ps, depth, &r_t->ptr_logon_server))
return False;
if (!smb_io_unistr2("logon_server", &r_t->uni_logon_server,
r_t->ptr_logon_server, ps, depth))
return False;
if (!prs_align(ps))
return False;
if (!prs_uint32("ptr_domainname", ps, depth, &r_t->ptr_domainname))
return False;
if (!smb_io_unistr2("domainname", &r_t->uni_domainname,
r_t->ptr_domainname, ps, depth))
return False;
return True;
}
/*******************************************************************
Inits an NET_R_GETDCNAME structure.
********************************************************************/
void init_net_r_getdcname(NET_R_GETDCNAME *r_t, const char *dcname)
{
DEBUG(5,("init_r_getdcname\n"));
init_unistr2(&r_t->uni_dcname, dcname, UNI_STR_TERMINATE);
}
/*******************************************************************
Reads or writes an NET_R_GETDCNAME structure.
********************************************************************/
BOOL net_io_r_getdcname(const char *desc, NET_R_GETDCNAME *r_t, prs_struct *ps,
int depth)
{
if (r_t == NULL)
return False;
prs_debug(ps, depth, desc, "net_io_r_getdcname");
depth++;
if (!prs_uint32("ptr_dcname", ps, depth, &r_t->ptr_dcname))
return False;
if (!smb_io_unistr2("dcname", &r_t->uni_dcname,
r_t->ptr_dcname, ps, depth))
return False;
if (!prs_ntstatus("status", ps, depth, &r_t->status))
return False;
return True;
}
/*******************************************************************
Inits an NET_R_TRUST_DOM_LIST structure.
********************************************************************/