[SCM] Samba Shared Repository - branch master updated - 0c840bd8d2f650e805bd7d03c2b3fe530b431a4f

Jelmer Vernooij jelmer at samba.org
Wed Oct 15 13:58:35 GMT 2008


The branch, master has been updated
       via  0c840bd8d2f650e805bd7d03c2b3fe530b431a4f (commit)
      from  760dfa76d9c912fd352e26be9be8a3d567f12375 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 0c840bd8d2f650e805bd7d03c2b3fe530b431a4f
Author: Jelmer Vernooij <jelmer at samba.org>
Date:   Wed Oct 15 15:57:39 2008 +0200

    Share xattr implementation.

-----------------------------------------------------------------------

Summary of changes:
 {source4/librpc => librpc}/idl/xattr.idl |    6 +
 source3/Makefile.in                      |    2 +-
 source3/include/proto.h                  |    9 -
 source3/librpc/gen_ndr/ndr_xattr.c       |  492 ++++++++++++++++++++++++++++--
 source3/librpc/gen_ndr/ndr_xattr.h       |   17 +-
 source3/librpc/gen_ndr/xattr.h           |   63 ++++-
 source3/librpc/idl/xattr.idl             |   54 ----
 source3/modules/vfs_xattr_tdb.c          |   64 ++--
 8 files changed, 582 insertions(+), 125 deletions(-)
 rename {source4/librpc => librpc}/idl/xattr.idl (95%)
 delete mode 100644 source3/librpc/idl/xattr.idl


Changeset truncated at 500 lines:

diff --git a/source4/librpc/idl/xattr.idl b/librpc/idl/xattr.idl
similarity index 95%
rename from source4/librpc/idl/xattr.idl
rename to librpc/idl/xattr.idl
index ba0123a..c1af479 100644
--- a/source4/librpc/idl/xattr.idl
+++ b/librpc/idl/xattr.idl
@@ -75,6 +75,12 @@ interface xattr
 		[size_is(num_eas)] xattr_EA *eas;
 	} xattr_DosEAs;
 
