From 044c6f513dca21d4fc01db4a686c75d43d4952d2 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Fri, 2 Apr 2004 12:56:18 +0000 Subject: Implement NETLOGON GetDCName client side. You can ask a DC for the name of a DC it trusts. Volker (This used to be commit ae6840320ff47827c2817549fe3133a57e3fe77f) --- source3/rpc_parse/parse_net.c | 84 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) (limited to 'source3/rpc_parse/parse_net.c') diff --git a/source3/rpc_parse/parse_net.c b/source3/rpc_parse/parse_net.c index 90cd348f5a..a98738b51f 100644 --- a/source3/rpc_parse/parse_net.c +++ b/source3/rpc_parse/parse_net.c @@ -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. ********************************************************************/ -- cgit