summaryrefslogtreecommitdiff
path: root/source3/rpc_parse
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2007-05-24 23:11:11 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:22:48 -0500
commit94e4a468f02bc243b72c7e1ddd5a15facf661ae5 (patch)
treed1cda85291107c5a14fd9b5535ca2c8c8baea811 /source3/rpc_parse
parent08be930169c77221843cc8cda5b2bcdad91c71fa (diff)
downloadsamba-94e4a468f02bc243b72c7e1ddd5a15facf661ae5.tar.gz
samba-94e4a468f02bc243b72c7e1ddd5a15facf661ae5.tar.bz2
samba-94e4a468f02bc243b72c7e1ddd5a15facf661ae5.zip
r23127: Fill in some more netlogon dsgetdcname flavours (netr_DsRGetDCNameEx,
netr_DsRGetDCNameEx2) and add new ds request and reply flags, also add some more WERROR codes. Guenther (This used to be commit 37ae7f419702c563bcd0d9c27c02bde7efd34dd7)
Diffstat (limited to 'source3/rpc_parse')
-rw-r--r--source3/rpc_parse/parse_net.c209
1 files changed, 209 insertions, 0 deletions
diff --git a/source3/rpc_parse/parse_net.c b/source3/rpc_parse/parse_net.c
index 01d77f4e07..2f215dd938 100644
--- a/source3/rpc_parse/parse_net.c
+++ b/source3/rpc_parse/parse_net.c
@@ -3435,6 +3435,67 @@ void init_net_q_dsr_getdcname(NET_Q_DSR_GETDCNAME *r_t, const char *server_unc,
}
/*******************************************************************
+ Inits a NET_Q_DSR_GETDCNAMEEX structure.
+********************************************************************/
+
+void init_net_q_dsr_getdcnameex(NET_Q_DSR_GETDCNAMEEX *r_t, const char *server_unc,
+ const char *domain_name,
+ struct GUID *domain_guid,
+ const char *site_name,
+ uint32_t flags)
+{
+ DEBUG(5, ("init_net_q_dsr_getdcnameex\n"));
+
+ r_t->ptr_server_unc = (server_unc != NULL);
+ init_unistr2(&r_t->uni_server_unc, server_unc, UNI_STR_TERMINATE);
+
+ r_t->ptr_domain_name = (domain_name != NULL);
+ init_unistr2(&r_t->uni_domain_name, domain_name, UNI_STR_TERMINATE);
+
+ r_t->ptr_domain_guid = (domain_guid != NULL);
+ r_t->domain_guid = domain_guid;
+
+ r_t->ptr_site_name = (site_name != NULL);
+ init_unistr2(&r_t->uni_site_name, site_name, UNI_STR_TERMINATE);
+
+ r_t->flags = flags;
+}
+
+/*******************************************************************
+ Inits a NET_Q_DSR_GETDCNAMEEX2 structure.
+********************************************************************/
+
+void init_net_q_dsr_getdcnameex2(NET_Q_DSR_GETDCNAMEEX2 *r_t, const char *server_unc,
+ const char *domain_name,
+ const char *client_account,
+ uint32 mask,
+ struct GUID *domain_guid,
+ const char *site_name,
+ uint32_t flags)
+{
+ DEBUG(5, ("init_net_q_dsr_getdcnameex2\n"));
+
+ r_t->ptr_server_unc = (server_unc != NULL);
+ init_unistr2(&r_t->uni_server_unc, server_unc, UNI_STR_TERMINATE);
+
+ r_t->ptr_client_account = (client_account != NULL);
+ init_unistr2(&r_t->uni_client_account, client_account, UNI_STR_TERMINATE);
+
+ r_t->mask = mask;
+
+ r_t->ptr_domain_name = (domain_name != NULL);
+ init_unistr2(&r_t->uni_domain_name, domain_name, UNI_STR_TERMINATE);
+
+ r_t->ptr_domain_guid = (domain_guid != NULL);
+ r_t->domain_guid = domain_guid;
+
+ r_t->ptr_site_name = (site_name != NULL);
+ init_unistr2(&r_t->uni_site_name, site_name, UNI_STR_TERMINATE);
+
+ r_t->flags = flags;
+}
+
+/*******************************************************************
Reads or writes an NET_Q_DSR_GETDCNAME structure.
********************************************************************/
@@ -3506,6 +3567,154 @@ BOOL net_io_q_dsr_getdcname(const char *desc, NET_Q_DSR_GETDCNAME *r_t,
}
/*******************************************************************
+ Reads or writes an NET_Q_DSR_GETDCNAMEEX structure.
+********************************************************************/
+
+BOOL net_io_q_dsr_getdcnameex(const char *desc, NET_Q_DSR_GETDCNAMEEX *r_t,
+ prs_struct *ps, int depth)
+{
+ if (r_t == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "net_io_q_dsr_getdcnameex");
+ depth++;
+
+ if (!prs_uint32("ptr_server_unc", ps, depth, &r_t->ptr_server_unc))
+ return False;
+
+ if (!smb_io_unistr2("server_unc", &r_t->uni_server_unc,
+ r_t->ptr_server_unc, ps, depth))
+ return False;
+
+ if (!prs_align(ps))
+ return False;
+
+ if (!prs_uint32("ptr_domain_name", ps, depth, &r_t->ptr_domain_name))
+ return False;
+
+ if (!smb_io_unistr2("domain_name", &r_t->uni_domain_name,
+ r_t->ptr_domain_name, ps, depth))
+ return False;
+
+ if (!prs_align(ps))
+ return False;
+
+ if (!prs_uint32("ptr_domain_guid", ps, depth, &r_t->ptr_domain_guid))
+ return False;
+
+ if (UNMARSHALLING(ps) && (r_t->ptr_domain_guid)) {
+ r_t->domain_guid = PRS_ALLOC_MEM(ps, struct GUID, 1);
+ if (r_t->domain_guid == NULL)
+ return False;
+ }
+
+ if ((r_t->ptr_domain_guid) &&
+ (!smb_io_uuid("domain_guid", r_t->domain_guid, ps, depth)))
+ return False;
+
+ if (!prs_align(ps))
+ return False;
+
+ if (!prs_uint32("ptr_site_name", ps, depth, &r_t->ptr_site_name))
+ return False;
+
+ if (!smb_io_unistr2("site_name", &r_t->uni_site_name,
+ r_t->ptr_site_name, ps, depth))
+ return False;
+
+ if (!prs_align(ps))
+ return False;
+
+ if (!prs_uint32("flags", ps, depth, &r_t->flags))
+ return False;
+
+ return True;
+}
+
+/*******************************************************************
+ Reads or writes an NET_Q_DSR_GETDCNAMEEX2 structure.
+********************************************************************/
+
+BOOL net_io_q_dsr_getdcnameex2(const char *desc, NET_Q_DSR_GETDCNAMEEX2 *r_t,
+ prs_struct *ps, int depth)
+{
+ if (r_t == NULL)
+ return False;
+
+ prs_debug(ps, depth, desc, "net_io_q_dsr_getdcnameex2");
+ depth++;
+
+ if (!prs_uint32("ptr_server_unc", ps, depth, &r_t->ptr_server_unc))
+ return False;
+
+ if (!smb_io_unistr2("server_unc", &r_t->uni_server_unc,
+ r_t->ptr_server_unc, ps, depth))
+ return False;
+
+ if (!prs_align(ps))
+ return False;
+
+ if (!prs_uint32("ptr_client_account", ps, depth, &r_t->ptr_client_account))
+ return False;
+
+ if (!smb_io_unistr2("client_account", &r_t->uni_client_account,
+ r_t->ptr_client_account, ps, depth))
+ return False;
+
+ if (!prs_align(ps))
+ return False;
+
+ if (!prs_uint32("mask", ps, depth, &r_t->mask))
+ return False;
+
+ if (!prs_align(ps))
+ return False;
+
+ if (!prs_uint32("ptr_domain_name", ps, depth, &r_t->ptr_domain_name))
+ return False;
+
+ if (!smb_io_unistr2("domain_name", &r_t->uni_domain_name,
+ r_t->ptr_domain_name, ps, depth))
+ return False;
+
+ if (!prs_align(ps))
+ return False;
+
+ if (!prs_uint32("ptr_domain_guid", ps, depth, &r_t->ptr_domain_guid))
+ return False;
+
+ if (UNMARSHALLING(ps) && (r_t->ptr_domain_guid)) {
+ r_t->domain_guid = PRS_ALLOC_MEM(ps, struct GUID, 1);
+ if (r_t->domain_guid == NULL)
+ return False;
+ }
+
+ if ((r_t->ptr_domain_guid) &&
+ (!smb_io_uuid("domain_guid", r_t->domain_guid, ps, depth)))
+ return False;
+
+ if (!prs_align(ps))
+ return False;
+
+ if (!prs_uint32("ptr_site_name", ps, depth, &r_t->ptr_site_name))
+ return False;
+
+ if (!smb_io_unistr2("site_name", &r_t->uni_site_name,
+ r_t->ptr_site_name, ps, depth))
+ return False;
+
+ if (!prs_align(ps))
+ return False;
+
+ if (!prs_uint32("flags", ps, depth, &r_t->flags))
+ return False;
+
+ return True;
+}
+
+
+
+/*******************************************************************
Inits a NET_R_DSR_GETDCNAME structure.
********************************************************************/
void init_net_r_dsr_getdcname(NET_R_DSR_GETDCNAME *r_t, const char *dc_unc,