+	/* Slightly different version, used by the vfs_xattr_tdb module */
+	typedef [public] struct {
+		uint32 num_eas;
+		xattr_EA eas[num_eas];
+	} tdb_xattrs;
+
 	/* we store stream information in this xattr structure. Then
 	   the streams themselves are stored in
 	   user.DosStream.STREAMNAME or in external files, according
diff --git a/source3/Makefile.in b/source3/Makefile.in
index 46fa97b..e3fee9a 100644
--- a/source3/Makefile.in
+++ b/source3/Makefile.in
@@ -1204,7 +1204,7 @@ samba3-idl::
 		librpc/idl/initshutdown.idl librpc/idl/srvsvc.idl ../librpc/idl/svcctl.idl \
 		librpc/idl/eventlog.idl librpc/idl/wkssvc.idl librpc/idl/netlogon.idl \
 		../librpc/idl/notify.idl ../librpc/idl/epmapper.idl librpc/idl/messaging.idl \
-		librpc/idl/xattr.idl ../librpc/idl/misc.idl librpc/idl/samr.idl \
+		../librpc/idl/xattr.idl ../librpc/idl/misc.idl librpc/idl/samr.idl \
 		../librpc/idl/security.idl ../librpc/idl/dssetup.idl librpc/idl/krb5pac.idl \
 		../librpc/idl/ntsvcs.idl librpc/idl/libnetapi.idl librpc/idl/drsuapi.idl \
 		librpc/idl/drsblobs.idl librpc/idl/nbt.idl
diff --git a/source3/include/proto.h b/source3/include/proto.h
index 8f2c813..180ae1a 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -3677,15 +3677,6 @@ _PUBLIC_ void ndr_print_wkssvc_NetrRemoveAlternateComputerName(struct ndr_print
 _PUBLIC_ void ndr_print_wkssvc_NetrSetPrimaryComputername(struct ndr_print *ndr, const char *name, int flags, const struct wkssvc_NetrSetPrimaryComputername *r);
 _PUBLIC_ void ndr_print_wkssvc_NetrEnumerateComputerNames(struct ndr_print *ndr, const char *name, int flags, const struct wkssvc_NetrEnumerateComputerNames *r);
 
-/* The following definitions come from librpc/gen_ndr/ndr_xattr.c  */
-
-_PUBLIC_ enum ndr_err_code ndr_push_tdb_xattr(struct ndr_push *ndr, int ndr_flags, const struct tdb_xattr *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_tdb_xattr(struct ndr_pull *ndr, int ndr_flags, struct tdb_xattr *r);
-_PUBLIC_ void ndr_print_tdb_xattr(struct ndr_print *ndr, const char *name, const struct tdb_xattr *r);
-_PUBLIC_ enum ndr_err_code ndr_push_tdb_xattrs(struct ndr_push *ndr, int ndr_flags, const struct tdb_xattrs *r);
-_PUBLIC_ enum ndr_err_code ndr_pull_tdb_xattrs(struct ndr_pull *ndr, int ndr_flags, struct tdb_xattrs *r);
-_PUBLIC_ void ndr_print_tdb_xattrs(struct ndr_print *ndr, const char *name, const struct tdb_xattrs *r);
-
 /* The following definitions come from librpc/gen_ndr/srv_dfs.c  */
 
 void netdfs_get_pipe_fns(struct api_struct **fns, int *n_fns);
diff --git a/source3/librpc/gen_ndr/ndr_xattr.c b/source3/librpc/gen_ndr/ndr_xattr.c
index 9236983..0e9dda9 100644
--- a/source3/librpc/gen_ndr/ndr_xattr.c
+++ b/source3/librpc/gen_ndr/ndr_xattr.c
@@ -3,7 +3,244 @@
 #include "includes.h"
 #include "librpc/gen_ndr/ndr_xattr.h"
 
-_PUBLIC_ enum ndr_err_code ndr_push_tdb_xattr(struct ndr_push *ndr, int ndr_flags, const struct tdb_xattr *r)
+#include "librpc/gen_ndr/ndr_security.h"
+static enum ndr_err_code ndr_push_xattr_DosInfo1(struct ndr_push *ndr, int ndr_flags, const struct xattr_DosInfo1 *r)
+{
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_push_align(ndr, 4));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->attrib));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->ea_size));
+		NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, r->size));
+		NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, r->alloc_size));
+		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->create_time));
+		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->change_time));
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_xattr_DosInfo1(struct ndr_pull *ndr, int ndr_flags, struct xattr_DosInfo1 *r)
+{
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_pull_align(ndr, 4));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->attrib));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->ea_size));
+		NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->size));
+		NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->alloc_size));
+		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->create_time));
+		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->change_time));
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_xattr_DosInfo1(struct ndr_print *ndr, const char *name, const struct xattr_DosInfo1 *r)
+{
+	ndr_print_struct(ndr, name, "xattr_DosInfo1");
+	ndr->depth++;
+	ndr_print_uint32(ndr, "attrib", r->attrib);
+	ndr_print_uint32(ndr, "ea_size", r->ea_size);
+	ndr_print_udlong(ndr, "size", r->size);
+	ndr_print_udlong(ndr, "alloc_size", r->alloc_size);
+	ndr_print_NTTIME(ndr, "create_time", r->create_time);
+	ndr_print_NTTIME(ndr, "change_time", r->change_time);
+	ndr->depth--;
+}
+
+static enum ndr_err_code ndr_push_xattr_DosInfo2Old(struct ndr_push *ndr, int ndr_flags, const struct xattr_DosInfo2Old *r)
+{
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_push_align(ndr, 4));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->flags));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->attrib));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->ea_size));
+		NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, r->size));
+		NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, r->alloc_size));
+		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->create_time));
+		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->change_time));
+		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->write_time));
+		{
+			uint32_t _flags_save_string = ndr->flags;
+			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_NULLTERM);
+			NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->name));
+			ndr->flags = _flags_save_string;
+		}
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_xattr_DosInfo2Old(struct ndr_pull *ndr, int ndr_flags, struct xattr_DosInfo2Old *r)
+{
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_pull_align(ndr, 4));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->flags));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->attrib));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->ea_size));
+		NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->size));
+		NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->alloc_size));
+		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->create_time));
+		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->change_time));
+		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->write_time));
+		{
+			uint32_t _flags_save_string = ndr->flags;
+			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_NULLTERM);
+			NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->name));
+			ndr->flags = _flags_save_string;
+		}
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_xattr_DosInfo2Old(struct ndr_print *ndr, const char *name, const struct xattr_DosInfo2Old *r)
+{
+	ndr_print_struct(ndr, name, "xattr_DosInfo2Old");
+	ndr->depth++;
+	ndr_print_uint32(ndr, "flags", r->flags);
+	ndr_print_uint32(ndr, "attrib", r->attrib);
+	ndr_print_uint32(ndr, "ea_size", r->ea_size);
+	ndr_print_udlong(ndr, "size", r->size);
+	ndr_print_udlong(ndr, "alloc_size", r->alloc_size);
+	ndr_print_NTTIME(ndr, "create_time", r->create_time);
+	ndr_print_NTTIME(ndr, "change_time", r->change_time);
+	ndr_print_NTTIME(ndr, "write_time", r->write_time);
+	ndr_print_string(ndr, "name", r->name);
+	ndr->depth--;
+}
+
+static enum ndr_err_code ndr_push_xattr_DosInfo(struct ndr_push *ndr, int ndr_flags, const union xattr_DosInfo *r)
+{
+	if (ndr_flags & NDR_SCALARS) {
+		int level = ndr_push_get_switch_value(ndr, r);
+		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, level));
+		switch (level) {
+			case 1: {
+				NDR_CHECK(ndr_push_xattr_DosInfo1(ndr, NDR_SCALARS, &r->info1));
+			break; }
+
+			case 2: {
+				NDR_CHECK(ndr_push_xattr_DosInfo2Old(ndr, NDR_SCALARS, &r->oldinfo2));
+			break; }
+
+			default:
+				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
+		}
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+		int level = ndr_push_get_switch_value(ndr, r);
+		switch (level) {
+			case 1:
+			break;
+
+			case 2:
+			break;
+
+			default:
+				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
+		}
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_xattr_DosInfo(struct ndr_pull *ndr, int ndr_flags, union xattr_DosInfo *r)
+{
+	int level;
+	uint16_t _level;
+	level = ndr_pull_get_switch_value(ndr, r);
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &_level));
+		if (_level != level) {
+			return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
+		}
+		switch (level) {
+			case 1: {
+				NDR_CHECK(ndr_pull_xattr_DosInfo1(ndr, NDR_SCALARS, &r->info1));
+			break; }
+
+			case 2: {
+				NDR_CHECK(ndr_pull_xattr_DosInfo2Old(ndr, NDR_SCALARS, &r->oldinfo2));
+			break; }
+
+			default:
+				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
+		}
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+		switch (level) {
+			case 1:
+			break;
+
+			case 2:
+			break;
+
+			default:
+				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
+		}
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_xattr_DosInfo(struct ndr_print *ndr, const char *name, const union xattr_DosInfo *r)
+{
+	int level;
+	level = ndr_print_get_switch_value(ndr, r);
+	ndr_print_union(ndr, name, level, "xattr_DosInfo");
+	switch (level) {
+		case 1:
+			ndr_print_xattr_DosInfo1(ndr, "info1", &r->info1);
+		break;
+
+		case 2:
+			ndr_print_xattr_DosInfo2Old(ndr, "oldinfo2", &r->oldinfo2);
+		break;
+
+		default:
+			ndr_print_bad_level(ndr, name, level);
+	}
+}
+
+_PUBLIC_ enum ndr_err_code ndr_push_xattr_DosAttrib(struct ndr_push *ndr, int ndr_flags, const struct xattr_DosAttrib *r)
+{
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_push_align(ndr, 4));
+		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->version));
+		NDR_CHECK(ndr_push_set_switch_value(ndr, &r->info, r->version));
+		NDR_CHECK(ndr_push_xattr_DosInfo(ndr, NDR_SCALARS, &r->info));
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ enum ndr_err_code ndr_pull_xattr_DosAttrib(struct ndr_pull *ndr, int ndr_flags, struct xattr_DosAttrib *r)
+{
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_pull_align(ndr, 4));
+		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->version));
+		NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->info, r->version));
+		NDR_CHECK(ndr_pull_xattr_DosInfo(ndr, NDR_SCALARS, &r->info));
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_xattr_DosAttrib(struct ndr_print *ndr, const char *name, const struct xattr_DosAttrib *r)
+{
+	ndr_print_struct(ndr, name, "xattr_DosAttrib");
+	ndr->depth++;
+	ndr_print_uint16(ndr, "version", r->version);
+	ndr_print_set_switch_value(ndr, &r->info, r->version);
+	ndr_print_xattr_DosInfo(ndr, "info", &r->info);
+	ndr->depth--;
+}
+
+static enum ndr_err_code ndr_push_xattr_EA(struct ndr_push *ndr, int ndr_flags, const struct xattr_EA *r)
 {
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_push_align(ndr, 4));
@@ -20,7 +257,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_tdb_xattr(struct ndr_push *ndr, int ndr_flag
 	return NDR_ERR_SUCCESS;
 }
 
