summaryrefslogtreecommitdiff
path: root/librpc
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2011-06-24 16:26:23 +1000
committerAndrew Bartlett <abartlet@samba.org>2011-06-24 16:26:23 +1000
commit6da26870e0ae5acd6ff49a30ec2f6886b44d095e (patch)
tree850c71039563c16a5d563c47e7ba2ab645baf198 /librpc
parent6925a799d04c6fa59dd2ddef1f5510f9bb7d17d1 (diff)
parent2610c05b5b95cc7036b3d6dfb894c6cfbdb68483 (diff)
downloadsamba-6da26870e0ae5acd6ff49a30ec2f6886b44d095e.tar.gz
samba-6da26870e0ae5acd6ff49a30ec2f6886b44d095e.tar.bz2
samba-6da26870e0ae5acd6ff49a30ec2f6886b44d095e.zip
Merge 2610c05b5b95cc7036b3d6dfb894c6cfbdb68483 as Samba-4.0alpha16
Diffstat (limited to 'librpc')
-rw-r--r--librpc/idl/dfsblobs.idl17
-rw-r--r--librpc/idl/idl_types.h6
-rw-r--r--librpc/idl/notify.idl84
-rw-r--r--librpc/idl/printcap.idl1
-rw-r--r--librpc/idl/rap.idl22
-rw-r--r--librpc/idl/server_id.idl33
-rw-r--r--librpc/idl/wscript_build3
-rw-r--r--librpc/ndr/libndr.h4
-rw-r--r--librpc/ndr/ndr_backupkey.h21
-rw-r--r--librpc/ndr/ndr_compression.h22
-rw-r--r--librpc/ndr/ndr_dns.h25
-rw-r--r--librpc/ndr/ndr_spoolss_buf.h23
-rw-r--r--librpc/ndr/ndr_string.c266
-rw-r--r--librpc/ndr/ndr_table.h22
-rw-r--r--librpc/ndr/ndr_wmi.c1
-rw-r--r--librpc/ndr/ndr_wmi.h24
-rw-r--r--librpc/ndr/util.c31
-rw-r--r--librpc/rpc/binding_handle.c4
-rw-r--r--librpc/rpc/dcerpc_util.c2
-rw-r--r--librpc/wscript_build104
20 files changed, 473 insertions, 242 deletions
diff --git a/librpc/idl/dfsblobs.idl b/librpc/idl/dfsblobs.idl
index 6151c3f77b..7b8795d29c 100644
--- a/librpc/idl/dfsblobs.idl
+++ b/librpc/idl/dfsblobs.idl
@@ -53,7 +53,6 @@ interface dfsblobs
[relative_short] nstring *DFS_path;
[relative_short] nstring *DFS_alt_path;
[relative_short] nstring *netw_address;
- /* As stated in MS DFSC 2.2.4.3.1 this array was guid but now MUST be 16 null bytes*/
} dfs_normal_referral;
typedef struct {
@@ -74,32 +73,20 @@ interface dfsblobs
} dfs_padding;
typedef [flag(NDR_NOALIGN)] struct {
+ uint16 size;
DFS_SERVER_TYPE server_type;
DFS_FLAGS_REFERRAL entry_flags;
uint32 ttl;
[switch_is(entry_flags & DFS_FLAG_REFERRAL_DOMAIN_RESP)] dfs_referral referrals;
- } dfs_referral_v3_remaining;
-
- typedef [flag(NDR_NOALIGN)] struct {
- uint16 size;
- dfs_referral_v3_remaining data;
/* this is either 0 or 16 bytes */
[switch_is(size - 18)] dfs_padding service_site_guid;
} dfs_referral_v3;
- typedef struct {
- uint16 size;
- DFS_SERVER_TYPE server_type;
- DFS_FLAGS_REFERRAL entry_flags;
- uint32 ttl;
- dfs_normal_referral r1;
- } dfs_referral_v4;
-
typedef [nodiscriminant] union {
[case(1)] dfs_referral_v1 v1;
[case(2)] dfs_referral_v2 v2;
[case(3)] dfs_referral_v3 v3;
- [case(4)] dfs_referral_v4 v4;
+ [case(4)] dfs_referral_v3 v4;
[default];
} dfs_referral_version;
diff --git a/librpc/idl/idl_types.h b/librpc/idl/idl_types.h
index 023c04020e..c50eface0d 100644
--- a/librpc/idl/idl_types.h
+++ b/librpc/idl/idl_types.h
@@ -8,6 +8,7 @@
#define STR_CONFORMANT LIBNDR_FLAG_STR_CONFORMANT
#define STR_CHARLEN LIBNDR_FLAG_STR_CHARLEN
#define STR_UTF8 LIBNDR_FLAG_STR_UTF8
+#define STR_RAW8 LIBNDR_FLAG_STR_RAW8
/*
a null terminated UCS2 string
@@ -25,6 +26,11 @@
#define utf8string [flag(STR_UTF8|STR_NULLTERM)] string
/*
+ a null terminated "raw" string (null terminated byte sequence)
+*/
+#define raw8string [flag(STR_RAW8|STR_NULLTERM)] string
+
+/*
a null terminated UCS2 string
*/
#define nstring_array [flag(STR_NULLTERM|NDR_ALIGN2)] string_array
diff --git a/librpc/idl/notify.idl b/librpc/idl/notify.idl
new file mode 100644
index 0000000000..845010601e
--- /dev/null
+++ b/librpc/idl/notify.idl
@@ -0,0 +1,84 @@
+#include "idl_types.h"
+
+import "file_id.idl", "server_id.idl";
+
+/*
+ IDL structures for notify change code
+
+ this defines the structures used in the notify database code, and
+ the change notify buffers
+*/
+
+[
+ pointer_default(unique)
+]
+interface notify
+{
+
+ /* structure used in the notify database */
+ typedef [public] struct {
+ server_id server;
+ uint32 filter; /* filter to apply in this directory */
+ uint32 subdir_filter; /* filter to apply in child directories */
+ uint32 dir_fd; /* fd of open directory */
+ file_id dir_id; /* file_id of open directory */
+ utf8string path;
+ uint32 path_len; /* saves some computation on search */
+ pointer private_data;
+ } notify_entry;
+
+ typedef [public] struct {
+ uint32 num_entries;
+ notify_entry entries[num_entries];
+ } notify_entry_array;
+
+ /*
+ to allow for efficient search for matching entries, we
+ divide them by the directory depth, with a separate array
+ per depth. The entries within each depth are sorted by path,
+ allowing for a bisection search.
+
+ The max_mask and max_mask_subdir at each depth is the
+ bitwise or of the filters and subdir filters for all entries
+ at that depth. This allows a depth to be quickly skipped if
+ no entries will match the target filter
+ */
+ typedef struct {
+ uint32 max_mask;
+ uint32 max_mask_subdir;
+ uint32 num_entries;
+ notify_entry entries[num_entries];
+ } notify_depth;
+
+ typedef [public] struct {
+ uint32 num_depths;
+ notify_depth depth[num_depths];
+ } notify_array;
+
+ /* structure sent between servers in notify messages */
+ typedef [public] struct {
+ uint32 action;
+ utf8string path;
+ pointer private_data;
+ } notify_event;
+
+ typedef [v1_enum] enum {
+ FILE_ACTION_ADDED = 0x00000001,
+ FILE_ACTION_REMOVED = 0x00000002,
+ FILE_ACTION_MODIFIED = 0x00000003,
+ FILE_ACTION_RENAMED_OLD_NAME = 0x00000004,
+ FILE_ACTION_RENAMED_NEW_NAME = 0x00000005,
+ FILE_ACTION_ADDED_STREAM = 0x00000006,
+ FILE_ACTION_REMOVED_STREAM = 0x00000007,
+ FILE_ACTION_MODIFIED_STREAM = 0x00000008
+ } FILE_NOTIFY_ACTION;
+
+ /* structure sent at the CIFS layer */
+ /* Align on 4-byte boundary according to MS-CIFS 2.2.7.4.2 */
+ typedef [public,gensize,flag(NDR_ALIGN4)] struct {
+ uint32 NextEntryOffset;
+ FILE_NOTIFY_ACTION Action;
+ [value(strlen_m(FileName1)*2)] uint32 FileNameLength;
+ [charset(UTF16),flag(STR_NOTERM)] uint16 FileName1[FileNameLength];
+ } FILE_NOTIFY_INFORMATION;
+}
diff --git a/librpc/idl/printcap.idl b/librpc/idl/printcap.idl
index 5ab380ce6c..d9c34f3fab 100644
--- a/librpc/idl/printcap.idl
+++ b/librpc/idl/printcap.idl
@@ -7,6 +7,7 @@ interface printcap
typedef struct {
[charset(UTF8),string] uint8 *name;
[charset(UTF8),string] uint8 *info;
+ [charset(UTF8),string] uint8 *location;
} pcap_printer;
typedef [public] struct {
diff --git a/librpc/idl/rap.idl b/librpc/idl/rap.idl
index 8087e22c5b..780951c750 100644
--- a/librpc/idl/rap.idl
+++ b/librpc/idl/rap.idl
@@ -966,6 +966,28 @@ interface rap
[out] uint16 convert
);
+ typedef [public] struct {
+ uint32 TimeSinceJan11970;
+ uint32 TimeSinceBoot;
+ uint8 Hours;
+ uint8 Minutes;
+ uint8 Seconds;
+ uint8 Hundreds;
+ uint16 TimeZone;
+ uint16 ClockFrequency;
+ uint8 Day;
+ uint8 Month;
+ uint16 Year;
+ uint8 Weekday;
+ } rap_TimeOfDayInfo;
+
+ [public] void rap_NetRemoteTOD(
+ [in] uint16 bufsize,
+ [out] rap_status status,
+ [out] uint16 convert,
+ [out] rap_TimeOfDayInfo tod
+ );
+
/* Parameter description strings for RAP calls */
/* Names are defined name for RAP call with _REQ */
/* appended to end. */
diff --git a/librpc/idl/server_id.idl b/librpc/idl/server_id.idl
new file mode 100644
index 0000000000..ac2e9ab318
--- /dev/null
+++ b/librpc/idl/server_id.idl
@@ -0,0 +1,33 @@
+[
+ pointer_default(unique)
+]
+interface server_id
+{
+
+ /*
+ * Virtual Node Numbers are identifying a node within a cluster.
+ * Ctdbd sets this, we retrieve our vnn from it.
+ */
+
+ const int NONCLUSTER_VNN = 0xFFFFFFFF;
+
+ /* used to look like the following, note that unique_id was not
+ * marshalled at all...
+
+ struct server_id {
+ pid_t pid;
+ #ifdef CLUSTER_SUPPORT
+ uint32 vnn;
+ #endif
+ uint64_t unique_id;
+ };
+
+ */
+
+ typedef [public] struct {
+ hyper pid;
+ uint32 task_id;
+ uint32 vnn;
+ hyper unique_id;
+ } server_id;
+}
diff --git a/librpc/idl/wscript_build b/librpc/idl/wscript_build
index 7e1340e6f7..ffb7a9c808 100644
--- a/librpc/idl/wscript_build
+++ b/librpc/idl/wscript_build
@@ -8,8 +8,9 @@ bld.SAMBA_PIDL_LIST('PIDL',
browser.idl dfs.idl dssetup.idl frsapi.idl krb5pac.idl
named_pipe_auth.idl orpc.idl rot.idl spoolss.idl w32time.idl xattr.idl
dbgidl.idl dnsserver.idl echo.idl frsrpc.idl lsa.idl nbt.idl dns.idl
- oxidresolver.idl samr.idl srvsvc.idl winreg.idl dcerpc.idl
+ oxidresolver.idl samr.idl server_id.idl srvsvc.idl winreg.idl dcerpc.idl
drsblobs.idl efs.idl frstrans.idl mgmt.idl netlogon.idl
+ notify.idl
policyagent.idl scerpc.idl svcctl.idl wkssvc.idl eventlog6.idl backupkey.idl
printcap.idl''',
options='--header --ndr-parser --samba3-ndr-server --server --client --python',
diff --git a/librpc/ndr/libndr.h b/librpc/ndr/libndr.h
index 8c59bb9bb0..ca3710bc98 100644
--- a/librpc/ndr/libndr.h
+++ b/librpc/ndr/libndr.h
@@ -122,6 +122,7 @@ struct ndr_print {
#define LIBNDR_FLAG_STR_CONFORMANT (1<<10)
#define LIBNDR_FLAG_STR_CHARLEN (1<<11)
#define LIBNDR_FLAG_STR_UTF8 (1<<12)
+#define LIBNDR_FLAG_STR_RAW8 (1<<13)
#define LIBNDR_STRING_FLAGS (0x7FFC)
/* set if relative pointers should *not* be marshalled in reverse order */
@@ -374,6 +375,8 @@ struct ndr_interface_list {
const struct ndr_interface_table *table;
};
+struct sockaddr_storage;
+
/*********************************************************************
Map an NT error code from a NDR error code.
*********************************************************************/
@@ -395,6 +398,7 @@ enum ndr_err_code ndr_pull_dom_sid0(struct ndr_pull *ndr, int ndr_flags, struct
void ndr_print_dom_sid0(struct ndr_print *ndr, const char *name, const struct dom_sid *sid);
size_t ndr_size_dom_sid0(const struct dom_sid *sid, int flags);
void ndr_print_GUID(struct ndr_print *ndr, const char *name, const struct GUID *guid);
+void ndr_print_sockaddr_storage(struct ndr_print *ndr, const char *name, const struct sockaddr_storage *ss);
bool ndr_syntax_id_equal(const struct ndr_syntax_id *i1, const struct ndr_syntax_id *i2);
enum ndr_err_code ndr_push_struct_blob(DATA_BLOB *blob, TALLOC_CTX *mem_ctx, const void *p, ndr_push_flags_fn_t fn);
enum ndr_err_code ndr_push_union_blob(DATA_BLOB *blob, TALLOC_CTX *mem_ctx, void *p, uint32_t level, ndr_push_flags_fn_t fn);
diff --git a/librpc/ndr/ndr_backupkey.h b/librpc/ndr/ndr_backupkey.h
index c5c7c39995..4e82f6296a 100644
--- a/librpc/ndr/ndr_backupkey.h
+++ b/librpc/ndr/ndr_backupkey.h
@@ -1,2 +1,23 @@
+/*
+ Unix SMB/CIFS implementation.
+
+ routines for top backup key protocol marshalling/unmarshalling
+
+ Copyright (C) Matthieu Patou 2010
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
_PUBLIC_ enum ndr_err_code ndr_push_bkrp_access_check_v2(struct ndr_push *ndr, int ndr_flags, const struct bkrp_access_check_v2 *r);
_PUBLIC_ enum ndr_err_code ndr_pull_bkrp_access_check_v2(struct ndr_pull *ndr, int ndr_flags, struct bkrp_access_check_v2 *r);
diff --git a/librpc/ndr/ndr_compression.h b/librpc/ndr/ndr_compression.h
index b939f6a42b..1c22fbf759 100644
--- a/librpc/ndr/ndr_compression.h
+++ b/librpc/ndr/ndr_compression.h
@@ -1,3 +1,25 @@
+/*
+ Unix SMB/CIFS implementation.
+
+ libndr compression support
+
+ Copyright (C) Stefan Metzmacher 2005
+ Copyright (C) Matthieu Suiche 2008
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
#ifndef __LIBRPC_NDR_NDR_COMPRESSION_H__
#define __LIBRPC_NDR_NDR_COMPRESSION_H__
diff --git a/librpc/ndr/ndr_dns.h b/librpc/ndr/ndr_dns.h
index d97d57fdac..16bf11ba87 100644
--- a/librpc/ndr/ndr_dns.h
+++ b/librpc/ndr/ndr_dns.h
@@ -1,3 +1,28 @@
+/*
+ Unix SMB/CIFS implementation.
+
+ manipulate dns name structures
+
+ Copyright (C) 2010 Kai Blin <kai@samba.org>
+
+ Heavily based on nbtname.c which is:
+
+ Copyright (C) Andrew Tridgell 2005
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
void ndr_print_dns_string(struct ndr_print *ndr,
const char *name,
const char *s);
diff --git a/librpc/ndr/ndr_spoolss_buf.h b/librpc/ndr/ndr_spoolss_buf.h
index c5938c00c8..77053cb13d 100644
--- a/librpc/ndr/ndr_spoolss_buf.h
+++ b/librpc/ndr/ndr_spoolss_buf.h
@@ -1,3 +1,26 @@
+/*
+ Unix SMB/CIFS implementation.
+
+ routines for marshalling/unmarshalling spoolss subcontext buffer structures
+
+ Copyright (C) Andrew Tridgell 2003
+ Copyright (C) Tim Potter 2003
+ Copyright (C) Guenther Deschner 2009
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
#ifndef ___SPACE_SRC_SAMBA_SOURCES_SAMBA_GIT_SOURCE3____SOURCE4_LIBRPC_NDR_NDR_SPOOLSS_BUF_H__
#define ___SPACE_SRC_SAMBA_SOURCES_SAMBA_GIT_SOURCE3____SOURCE4_LIBRPC_NDR_NDR_SPOOLSS_BUF_H__
diff --git a/librpc/ndr/ndr_string.c b/librpc/ndr/ndr_string.c
index 6e20333f04..840776fa3a 100644
--- a/librpc/ndr/ndr_string.c
+++ b/librpc/ndr/ndr_string.c
@@ -30,8 +30,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_string(struct ndr_pull *ndr, int ndr_flags,
char *as=NULL;
uint32_t len1, ofs, len2;
uint16_t len3;
- size_t converted_size;
- int chset = CH_UTF16;
+ size_t conv_src_len = 0, converted_size;
+ int do_convert = 1, chset = CH_UTF16;
unsigned byte_mul = 2;
unsigned flags = ndr->flags;
unsigned c_len_term = 0;
@@ -56,6 +56,12 @@ _PUBLIC_ enum ndr_err_code ndr_pull_string(struct ndr_pull *ndr, int ndr_flags,
flags &= ~LIBNDR_FLAG_STR_UTF8;
}
+ if (flags & LIBNDR_FLAG_STR_RAW8) {
+ do_convert = 0;
+ byte_mul = 1;
+ flags &= ~LIBNDR_FLAG_STR_RAW8;
+ }
+
flags &= ~LIBNDR_FLAG_STR_CONFORMANT;
if (flags & LIBNDR_FLAG_STR_CHARLEN) {
c_len_term = 1;
@@ -73,77 +79,19 @@ _PUBLIC_ enum ndr_err_code ndr_pull_string(struct ndr_pull *ndr, int ndr_flags,
}
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &len2));
if (len2 > len1) {
- return ndr_pull_error(ndr, NDR_ERR_STRING,
- "Bad string lengths len1=%u ofs=%u len2=%u\n",
+ return ndr_pull_error(ndr, NDR_ERR_STRING,
+ "Bad string lengths len1=%u ofs=%u len2=%u\n",
len1, ofs, len2);
- }
- NDR_PULL_NEED_BYTES(ndr, (len2 + c_len_term)*byte_mul);
- if (len2 == 0) {
- as = talloc_strdup(ndr->current_mem_ctx, "");
- } else {
- if (!convert_string_talloc(ndr->current_mem_ctx, chset,
- CH_UNIX,
- ndr->data+ndr->offset,
- (len2 + c_len_term)*byte_mul,
- (void **)(void *)&as,
- &converted_size))
- {
- return ndr_pull_error(ndr, NDR_ERR_CHARCNV,
- "Bad character conversion with flags 0x%x", flags);
- }
- }
- NDR_CHECK(ndr_pull_advance(ndr, (len2 + c_len_term)*byte_mul));
-
- if (len1 != len2) {
+ } else if (len1 != len2) {
DEBUG(6,("len1[%u] != len2[%u] '%s'\n", len1, len2, as));
}
-
- /* this is a way of detecting if a string is sent with the wrong
- termination */
- if (ndr->flags & LIBNDR_FLAG_STR_NOTERM) {
- if (strlen(as) < (len2 + c_len_term)) {
- DEBUG(6,("short string '%s'\n", as));
- }
- } else {
- if (strlen(as) == (len2 + c_len_term)) {
- DEBUG(6,("long string '%s'\n", as));
- }
- }
- *s = as;
+ conv_src_len = len2 + c_len_term;
break;
case LIBNDR_FLAG_STR_SIZE4:
case LIBNDR_FLAG_STR_SIZE4|LIBNDR_FLAG_STR_NOTERM:
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &len1));
- NDR_PULL_NEED_BYTES(ndr, (len1 + c_len_term)*byte_mul);
- if (len1 == 0) {
- as = talloc_strdup(ndr->current_mem_ctx, "");
- } else {
- if (!convert_string_talloc(ndr->current_mem_ctx, chset,
- CH_UNIX,
- ndr->data+ndr->offset,
- (len1 + c_len_term)*byte_mul,
- (void **)(void *)&as,
- &converted_size))
- {
- return ndr_pull_error(ndr, NDR_ERR_CHARCNV,
- "Bad character conversion with flags 0x%x", flags);
- }
- }
- NDR_CHECK(ndr_pull_advance(ndr, (len1 + c_len_term)*byte_mul));
-
- /* this is a way of detecting if a string is sent with the wrong
- termination */
- if (ndr->flags & LIBNDR_FLAG_STR_NOTERM) {
- if (strlen(as) < (len1 + c_len_term)) {
- DEBUG(6,("short string '%s'\n", as));
- }
- } else {
- if (strlen(as) == (len1 + c_len_term)) {
- DEBUG(6,("long string '%s'\n", as));
- }
- }
- *s = as;
+ conv_src_len = len1 + c_len_term;
break;
case LIBNDR_FLAG_STR_LEN4:
@@ -154,108 +102,28 @@ _PUBLIC_ enum ndr_err_code ndr_pull_string(struct ndr_pull *ndr, int ndr_flags,
ndr->flags & LIBNDR_STRING_FLAGS);
}
NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &len1));
- NDR_PULL_NEED_BYTES(ndr, (len1 + c_len_term)*byte_mul);
- if (len1 == 0) {
- as = talloc_strdup(ndr->current_mem_ctx, "");
- } else {
- if (!convert_string_talloc(ndr->current_mem_ctx, chset,
- CH_UNIX,
- ndr->data+ndr->offset,
- (len1 + c_len_term)*byte_mul,
- (void **)(void *)&as,
- &converted_size))
- {
- return ndr_pull_error(ndr, NDR_ERR_CHARCNV,
- "Bad character conversion with flags 0x%x", flags);
- }
- }
- NDR_CHECK(ndr_pull_advance(ndr, (len1 + c_len_term)*byte_mul));
-
- /* this is a way of detecting if a string is sent with the wrong
- termination */
- if (ndr->flags & LIBNDR_FLAG_STR_NOTERM) {
- if (strlen(as) < (len1 + c_len_term)) {
- DEBUG(6,("short string '%s'\n", as));
- }
- } else {
- if (strlen(as) == (len1 + c_len_term)) {
- DEBUG(6,("long string '%s'\n", as));
- }
- }
- *s = as;
+ conv_src_len = len1 + c_len_term;
break;
-
case LIBNDR_FLAG_STR_SIZE2:
case LIBNDR_FLAG_STR_SIZE2|LIBNDR_FLAG_STR_NOTERM:
NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &len3));
- NDR_PULL_NEED_BYTES(ndr, (len3 + c_len_term)*byte_mul);
- if (len3 == 0) {
- as = talloc_strdup(ndr->current_mem_ctx, "");
- } else {
- if (!convert_string_talloc(ndr->current_mem_ctx, chset,
- CH_UNIX,
- ndr->data+ndr->offset,
- (len3 + c_len_term)*byte_mul,
- (void **)(void *)&as,
- &converted_size))
- {
- return ndr_pull_error(ndr, NDR_ERR_CHARCNV,
- "Bad character conversion with flags 0x%x", flags);
- }
- }
- NDR_CHECK(ndr_pull_advance(ndr, (len3 + c_len_term)*byte_mul));
-
- /* this is a way of detecting if a string is sent with the wrong
- termination */
- if (ndr->flags & LIBNDR_FLAG_STR_NOTERM) {
- if (strlen(as) < (len3 + c_len_term)) {
- DEBUG(6,("short string '%s'\n", as));
- }
- } else {
- if (strlen(as) == (len3 + c_len_term)) {
- DEBUG(6,("long string '%s'\n", as));
- }
- }
- *s = as;
+ conv_src_len = len3 + c_len_term;
break;
case LIBNDR_FLAG_STR_SIZE2|LIBNDR_FLAG_STR_NOTERM|LIBNDR_FLAG_STR_BYTESIZE:
NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &len3));
- NDR_PULL_NEED_BYTES(ndr, len3);
- if (len3 == 0) {
- as = talloc_strdup(ndr->current_mem_ctx, "");
- } else {
- if (!convert_string_talloc(ndr->current_mem_ctx, chset,
- CH_UNIX,
- ndr->data+ndr->offset, len3,
- (void **)(void *)&as,
- &converted_size))
- {
- return ndr_pull_error(ndr, NDR_ERR_CHARCNV,
- "Bad character conversion with flags 0x%x", flags);
- }
- }
- NDR_CHECK(ndr_pull_advance(ndr, len3));
- *s = as;
+ conv_src_len = len3;
+ byte_mul = 1; /* the length is now absolute */
break;
case LIBNDR_FLAG_STR_NULLTERM:
if (byte_mul == 1) {
- len1 = ascii_len_n((const char *)(ndr->data+ndr->offset), ndr->data_size - ndr->offset);
+ conv_src_len = ascii_len_n((const char *)(ndr->data+ndr->offset), ndr->data_size - ndr->offset);
} else {
- len1 = utf16_len_n(ndr->data+ndr->offset, ndr->data_size - ndr->offset);
- }
- if (!convert_string_talloc(ndr->current_mem_ctx, chset, CH_UNIX,
- ndr->data+ndr->offset, len1,
- (void **)(void *)&as,
- &converted_size))
- {
- return ndr_pull_error(ndr, NDR_ERR_CHARCNV,
- "Bad character conversion with flags 0x%x", flags);
+ conv_src_len = utf16_len_n(ndr->data+ndr->offset, ndr->data_size - ndr->offset);
}
- NDR_CHECK(ndr_pull_advance(ndr, len1));
- *s = as;
+ byte_mul = 1; /* the length is now absolute */
break;
case LIBNDR_FLAG_STR_NOTERM:
@@ -263,26 +131,8 @@ _PUBLIC_ enum ndr_err_code ndr_pull_string(struct ndr_pull *ndr, int ndr_flags,
return ndr_pull_error(ndr, NDR_ERR_STRING, "Bad string flags 0x%x (missing NDR_REMAINING)\n",
ndr->flags & LIBNDR_STRING_FLAGS);
}
-
- len1 = ndr->data_size - ndr->offset;
-
- NDR_PULL_NEED_BYTES(ndr, len1);
- if (len1 == 0) {
- as = talloc_strdup(ndr->current_mem_ctx, "");
- } else {
- if (!convert_string_talloc(ndr->current_mem_ctx, chset,
- CH_UNIX,
- ndr->data+ndr->offset, len1,
- (void **)(void *)&as,
- &converted_size))
- {
- return ndr_pull_error(ndr, NDR_ERR_CHARCNV,
- "Bad character conversion with flags 0x%x", flags);
- }
- }
- NDR_CHECK(ndr_pull_advance(ndr, len1));
-
- *s = as;
+ conv_src_len = ndr->data_size - ndr->offset;
+ byte_mul = 1; /* the length is now absolute */
break;
default:
@@ -290,6 +140,45 @@ _PUBLIC_ enum ndr_err_code ndr_pull_string(struct ndr_pull *ndr, int ndr_flags,
ndr->flags & LIBNDR_STRING_FLAGS);
}
+ NDR_PULL_NEED_BYTES(ndr, conv_src_len * byte_mul);
+ if (conv_src_len == 0) {
+ as = talloc_strdup(ndr->current_mem_ctx, "");
+ converted_size = 0;
+ } else {
+ if (!do_convert) {
+ as = talloc_strndup(ndr->current_mem_ctx,
+ (char *)ndr->data + ndr->offset,
+ conv_src_len);
+ if (!as) {
+ return ndr_pull_error(ndr, NDR_ERR_ALLOC,
+ "Failed to talloc_strndup() in RAW8 ndr_string_pull()");
+ }
+ converted_size = MIN(strlen(as)+1, conv_src_len);
+ } else if (!convert_string_talloc(ndr->current_mem_ctx, chset,
+ CH_UNIX, ndr->data + ndr->offset,
+ conv_src_len * byte_mul,
+ (void **)(void *)&as,
+ &converted_size)) {
+ return ndr_pull_error(ndr, NDR_ERR_CHARCNV,
+ "Bad character conversion with flags 0x%x", flags);
+ }
+ }
+
+ /* this is a way of detecting if a string is sent with the wrong
+ termination */
+ if (ndr->flags & LIBNDR_FLAG_STR_NOTERM) {
+ if (as && converted_size > 0 && as[converted_size-1] == '\0') {
+ DEBUG(6,("short string '%s', sent with NULL termination despite NOTERM flag in IDL\n", as));
+ }
+ } else {
+ if (as && converted_size > 0 && as[converted_size-1] != '\0') {
+ DEBUG(6,("long string '%s', send without NULL termination (which was expected)\n", as));
+ }
+ }
+
+ NDR_CHECK(ndr_pull_advance(ndr, conv_src_len * byte_mul));
+ *s = as;
+
return NDR_ERR_SUCCESS;
}
@@ -301,7 +190,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_string(struct ndr_push *ndr, int ndr_flags,
{
ssize_t s_len, c_len;
size_t d_len;
- int chset = CH_UTF16;
+ int do_convert = 1, chset = CH_UTF16;
unsigned flags = ndr->flags;
unsigned byte_mul = 2;
uint8_t *dest = NULL;
@@ -328,12 +217,22 @@ _PUBLIC_ enum ndr_err_code ndr_push_string(struct ndr_push *ndr, int ndr_flags,
flags &= ~LIBNDR_FLAG_STR_UTF8;
}
+ if (flags & LIBNDR_FLAG_STR_RAW8) {
+ do_convert = 0;
+ byte_mul = 1;
+ flags &= ~LIBNDR_FLAG_STR_RAW8;
+ }
+
flags &= ~LIBNDR_FLAG_STR_CONFORMANT;
if (!(flags & LIBNDR_FLAG_STR_NOTERM)) {
s_len++;
}
- if (!convert_string_talloc(ndr, CH_UNIX, chset, s, s_len,
+
+ if (!do_convert) {
+ d_len = s_len;
+ dest = (uint8_t *)talloc_strndup(ndr, s, s_len);
+ } else if (!convert_string_talloc(ndr, CH_UNIX, chset, s, s_len,
(void **)(void *)&dest, &d_len))
{
return ndr_push_error(ndr, NDR_ERR_CHARCNV,
@@ -403,9 +302,13 @@ _PUBLIC_ size_t ndr_string_array_size(struct ndr_push *ndr, const char *s)
unsigned byte_mul = 2;
unsigned c_len_term = 1;
- c_len = s?strlen_m(s):0;
+ if (flags & LIBNDR_FLAG_STR_RAW8) {
+ c_len = s?strlen(s):0;
+ } else {
+ c_len = s?strlen_m(s):0;
+ }
- if (flags & (LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_UTF8)) {
+ if (flags & (LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_RAW8|LIBNDR_FLAG_STR_UTF8)) {
byte_mul = 1;
}
@@ -611,16 +514,22 @@ _PUBLIC_ size_t ndr_size_string_array(const char **a, uint32_t count, int flags)
{
uint32_t i;
size_t size = 0;
+ int rawbytes = 0;
+
+ if (flags & LIBNDR_FLAG_STR_RAW8) {
+ rawbytes = 1;
+ flags &= ~LIBNDR_FLAG_STR_RAW8;
+ }
switch (flags & LIBNDR_STRING_FLAGS) {
case LIBNDR_FLAG_STR_NULLTERM:
for (i = 0; i < count; i++) {
- size += strlen_m_term(a[i]);
+ size += rawbytes?strlen(a[i]) + 1:strlen_m_term(a[i]);
}
break;
case LIBNDR_FLAG_STR_NOTERM:
for (i = 0; i < count; i++) {
- size += strlen_m(a[i]);
+ size += rawbytes?strlen(a[i]):strlen_m(a[i]);
}
break;
default:
@@ -736,7 +645,6 @@ _PUBLIC_ uint32_t ndr_charset_length(const void *var, charset_t chset)
case CH_UTF16MUNGED:
case CH_UTF8:
return strlen_m_ext_term((const char *)var, CH_UNIX, chset);
- case CH_DISPLAY:
case CH_DOS:
case CH_UNIX:
return strlen((const char *)var)+1;
diff --git a/librpc/ndr/ndr_table.h b/librpc/ndr/ndr_table.h
index 9e8fea1db6..207618f644 100644
--- a/librpc/ndr/ndr_table.h
+++ b/librpc/ndr/ndr_table.h
@@ -1,3 +1,25 @@
+/*
+ Unix SMB/CIFS implementation.
+
+ dcerpc utility functions
+
+ Copyright (C) Andrew Tridgell 2003
+ Copyright (C) Jelmer Vernooij 2004
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
#ifndef _NDR_TABLE_PROTO_H_
#define _NDR_TABLE_PROTO_H_
diff --git a/librpc/ndr/ndr_wmi.c b/librpc/ndr/ndr_wmi.c
index 87f3e9690a..4748888389 100644
--- a/librpc/ndr/ndr_wmi.c
+++ b/librpc/ndr/ndr_wmi.c
@@ -23,6 +23,7 @@
#include "includes.h"
#include "librpc/gen_ndr/ndr_dcom.h"
#include "librpc/gen_ndr/ndr_wmi.h"
+#include "librpc/ndr/ndr_wmi.h"
// Just for debugging
int NDR_CHECK_depth = 0;
diff --git a/librpc/ndr/ndr_wmi.h b/librpc/ndr/ndr_wmi.h
new file mode 100644
index 0000000000..62d2c535cd
--- /dev/null
+++ b/librpc/ndr/ndr_wmi.h
@@ -0,0 +1,24 @@
+/*
+ Unix SMB/CIFS implementation.
+
+ routines for marshalling/unmarshalling DCOM string arrays
+
+ Copyright (C) Jelmer Vernooij 2004
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+enum ndr_err_code ndr_push_BSTR(struct ndr_push *ndr, int ndr_flags, const struct BSTR *r);
+enum ndr_err_code ndr_pull_BSTR(struct ndr_pull *ndr, int ndr_flags, struct BSTR *r);
diff --git a/librpc/ndr/util.c b/librpc/ndr/util.c
new file mode 100644
index 0000000000..b2df28dde0
--- /dev/null
+++ b/librpc/ndr/util.c
@@ -0,0 +1,31 @@
+/*
+ Unix SMB/CIFS implementation.
+
+ libndr interface
+
+ Copyright (C) Andrew Tridgell 2003
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "includes.h"
+#include "../librpc/ndr/libndr.h"
+#include "system/network.h"
+#include "lib/util/util_net.h"
+
+_PUBLIC_ void ndr_print_sockaddr_storage(struct ndr_print *ndr, const char *name, const struct sockaddr_storage *ss)
+{
+ char addr[INET6_ADDRSTRLEN];
+ ndr->print(ndr, "%-25s: %s", name, print_sockaddr(addr, sizeof(addr), ss));
+}
diff --git a/librpc/rpc/binding_handle.c b/librpc/rpc/binding_handle.c
index 6c2d8a8b12..1e90827dbe 100644
--- a/librpc/rpc/binding_handle.c
+++ b/librpc/rpc/binding_handle.c
@@ -227,7 +227,7 @@ NTSTATUS dcerpc_binding_handle_raw_call(struct dcerpc_binding_handle *h,
}
if (!tevent_req_poll(subreq, ev)) {
- status = map_nt_error_from_unix(errno);
+ status = map_nt_error_from_unix_common(errno);
talloc_free(frame);
return status;
}
@@ -540,7 +540,7 @@ NTSTATUS dcerpc_binding_handle_call(struct dcerpc_binding_handle *h,
}
if (!tevent_req_poll(subreq, ev)) {
- status = map_nt_error_from_unix(errno);
+ status = map_nt_error_from_unix_common(errno);
talloc_free(frame);
return status;
}
diff --git a/librpc/rpc/dcerpc_util.c b/librpc/rpc/dcerpc_util.c
index a405ca8966..de292c8366 100644
--- a/librpc/rpc/dcerpc_util.c
+++ b/librpc/rpc/dcerpc_util.c
@@ -266,7 +266,7 @@ static void dcerpc_read_ncacn_packet_done(struct tevent_req *subreq)
ret = tstream_readv_pdu_recv(subreq, &sys_errno);
TALLOC_FREE(subreq);
if (ret == -1) {
- status = map_nt_error_from_unix(sys_errno);
+ status = map_nt_error_from_unix_common(sys_errno);
tevent_req_nterror(req, status);
return;
}
diff --git a/librpc/wscript_build b/librpc/wscript_build
index d6f0f6dd41..a68ce477dd 100644
--- a/librpc/wscript_build
+++ b/librpc/wscript_build
@@ -175,6 +175,13 @@ bld.SAMBA_SUBSYSTEM('NDR_SCERPC',
public_deps='ndr'
)
+bld.SAMBA_SUBSYSTEM('NDR_SERVER_ID',
+ source='gen_ndr/ndr_server_id.c',
+ deps='ndr',
+ public_headers='gen_ndr/server_id.h',
+ header_path='gen_ndr'
+ )
+
bld.SAMBA_SUBSYSTEM('NDR_TRKWKS',
source='gen_ndr/ndr_trkwks.c',
public_deps='ndr'
@@ -195,6 +202,11 @@ bld.SAMBA_SUBSYSTEM('NDR_IDMAP',
public_deps='ndr ndr-standard'
)
+bld.SAMBA_SUBSYSTEM('NDR_NOTIFY',
+ source='gen_ndr/ndr_notify.c',
+ public_deps='ndr ndr-standard NDR_SERVER_ID NDR_FILE_ID'
+ )
+
bld.SAMBA_SUBSYSTEM('NDR_NTLMSSP',
source='ndr/ndr_ntlmssp.c gen_ndr/ndr_ntlmssp.c',
public_deps='ndr ndr-standard'
@@ -305,7 +317,8 @@ bld.SAMBA_LIBRARY('ndr-standard',
pc_files='ndr_standard.pc',
deps='''NDR_SECURITY NDR_LSA NDR_SAMR NDR_NETLOGON NDR_EVENTLOG NDR_DFS
NDR_NTSVCS NDR_SVCCTL NDR_INITSHUTDOWN NDR_WKSSVC NDR_SRVSVC NDR_WINREG
- NDR_ECHO security NDR_DNS NDR_ATSVC''',
+ NDR_ECHO security NDR_DNS NDR_ATSVC NDR_SPOOLSS NDR_DSSETUP
+ NDR_SERVER_ID NDR_NOTIFY''',
public_deps='ndr',
public_headers='gen_ndr/samr.h gen_ndr/ndr_samr.h gen_ndr/lsa.h gen_ndr/netlogon.h gen_ndr/atsvc.h gen_ndr/ndr_atsvc.h gen_ndr/ndr_svcctl.h gen_ndr/svcctl.h',
header_path='gen_ndr'
@@ -345,114 +358,114 @@ bld.SAMBA_SUBSYSTEM('NDR_FILE_ID',
bld.SAMBA_SUBSYSTEM('RPC_NDR_XATTR',
source='gen_ndr/ndr_xattr_c.c',
- public_deps='NDR_XATTR dcerpc'
+ public_deps='NDR_XATTR rpccommon'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_ROT',
source='gen_ndr/ndr_rot_c.c',
- public_deps='NDR_ROT dcerpc'
+ public_deps='NDR_ROT rpccommon'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_ATSVC',
source='gen_ndr/ndr_atsvc_c.c',
- public_deps='dcerpc NDR_ATSVC'
+ public_deps='rpccommon NDR_ATSVC'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_AUDIOSRV',
source='gen_ndr/ndr_audiosrv_c.c',
- public_deps='NDR_AUDIOSRV dcerpc'
+ public_deps='NDR_AUDIOSRV rpccommon'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_ECHO',
source='gen_ndr/ndr_echo_c.c',
- public_deps='dcerpc NDR_ECHO'
+ public_deps='rpccommon NDR_ECHO'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_DSBACKUP',
source='gen_ndr/ndr_dsbackup_c.c',
- public_deps='dcerpc NDR_DSBACKUP'
+ public_deps='rpccommon NDR_DSBACKUP'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_EFS',
source='gen_ndr/ndr_efs_c.c',
- public_deps='dcerpc NDR_EFS'
+ public_deps='rpccommon NDR_EFS'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_LSA',
source='gen_ndr/ndr_lsa_c.c',
- public_deps='dcerpc ndr-standard'
+ public_deps='rpccommon ndr-standard'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_SAMR',
source='gen_ndr/ndr_samr_c.c',
- public_deps='dcerpc NDR_SAMR'
+ public_deps='rpccommon NDR_SAMR'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_DFS',
source='gen_ndr/ndr_dfs_c.c',
- public_deps='dcerpc ndr-standard'
+ public_deps='rpccommon ndr-standard'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_FRSAPI',
source='gen_ndr/ndr_frsapi_c.c',
- public_deps='dcerpc NDR_FRSAPI'
+ public_deps='rpccommon NDR_FRSAPI'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_DRSUAPI',
source='gen_ndr/ndr_drsuapi_c.c',
- public_deps='dcerpc NDR_DRSUAPI'
+ public_deps='rpccommon NDR_DRSUAPI'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_DRSBLOBS',
source='gen_ndr/ndr_drsblobs_c.c',
- public_deps='dcerpc NDR_DRSBLOBS'
+ public_deps='rpccommon NDR_DRSBLOBS'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_POLICYAGENT',
source='gen_ndr/ndr_policyagent_c.c',
- public_deps='dcerpc NDR_POLICYAGENT'
+ public_deps='rpccommon NDR_POLICYAGENT'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_UNIXINFO',
source='gen_ndr/ndr_unixinfo_c.c',
- public_deps='dcerpc NDR_UNIXINFO'
+ public_deps='rpccommon NDR_UNIXINFO'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_BROWSER',
source='gen_ndr/ndr_browser_c.c',
- public_deps='dcerpc NDR_BROWSER'
+ public_deps='rpccommon NDR_BROWSER'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_SPOOLSS',
source='gen_ndr/ndr_spoolss_c.c',
- public_deps='dcerpc NDR_SPOOLSS'
+ public_deps='rpccommon NDR_SPOOLSS'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_NBT',
source='gen_ndr/ndr_nbt_c.c',
- public_deps='dcerpc NDR_NBT'
+ public_deps='rpccommon NDR_NBT'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_WKSSVC',
source='gen_ndr/ndr_wkssvc_c.c',
- public_deps='dcerpc ndr-standard'
+ public_deps='rpccommon ndr-standard'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_SRVSVC',
source='gen_ndr/ndr_srvsvc_c.c',
- public_deps='dcerpc NDR_SRVSVC'
+ public_deps='rpccommon NDR_SRVSVC'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_SVCCTL',
source='gen_ndr/ndr_svcctl_c.c',
- public_deps='dcerpc ndr-standard',
+ public_deps='rpccommon ndr-standard',
public_headers='gen_ndr/ndr_svcctl_c.h ndr/ndr_svcctl.h',
header_path=[ ('gen_ndr*', 'gen_ndr'), ('ndr*', 'ndr')]
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_EVENTLOG',
source='gen_ndr/ndr_eventlog_c.c',
- public_deps='dcerpc ndr-standard'
+ public_deps='rpccommon ndr-standard'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_EPMAPPER',
@@ -462,27 +475,27 @@ bld.SAMBA_SUBSYSTEM('RPC_NDR_EPMAPPER',
bld.SAMBA_SUBSYSTEM('RPC_NDR_DBGIDL',
source='gen_ndr/ndr_dbgidl_c.c',
- public_deps='dcerpc NDR_DBGIDL'
+ public_deps='rpccommon NDR_DBGIDL'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_DSSETUP',
source='gen_ndr/ndr_dssetup_c.c',
- public_deps='dcerpc NDR_DSSETUP'
+ public_deps='rpccommon NDR_DSSETUP'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_MSGSVC',
source='gen_ndr/ndr_msgsvc_c.c',
- public_deps='dcerpc NDR_MSGSVC'
+ public_deps='rpccommon NDR_MSGSVC'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_WINREG',
source='gen_ndr/ndr_winreg_c.c',
- public_deps='dcerpc ndr-standard'
+ public_deps='rpccommon ndr-standard'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_INITSHUTDOWN',
source='gen_ndr/ndr_initshutdown_c.c',
- public_deps='dcerpc ndr-standard'
+ public_deps='rpccommon ndr-standard'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_MGMT',
@@ -492,32 +505,32 @@ bld.SAMBA_SUBSYSTEM('RPC_NDR_MGMT',
bld.SAMBA_SUBSYSTEM('RPC_NDR_OXIDRESOLVER',
source='gen_ndr/ndr_oxidresolver_c.c',
- public_deps='dcerpc NDR_OXIDRESOLVER'
+ public_deps='rpccommon NDR_OXIDRESOLVER'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_REMACT',
source='gen_ndr/ndr_remact_c.c',
- public_deps='dcerpc NDR_REMACT'
+ public_deps='rpccommon NDR_REMACT'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_WZCSVC',
source='gen_ndr/ndr_wzcsvc_c.c',
- public_deps='dcerpc NDR_WZCSVC'
+ public_deps='rpccommon NDR_WZCSVC'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_W32TIME',
source='gen_ndr/ndr_w32time_c.c',
- public_deps='dcerpc NDR_W32TIME'
+ public_deps='rpccommon NDR_W32TIME'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_SCERPC',
source='gen_ndr/ndr_scerpc_c.c',
- public_deps='dcerpc NDR_SCERPC'
+ public_deps='rpccommon NDR_SCERPC'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_NTSVCS',
source='gen_ndr/ndr_ntsvcs_c.c',
- public_deps='dcerpc ndr-standard'
+ public_deps='rpccommon ndr-standard'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_NETLOGON',
@@ -527,22 +540,22 @@ bld.SAMBA_SUBSYSTEM('RPC_NDR_NETLOGON',
bld.SAMBA_SUBSYSTEM('RPC_NDR_TRKWKS',
source='gen_ndr/ndr_trkwks_c.c',
- public_deps='dcerpc NDR_TRKWKS'
+ public_deps='rpccommon NDR_TRKWKS'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_KEYSVC',
source='gen_ndr/ndr_keysvc_c.c',
- public_deps='dcerpc NDR_KEYSVC'
+ public_deps='rpccommon NDR_KEYSVC'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_BACKUPKEY',
source='gen_ndr/ndr_backupkey_c.c',
- public_deps='dcerpc NDR_BACKUPKEY'
+ public_deps='rpccommon NDR_BACKUPKEY'
)
bld.SAMBA_SUBSYSTEM('RPC_NDR_DNSP',
source='gen_ndr/ndr_dnsp_c.c',
- public_deps='dcerpc NDR_DNSP'
+ public_deps='rpccommon NDR_DNSP'
)
# a grouping library for NDR subsystems that may be used by more than one target
@@ -555,14 +568,17 @@ bld.SAMBA_LIBRARY('ndr-samba',
# a grouping library for RPC_NDR subsystems that may be used by more than one target
bld.SAMBA_LIBRARY('dcerpc-samba',
- source=[],
- deps='RPC_NDR_DRSUAPI RPC_NDR_LSA RPC_NDR_WINREG',
- private_library=True,
- grouping_library=True
- )
+ source='',
+ deps='''RPC_NDR_LSA RPC_NDR_SAMR RPC_NDR_NETLOGON RPC_NDR_EVENTLOG RPC_NDR_DFS
+ RPC_NDR_NTSVCS RPC_NDR_SVCCTL RPC_NDR_INITSHUTDOWN RPC_NDR_WKSSVC RPC_NDR_SRVSVC RPC_NDR_WINREG
+ RPC_NDR_ECHO RPC_NDR_EPMAPPER RPC_NDR_ATSVC RPC_NDR_SPOOLSS''',
+ public_deps='ndr-standard',
+ private_library=True,
+ grouping_library=True
+ )
bld.SAMBA_LIBRARY('ndr',
- source='ndr/ndr_string.c ndr/ndr_basic.c ndr/uuid.c ndr/ndr.c ndr/ndr_misc.c gen_ndr/ndr_misc.c',
+ source='ndr/ndr_string.c ndr/ndr_basic.c ndr/uuid.c ndr/ndr.c ndr/ndr_misc.c gen_ndr/ndr_misc.c ndr/util.c',
pc_files='ndr.pc',
public_deps='errors talloc samba-util',
public_headers='gen_ndr/misc.h gen_ndr/ndr_misc.h ndr/libndr.h:ndr.h',