mirror of
https://github.com/samba-team/samba.git
synced 2025-02-04 17:47:26 +03:00
Added server side reponse to net_logon_ctrl rpc. We can now respond
to NLTEST /BDC_QUERY:DOMAIN when acting as a BDC. Reverse engineered a couple of status constants.
This commit is contained in:
parent
ee599c9481
commit
0678c30282
@ -282,6 +282,40 @@ static BOOL api_net_logon_ctrl2(pipes_struct *p)
|
||||
return True;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
api_net_logon_ctrl:
|
||||
*************************************************************************/
|
||||
|
||||
static BOOL api_net_logon_ctrl(pipes_struct *p)
|
||||
{
|
||||
NET_Q_LOGON_CTRL q_u;
|
||||
NET_R_LOGON_CTRL r_u;
|
||||
prs_struct *data = &p->in_data.data;
|
||||
prs_struct *rdata = &p->out_data.rdata;
|
||||
|
||||
ZERO_STRUCT(q_u);
|
||||
ZERO_STRUCT(r_u);
|
||||
|
||||
DEBUG(6,("api_net_logon_ctrl: %d\n", __LINE__));
|
||||
|
||||
/* grab the lsa netlogon ctrl query... */
|
||||
if(!net_io_q_logon_ctrl("", &q_u, data, 0)) {
|
||||
DEBUG(0,("api_net_logon_ctrl: Failed to unmarshall NET_Q_LOGON_CTRL.\n"));
|
||||
return False;
|
||||
}
|
||||
|
||||
r_u.status = _net_logon_ctrl(p, &q_u, &r_u);
|
||||
|
||||
if(!net_io_r_logon_ctrl("", &r_u, rdata, 0)) {
|
||||
DEBUG(0,("net_reply_logon_ctrl2: Failed to marshall NET_R_LOGON_CTRL2.\n"));
|
||||
return False;
|
||||
}
|
||||
|
||||
DEBUG(6,("api_net_logon_ctrl2: %d\n", __LINE__));
|
||||
|
||||
return True;
|
||||
}
|
||||
|
||||
/*******************************************************************
|
||||
array of \PIPE\NETLOGON operations
|
||||
********************************************************************/
|
||||
@ -295,6 +329,7 @@ static struct api_struct api_net_cmds [] =
|
||||
{ "NET_SAMLOGOFF" , NET_SAMLOGOFF , api_net_sam_logoff },
|
||||
{ "NET_LOGON_CTRL2" , NET_LOGON_CTRL2 , api_net_logon_ctrl2 },
|
||||
{ "NET_TRUST_DOM_LIST", NET_TRUST_DOM_LIST, api_net_trust_dom_list },
|
||||
{ "NET_LOGON_CTRL" , NET_LOGON_CTRL , api_net_logon_ctrl },
|
||||
{ NULL , 0 , NULL }
|
||||
};
|
||||
|
||||
|
@ -52,6 +52,30 @@ static void init_net_r_req_chal(NET_R_REQ_CHAL *r_c,
|
||||
#define ERROR_NO_SUCH_DOMAIN 0x54b
|
||||
#define ERROR_NO_LOGON_SERVERS 0x51f
|
||||
|
||||
/*************************************************************************
|
||||
net_reply_logon_ctrl:
|
||||
*************************************************************************/
|
||||
|
||||
/* Some flag values reverse engineered from NLTEST.EXE */
|
||||
|
||||
#define LOGON_CTRL_IN_SYNC 0x00
|
||||
#define LOGON_CTRL_REPL_NEEDED 0x01
|
||||
#define LOGON_CTRL_REPL_IN_PROGRESS 0x02
|
||||
|
||||
uint32 _net_logon_ctrl(pipes_struct *p, NET_Q_LOGON_CTRL *q_u,
|
||||
NET_R_LOGON_CTRL *r_u)
|
||||
{
|
||||
uint32 flags = 0x0;
|
||||
uint32 pdc_connection_status = 0x00; /* Maybe a win32 error code? */
|
||||
|
||||
/* Setup the Logon Control response */
|
||||
|
||||
init_net_r_logon_ctrl(r_u, q_u->query_level, flags,
|
||||
pdc_connection_status);
|
||||
|
||||
return r_u->status;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
net_reply_logon_ctrl2:
|
||||
*************************************************************************/
|
||||
@ -68,9 +92,9 @@ uint32 _net_logon_ctrl2(pipes_struct *p, NET_Q_LOGON_CTRL2 *q_u, NET_R_LOGON_CTR
|
||||
DEBUG(6,("_net_logon_ctrl2: %d\n", __LINE__));
|
||||
|
||||
/* set up the Logon Control2 response */
|
||||
init_r_logon_ctrl2(r_u, q_u->query_level,
|
||||
flags, pdc_connection_status, logon_attempts,
|
||||
tc_status, trusted_domain);
|
||||
init_net_r_logon_ctrl2(r_u, q_u->query_level,
|
||||
flags, pdc_connection_status, logon_attempts,
|
||||
tc_status, trusted_domain);
|
||||
|
||||
DEBUG(6,("_net_logon_ctrl2: %d\n", __LINE__));
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user