-_PUBLIC_ enum ndr_err_code ndr_pull_tdb_xattr(struct ndr_pull *ndr, int ndr_flags, struct tdb_xattr *r)
+static enum ndr_err_code ndr_pull_xattr_EA(struct ndr_pull *ndr, int ndr_flags, struct xattr_EA *r)
 {
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_pull_align(ndr, 4));
@@ -37,23 +274,103 @@ _PUBLIC_ enum ndr_err_code ndr_pull_tdb_xattr(struct ndr_pull *ndr, int ndr_flag
 	return NDR_ERR_SUCCESS;
 }
 
-_PUBLIC_ void ndr_print_tdb_xattr(struct ndr_print *ndr, const char *name, const struct tdb_xattr *r)
+_PUBLIC_ void ndr_print_xattr_EA(struct ndr_print *ndr, const char *name, const struct xattr_EA *r)
 {
-	ndr_print_struct(ndr, name, "tdb_xattr");
+	ndr_print_struct(ndr, name, "xattr_EA");
 	ndr->depth++;
 	ndr_print_string(ndr, "name", r->name);
 	ndr_print_DATA_BLOB(ndr, "value", r->value);
 	ndr->depth--;
 }
 
+_PUBLIC_ enum ndr_err_code ndr_push_xattr_DosEAs(struct ndr_push *ndr, int ndr_flags, const struct xattr_DosEAs *r)
+{
+	uint32_t cntr_eas_1;
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_push_align(ndr, 4));
+		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->num_eas));
+		NDR_CHECK(ndr_push_unique_ptr(ndr, r->eas));
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+		if (r->eas) {
+			NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_eas));
+			for (cntr_eas_1 = 0; cntr_eas_1 < r->num_eas; cntr_eas_1++) {
+				NDR_CHECK(ndr_push_xattr_EA(ndr, NDR_SCALARS, &r->eas[cntr_eas_1]));
+			}
+		}
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ enum ndr_err_code ndr_pull_xattr_DosEAs(struct ndr_pull *ndr, int ndr_flags, struct xattr_DosEAs *r)
+{
+	uint32_t _ptr_eas;
+	uint32_t cntr_eas_1;
+	TALLOC_CTX *_mem_save_eas_0;
+	TALLOC_CTX *_mem_save_eas_1;
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_pull_align(ndr, 4));
+		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->num_eas));
+		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_eas));
+		if (_ptr_eas) {
+			NDR_PULL_ALLOC(ndr, r->eas);
+		} else {
+			r->eas = NULL;
+		}
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+		if (r->eas) {
+			_mem_save_eas_0 = NDR_PULL_GET_MEM_CTX(ndr);
+			NDR_PULL_SET_MEM_CTX(ndr, r->eas, 0);
+			NDR_CHECK(ndr_pull_array_size(ndr, &r->eas));
+			NDR_PULL_ALLOC_N(ndr, r->eas, ndr_get_array_size(ndr, &r->eas));
+			_mem_save_eas_1 = NDR_PULL_GET_MEM_CTX(ndr);
+			NDR_PULL_SET_MEM_CTX(ndr, r->eas, 0);
+			for (cntr_eas_1 = 0; cntr_eas_1 < r->num_eas; cntr_eas_1++) {
+				NDR_CHECK(ndr_pull_xattr_EA(ndr, NDR_SCALARS, &r->eas[cntr_eas_1]));
+			}
+			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_eas_1, 0);
+			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_eas_0, 0);
+		}
+		if (r->eas) {
+			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->eas, r->num_eas));
+		}
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_xattr_DosEAs(struct ndr_print *ndr, const char *name, const struct xattr_DosEAs *r)
+{
+	uint32_t cntr_eas_1;
+	ndr_print_struct(ndr, name, "xattr_DosEAs");
+	ndr->depth++;
+	ndr_print_uint16(ndr, "num_eas", r->num_eas);
+	ndr_print_ptr(ndr, "eas", r->eas);
+	ndr->depth++;
+	if (r->eas) {
+		ndr->print(ndr, "%s: ARRAY(%d)", "eas", (int)r->num_eas);
+		ndr->depth++;
+		for (cntr_eas_1=0;cntr_eas_1<r->num_eas;cntr_eas_1++) {
+			char *idx_1=NULL;
+			if (asprintf(&idx_1, "[%d]", cntr_eas_1) != -1) {
+				ndr_print_xattr_EA(ndr, "eas", &r->eas[cntr_eas_1]);
+				free(idx_1);
+			}
+		}
+		ndr->depth--;
+	}
+	ndr->depth--;
+	ndr->depth--;
+}
+
 _PUBLIC_ enum ndr_err_code ndr_push_tdb_xattrs(struct ndr_push *ndr, int ndr_flags, const struct tdb_xattrs *r)
 {
-	uint32_t cntr_xattrs_0;
+	uint32_t cntr_eas_0;
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_push_align(ndr, 4));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_xattrs));
-		for (cntr_xattrs_0 = 0; cntr_xattrs_0 < r->num_xattrs; cntr_xattrs_0++) {
-			NDR_CHECK(ndr_push_tdb_xattr(ndr, NDR_SCALARS, &r->xattrs[cntr_xattrs_0]));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_eas));
+		for (cntr_eas_0 = 0; cntr_eas_0 < r->num_eas; cntr_eas_0++) {
+			NDR_CHECK(ndr_push_xattr_EA(ndr, NDR_SCALARS, &r->eas[cntr_eas_0]));
 		}
 	}
 	if (ndr_flags & NDR_BUFFERS) {
@@ -63,18 +380,18 @@ _PUBLIC_ enum ndr_err_code ndr_push_tdb_xattrs(struct ndr_push *ndr, int ndr_fla
 
 _PUBLIC_ enum ndr_err_code ndr_pull_tdb_xattrs(struct ndr_pull *ndr, int ndr_flags, struct tdb_xattrs *r)
 {
-	uint32_t cntr_xattrs_0;
-	TALLOC_CTX *_mem_save_xattrs_0;
+	uint32_t cntr_eas_0;
+	TALLOC_CTX *_mem_save_eas_0;
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_pull_align(ndr, 4));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_xattrs));
-		NDR_PULL_ALLOC_N(ndr, r->xattrs, r->num_xattrs);
-		_mem_save_xattrs_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->xattrs, 0);
-		for (cntr_xattrs_0 = 0; cntr_xattrs_0 < r->num_xattrs; cntr_xattrs_0++) {
-			NDR_CHECK(ndr_pull_tdb_xattr(ndr, NDR_SCALARS, &r->xattrs[cntr_xattrs_0]));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_eas));
+		NDR_PULL_ALLOC_N(ndr, r->eas, r->num_eas);
+		_mem_save_eas_0 = NDR_PULL_GET_MEM_CTX(ndr);
+		NDR_PULL_SET_MEM_CTX(ndr, r->eas, 0);
+		for (cntr_eas_0 = 0; cntr_eas_0 < r->num_eas; cntr_eas_0++) {
+			NDR_CHECK(ndr_pull_xattr_EA(ndr, NDR_SCALARS, &r->eas[cntr_eas_0]));
 		}
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_xattrs_0, 0);
+		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_eas_0, 0);
 	}
 	if (ndr_flags & NDR_BUFFERS) {
 	}
@@ -83,16 +400,16 @@ _PUBLIC_ enum ndr_err_code ndr_pull_tdb_xattrs(struct ndr_pull *ndr, int ndr_fla
 
 _PUBLIC_ void ndr_print_tdb_xattrs(struct ndr_print *ndr, const char *name, const struct tdb_xattrs *r)
 {
-	uint32_t cntr_xattrs_0;
+	uint32_t cntr_eas_0;
 	ndr_print_struct(ndr, name, "tdb_xattrs");
 	ndr->depth++;
-	ndr_print_uint32(ndr, "num_xattrs", r->num_xattrs);
-	ndr->print(ndr, "%s: ARRAY(%d)", "xattrs", (int)r->num_xattrs);
+	ndr_print_uint32(ndr, "num_eas", r->num_eas);
+	ndr->print(ndr, "%s: ARRAY(%d)", "eas", (int)r->num_eas);
 	ndr->depth++;
-	for (cntr_xattrs_0=0;cntr_xattrs_0<r->num_xattrs;cntr_xattrs_0++) {
+	for (cntr_eas_0=0;cntr_eas_0<r->num_eas;cntr_eas_0++) {
 		char *idx_0=NULL;
-		if (asprintf(&idx_0, "[%d]", cntr_xattrs_0) != -1) {
-			ndr_print_tdb_xattr(ndr, "xattrs", &r->xattrs[cntr_xattrs_0]);
+		if (asprintf(&idx_0, "[%d]", cntr_eas_0) != -1) {
+			ndr_print_xattr_EA(ndr, "eas", &r->eas[cntr_eas_0]);
 			free(idx_0);
 		}
 	}
@@ -100,6 +417,135 @@ _PUBLIC_ void ndr_print_tdb_xattrs(struct ndr_print *ndr, const char *name, cons
 	ndr->depth--;
 }
 
+static enum ndr_err_code ndr_push_xattr_DosStream(struct ndr_push *ndr, int ndr_flags, const struct xattr_DosStream *r)
+{
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_push_align(ndr, 4));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->flags));
+		NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, r->size));
+		NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, r->alloc_size));
+		{
+			uint32_t _flags_save_string = ndr->flags;
+			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_NULLTERM);
+			NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->name));
+			ndr->flags = _flags_save_string;
+		}
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_xattr_DosStream(struct ndr_pull *ndr, int ndr_flags, struct xattr_DosStream *r)
+{
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_pull_align(ndr, 4));


-- 
Samba Shared Repository


More information about the samba-cvs mailing list