[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha8-1446-gac77482

Andrew Tridgell tridge at samba.org
Mon Sep 7 19:53:26 MDT 2009


The branch, master has been updated
       via  ac77482e871ee752ade1c56bff94915f6c0a219b (commit)
       via  5cd6b460ff763615d1b7ce38f52b7d6fc9e20867 (commit)
       via  9a3db7e331098292d5c2e724127c63f5583e5c74 (commit)
       via  91805627c9b845cfb47d2d8af9535b2929f093f5 (commit)
       via  783cde79667fbc91213733b0e85e596fc8173cea (commit)
       via  c28096636abe2133f9e4dbded44289a275d16799 (commit)
       via  3ad4c9db207da30266613ebaebe27448fddbf51d (commit)
       via  61c3601e509afbd2f120b728e64accbf19ee0518 (commit)
       via  50b16891c4e557d80fd4bfd858660e7331be2d3e (commit)
       via  e6816715b7563250ce1ce1b0f65d470edcc4130c (commit)
      from  374e5937cde797ff36447c38f38ab77c379c19d8 (commit)

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


- Log -----------------------------------------------------------------
commit ac77482e871ee752ade1c56bff94915f6c0a219b
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 8 11:51:27 2009 +1000

    s4: commit generated DRS changes

commit 5cd6b460ff763615d1b7ce38f52b7d6fc9e20867
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 8 11:51:01 2009 +1000

    s4: added the structure for repsTo
    
    This structure is stored in NDR format in the repsTo attribute of each
    partition. It is updated by the DSUpdateRefs DSRUAPI call

commit 9a3db7e331098292d5c2e724127c63f5583e5c74
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 8 11:50:14 2009 +1000

    s4: fixed updaterefs options bitmap

commit 91805627c9b845cfb47d2d8af9535b2929f093f5
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 8 11:49:28 2009 +1000

    s4: implemented server side of DSUpdateRefs call
    
    This call is made by DCs to tell us we should notify them of directory
    changes

commit 783cde79667fbc91213733b0e85e596fc8173cea
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 8 11:47:36 2009 +1000

    s4/ldb: fixed spelling

commit c28096636abe2133f9e4dbded44289a275d16799
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 8 11:47:11 2009 +1000

    s4: 'index' is a libc function

commit 3ad4c9db207da30266613ebaebe27448fddbf51d
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 8 11:46:49 2009 +1000

    s4: fixed a unsigned printf warnings

commit 61c3601e509afbd2f120b728e64accbf19ee0518
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 8 11:46:27 2009 +1000

    s4: removed an unused variable

commit 50b16891c4e557d80fd4bfd858660e7331be2d3e
Author: Andrew Tridgell <tridge at samba.org>
Date:   Tue Sep 8 11:46:08 2009 +1000

    s4: fixed some shadowed variable warnings

commit e6816715b7563250ce1ce1b0f65d470edcc4130c
Author: Anatoliy Atanasov <anatoliy.atanasov at postpath.com>
Date:   Thu Sep 3 18:37:31 2009 +0300

    Fill the meta data vector in the responce struct.

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

Summary of changes:
 librpc/gen_ndr/drsblobs.h                     |   31 +++
 librpc/gen_ndr/drsuapi.h                      |    4 +-
 librpc/gen_ndr/ndr_drsblobs.c                 |  232 +++++++++++++++++++++
 librpc/gen_ndr/ndr_drsblobs.h                 |    7 +
 librpc/gen_ndr/ndr_drsuapi.c                  |    4 +-
 librpc/idl/drsblobs.idl                       |   32 +++
 librpc/idl/drsuapi.idl                        |    5 +-
 source4/lib/ldb/include/ldb.h                 |    4 +-
 source4/libnet/libnet_become_dc.c             |    2 +-
 source4/ntvfs/cifs/vfs_cifs.c                 |    6 +-
 source4/ntvfs/cifs_posix_cli/vfs_cifs_posix.c |    6 +-
 source4/ntvfs/smb2/vfs_smb2.c                 |    6 +-
 source4/rpc_server/config.mk                  |    4 +-
 source4/rpc_server/dcerpc_server.c            |    2 -
 source4/rpc_server/dcesrv_auth.c              |    6 +-
 source4/rpc_server/drsuapi/dcesrv_drsuapi.c   |   49 +++--
 source4/rpc_server/drsuapi/dcesrv_drsuapi.h   |    9 +
 source4/rpc_server/drsuapi/drsutil.c          |   47 ++++
 source4/rpc_server/drsuapi/updaterefs.c       |  278 +++++++++++++++++++++++++
 source4/torture/smb2/dir.c                    |    4 +-
 20 files changed, 698 insertions(+), 40 deletions(-)
 create mode 100644 source4/rpc_server/drsuapi/drsutil.c
 create mode 100644 source4/rpc_server/drsuapi/updaterefs.c


Changeset truncated at 500 lines:

diff --git a/librpc/gen_ndr/drsblobs.h b/librpc/gen_ndr/drsblobs.h
index 190e012..e2781d4 100644
--- a/librpc/gen_ndr/drsblobs.h
+++ b/librpc/gen_ndr/drsblobs.h
@@ -128,6 +128,37 @@ struct prefixMapBlob {
 	union prefixMapCtr ctr;/* [switch_is(version)] */
 }/* [public] */;
 
+enum repsToVersion
+#ifndef USE_UINT_ENUMS
+ {
+	REPSTO_VERSION1=1
+}
+#else
+ { __donnot_use_enum_repsToVersion=0x7FFFFFFF}
+#define REPSTO_VERSION1 ( 1 )
+#endif
+;
+
+struct repsToDest {
+	const char * dest_dsa_dns_name;/* [flag(LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_NULLTERM)] */
+	struct GUID dest_guid;
+	uint32_t options;
+};
+
+struct repsTov1 {
+	uint32_t count;
+	struct repsToDest *reps;/* [size_is(count)] */
+};
+
+union repsToCtr {
+	struct repsTov1 r;/* [case(REPSTO_VERSION1)] */
+}/* [nodiscriminant] */;
+
+struct repsTo {
+	enum repsToVersion version;
+	union repsToCtr ctr;/* [switch_is(version)] */
+}/* [public] */;
+
 union ldapControlDirSyncExtra {
 	struct replUpToDateVectorBlob uptodateness_vector;/* [default] */
 }/* [gensize,nodiscriminant] */;
diff --git a/librpc/gen_ndr/drsuapi.h b/librpc/gen_ndr/drsuapi.h
index 8f9b165..fc1da82 100644
--- a/librpc/gen_ndr/drsuapi.h
+++ b/librpc/gen_ndr/drsuapi.h
@@ -648,10 +648,10 @@ union drsuapi_DsGetNCChangesCtr {
 
 /* bitmap drsuapi_DsReplicaUpdateRefsOptions */
 #define DRSUAPI_DS_REPLICA_UPDATE_ASYNCHRONOUS_OPERATION ( 0x00000001 )
-#define DRSUAPI_DS_REPLICA_UPDATE_WRITEABLE ( 0x00000002 )
+#define DRSUAPI_DS_REPLICA_UPDATE_GETCHG_CHECK ( 0x00000002 )
 #define DRSUAPI_DS_REPLICA_UPDATE_ADD_REFERENCE ( 0x00000004 )
 #define DRSUAPI_DS_REPLICA_UPDATE_DELETE_REFERENCE ( 0x00000008 )
-#define DRSUAPI_DS_REPLICA_UPDATE_0x00000010 ( 0x00000010 )
+#define DRSUAPI_DS_REPLICA_UPDATE_WRITEABLE ( 0x00000010 )
 
 struct drsuapi_DsReplicaUpdateRefsRequest1 {
 	struct drsuapi_DsReplicaObjectIdentifier *naming_context;/* [ref] */
diff --git a/librpc/gen_ndr/ndr_drsblobs.c b/librpc/gen_ndr/ndr_drsblobs.c
index 020d5b3..497140f 100644
--- a/librpc/gen_ndr/ndr_drsblobs.c
+++ b/librpc/gen_ndr/ndr_drsblobs.c
@@ -1012,6 +1012,238 @@ _PUBLIC_ void ndr_print_prefixMapBlob(struct ndr_print *ndr, const char *name, c
 	ndr->depth--;
 }
 
+static enum ndr_err_code ndr_push_repsToVersion(struct ndr_push *ndr, int ndr_flags, enum repsToVersion r)
+{
+	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_repsToVersion(struct ndr_pull *ndr, int ndr_flags, enum repsToVersion *r)
+{
+	uint32_t v;
+	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
+	*r = v;
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_repsToVersion(struct ndr_print *ndr, const char *name, enum repsToVersion r)
+{
+	const char *val = NULL;
+
+	switch (r) {
+		case REPSTO_VERSION1: val = "REPSTO_VERSION1"; break;
+	}
+	ndr_print_enum(ndr, name, "ENUM", val, r);
+}
+
+static enum ndr_err_code ndr_push_repsToDest(struct ndr_push *ndr, int ndr_flags, const struct repsToDest *r)
+{
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_push_align(ndr, 4));
+		{
+			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->dest_dsa_dns_name));
+			ndr->flags = _flags_save_string;
+		}
+		NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->dest_guid));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->options));
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_repsToDest(struct ndr_pull *ndr, int ndr_flags, struct repsToDest *r)
+{
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_pull_align(ndr, 4));
+		{
+			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->dest_dsa_dns_name));
+			ndr->flags = _flags_save_string;
+		}
+		NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->dest_guid));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->options));
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_repsToDest(struct ndr_print *ndr, const char *name, const struct repsToDest *r)
+{
+	ndr_print_struct(ndr, name, "repsToDest");
+	ndr->depth++;
+	ndr_print_string(ndr, "dest_dsa_dns_name", r->dest_dsa_dns_name);
+	ndr_print_GUID(ndr, "dest_guid", &r->dest_guid);
+	ndr_print_uint32(ndr, "options", r->options);
+	ndr->depth--;
+}
+
+static enum ndr_err_code ndr_push_repsTov1(struct ndr_push *ndr, int ndr_flags, const struct repsTov1 *r)
+{
+	uint32_t cntr_reps_0;
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
+		NDR_CHECK(ndr_push_align(ndr, 4));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
+		for (cntr_reps_0 = 0; cntr_reps_0 < r->count; cntr_reps_0++) {
+			NDR_CHECK(ndr_push_repsToDest(ndr, NDR_SCALARS, &r->reps[cntr_reps_0]));
+		}
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_repsTov1(struct ndr_pull *ndr, int ndr_flags, struct repsTov1 *r)
+{
+	uint32_t cntr_reps_0;
+	TALLOC_CTX *_mem_save_reps_0;
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_pull_array_size(ndr, &r->reps));
+		NDR_CHECK(ndr_pull_align(ndr, 4));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
+		NDR_PULL_ALLOC_N(ndr, r->reps, ndr_get_array_size(ndr, &r->reps));
+		_mem_save_reps_0 = NDR_PULL_GET_MEM_CTX(ndr);
+		NDR_PULL_SET_MEM_CTX(ndr, r->reps, 0);
+		for (cntr_reps_0 = 0; cntr_reps_0 < r->count; cntr_reps_0++) {
+			NDR_CHECK(ndr_pull_repsToDest(ndr, NDR_SCALARS, &r->reps[cntr_reps_0]));
+		}
+		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_reps_0, 0);
+		if (r->reps) {
+			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->reps, r->count));
+		}
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_repsTov1(struct ndr_print *ndr, const char *name, const struct repsTov1 *r)
+{
+	uint32_t cntr_reps_0;
+	ndr_print_struct(ndr, name, "repsTov1");
+	ndr->depth++;
+	ndr_print_uint32(ndr, "count", r->count);
+	ndr->print(ndr, "%s: ARRAY(%d)", "reps", (int)r->count);
+	ndr->depth++;
+	for (cntr_reps_0=0;cntr_reps_0<r->count;cntr_reps_0++) {
+		char *idx_0=NULL;
+		if (asprintf(&idx_0, "[%d]", cntr_reps_0) != -1) {
+			ndr_print_repsToDest(ndr, "reps", &r->reps[cntr_reps_0]);
+			free(idx_0);
+		}
+	}
+	ndr->depth--;
+	ndr->depth--;
+}
+
+static enum ndr_err_code ndr_push_repsToCtr(struct ndr_push *ndr, int ndr_flags, const union repsToCtr *r)
+{
+	if (ndr_flags & NDR_SCALARS) {
+		int level = ndr_push_get_switch_value(ndr, r);
+		switch (level) {
+			case REPSTO_VERSION1: {
+				NDR_CHECK(ndr_push_repsTov1(ndr, NDR_SCALARS, &r->r));
+			break; }
+
+			default:
+				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
+		}
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+		int level = ndr_push_get_switch_value(ndr, r);
+		switch (level) {
+			case REPSTO_VERSION1:
+			break;
+
+			default:
+				return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
+		}
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_repsToCtr(struct ndr_pull *ndr, int ndr_flags, union repsToCtr *r)
+{
+	int level;
+	level = ndr_pull_get_switch_value(ndr, r);
+	if (ndr_flags & NDR_SCALARS) {
+		switch (level) {
+			case REPSTO_VERSION1: {
+				NDR_CHECK(ndr_pull_repsTov1(ndr, NDR_SCALARS, &r->r));
+			break; }
+
+			default:
+				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
+		}
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+		switch (level) {
+			case REPSTO_VERSION1:
+			break;
+
+			default:
+				return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
+		}
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_repsToCtr(struct ndr_print *ndr, const char *name, const union repsToCtr *r)
+{
+	int level;
+	level = ndr_print_get_switch_value(ndr, r);
+	ndr_print_union(ndr, name, level, "repsToCtr");
+	switch (level) {
+		case REPSTO_VERSION1:
+			ndr_print_repsTov1(ndr, "r", &r->r);
+		break;
+
+		default:
+			ndr_print_bad_level(ndr, name, level);
+	}
+}
+
+_PUBLIC_ enum ndr_err_code ndr_push_repsTo(struct ndr_push *ndr, int ndr_flags, const struct repsTo *r)
+{
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_push_align(ndr, 4));
+		NDR_CHECK(ndr_push_repsToVersion(ndr, NDR_SCALARS, r->version));
+		NDR_CHECK(ndr_push_set_switch_value(ndr, &r->ctr, r->version));
+		NDR_CHECK(ndr_push_repsToCtr(ndr, NDR_SCALARS, &r->ctr));
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ enum ndr_err_code ndr_pull_repsTo(struct ndr_pull *ndr, int ndr_flags, struct repsTo *r)
+{
+	if (ndr_flags & NDR_SCALARS) {
+		NDR_CHECK(ndr_pull_align(ndr, 4));
+		NDR_CHECK(ndr_pull_repsToVersion(ndr, NDR_SCALARS, &r->version));
+		NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->ctr, r->version));
+		NDR_CHECK(ndr_pull_repsToCtr(ndr, NDR_SCALARS, &r->ctr));
+	}
+	if (ndr_flags & NDR_BUFFERS) {
+	}
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_repsTo(struct ndr_print *ndr, const char *name, const struct repsTo *r)
+{
+	ndr_print_struct(ndr, name, "repsTo");
+	ndr->depth++;
+	ndr_print_repsToVersion(ndr, "version", r->version);
+	ndr_print_set_switch_value(ndr, &r->ctr, r->version);
+	ndr_print_repsToCtr(ndr, "ctr", &r->ctr);
+	ndr->depth--;
+}
+
 static enum ndr_err_code ndr_push_ldapControlDirSyncExtra(struct ndr_push *ndr, int ndr_flags, const union ldapControlDirSyncExtra *r)
 {
 	if (ndr_flags & NDR_SCALARS) {
diff --git a/librpc/gen_ndr/ndr_drsblobs.h b/librpc/gen_ndr/ndr_drsblobs.h
index 27c13c8..e890e2c 100644
--- a/librpc/gen_ndr/ndr_drsblobs.h
+++ b/librpc/gen_ndr/ndr_drsblobs.h
@@ -75,6 +75,13 @@ void ndr_print_prefixMapCtr(struct ndr_print *ndr, const char *name, const union
 enum ndr_err_code ndr_push_prefixMapBlob(struct ndr_push *ndr, int ndr_flags, const struct prefixMapBlob *r);
 enum ndr_err_code ndr_pull_prefixMapBlob(struct ndr_pull *ndr, int ndr_flags, struct prefixMapBlob *r);
 void ndr_print_prefixMapBlob(struct ndr_print *ndr, const char *name, const struct prefixMapBlob *r);
+void ndr_print_repsToVersion(struct ndr_print *ndr, const char *name, enum repsToVersion r);
+void ndr_print_repsToDest(struct ndr_print *ndr, const char *name, const struct repsToDest *r);
+void ndr_print_repsTov1(struct ndr_print *ndr, const char *name, const struct repsTov1 *r);
+void ndr_print_repsToCtr(struct ndr_print *ndr, const char *name, const union repsToCtr *r);
+enum ndr_err_code ndr_push_repsTo(struct ndr_push *ndr, int ndr_flags, const struct repsTo *r);
+enum ndr_err_code ndr_pull_repsTo(struct ndr_pull *ndr, int ndr_flags, struct repsTo *r);
+void ndr_print_repsTo(struct ndr_print *ndr, const char *name, const struct repsTo *r);
 void ndr_print_ldapControlDirSyncExtra(struct ndr_print *ndr, const char *name, const union ldapControlDirSyncExtra *r);
 void ndr_print_ldapControlDirSyncBlob(struct ndr_print *ndr, const char *name, const struct ldapControlDirSyncBlob *r);
 enum ndr_err_code ndr_push_ldapControlDirSyncCookie(struct ndr_push *ndr, int ndr_flags, const struct ldapControlDirSyncCookie *r);
diff --git a/librpc/gen_ndr/ndr_drsuapi.c b/librpc/gen_ndr/ndr_drsuapi.c
index b709fd7..02de014 100644
--- a/librpc/gen_ndr/ndr_drsuapi.c
+++ b/librpc/gen_ndr/ndr_drsuapi.c
@@ -3509,10 +3509,10 @@ _PUBLIC_ void ndr_print_drsuapi_DsReplicaUpdateRefsOptions(struct ndr_print *ndr
 	ndr_print_uint32(ndr, name, r);
 	ndr->depth++;
 	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_UPDATE_ASYNCHRONOUS_OPERATION", DRSUAPI_DS_REPLICA_UPDATE_ASYNCHRONOUS_OPERATION, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_UPDATE_WRITEABLE", DRSUAPI_DS_REPLICA_UPDATE_WRITEABLE, r);
+	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_UPDATE_GETCHG_CHECK", DRSUAPI_DS_REPLICA_UPDATE_GETCHG_CHECK, r);
 	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_UPDATE_ADD_REFERENCE", DRSUAPI_DS_REPLICA_UPDATE_ADD_REFERENCE, r);
 	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_UPDATE_DELETE_REFERENCE", DRSUAPI_DS_REPLICA_UPDATE_DELETE_REFERENCE, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_UPDATE_0x00000010", DRSUAPI_DS_REPLICA_UPDATE_0x00000010, r);
+	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_DS_REPLICA_UPDATE_WRITEABLE", DRSUAPI_DS_REPLICA_UPDATE_WRITEABLE, r);
 	ndr->depth--;
 }
 
diff --git a/librpc/idl/drsblobs.idl b/librpc/idl/drsblobs.idl
index fb37500..8ec8458 100644
--- a/librpc/idl/drsblobs.idl
+++ b/librpc/idl/drsblobs.idl
@@ -174,6 +174,38 @@ interface drsblobs {
 		[in] prefixMapBlob blob
 		);
 
+
+	/*
+	 * repsTo structure. This is not sent over the wire so we are
+	 * free to choose our own format. It is updated by the
+	 * DRSUpdateRefs DRSUAPI call. This is stored in NDR format
+	 * in the root of each partition in the repsTo attribute
+	 */
+	typedef [v1_enum] enum {
+		REPSTO_VERSION1 = 1
+	} repsToVersion;
+
+	typedef struct {
+		utf8string dest_dsa_dns_name;
+		GUID dest_guid;
+		uint32 options;
+	} repsToDest;
+
+	typedef struct {
+		uint32 count;
+		[size_is(count)] repsToDest reps[];
+	} repsTov1;
+
+	typedef [nodiscriminant] union {
+		[case(REPSTO_VERSION1)] repsTov1 r;
+	} repsToCtr;
+
+	typedef [public] struct {
+		repsToVersion version;
+		[switch_is(version)] repsToCtr ctr;
+	} repsTo;
+	
+
 	/*
 	 * the cookie for the LDAP dirsync control
 	 */
diff --git a/librpc/idl/drsuapi.idl b/librpc/idl/drsuapi.idl
index 6ca870a..037d2a9 100644
--- a/librpc/idl/drsuapi.idl
+++ b/librpc/idl/drsuapi.idl
@@ -709,12 +709,13 @@ interface drsuapi
 
 	/*****************/
         /* Function 0x04 */
+	/* [MS-DRSR] 4.1.26 */
 	typedef bitmap {
 		DRSUAPI_DS_REPLICA_UPDATE_ASYNCHRONOUS_OPERATION	= 0x00000001,
-		DRSUAPI_DS_REPLICA_UPDATE_WRITEABLE			= 0x00000002,
+		DRSUAPI_DS_REPLICA_UPDATE_GETCHG_CHECK			= 0x00000002,
 		DRSUAPI_DS_REPLICA_UPDATE_ADD_REFERENCE			= 0x00000004,
 		DRSUAPI_DS_REPLICA_UPDATE_DELETE_REFERENCE		= 0x00000008,
-		DRSUAPI_DS_REPLICA_UPDATE_0x00000010			= 0x00000010
+		DRSUAPI_DS_REPLICA_UPDATE_WRITEABLE			= 0x00000010
 	} drsuapi_DsReplicaUpdateRefsOptions;
 
 	typedef struct {
diff --git a/source4/lib/ldb/include/ldb.h b/source4/lib/ldb/include/ldb.h
index 4e47497..f38dc8f 100644
--- a/source4/lib/ldb/include/ldb.h
+++ b/source4/lib/ldb/include/ldb.h
@@ -94,8 +94,8 @@ struct ldb_dn;
 
 /**
  There are a number of flags that are used with ldap_modify() in
- ldb_message_element.flags fields. The LDA_FLAGS_MOD_ADD,
- LDA_FLAGS_MOD_DELETE and LDA_FLAGS_MOD_REPLACE flags are used in
+ ldb_message_element.flags fields. The LDB_FLAGS_MOD_ADD,
+ LDB_FLAGS_MOD_DELETE and LDB_FLAGS_MOD_REPLACE flags are used in
  ldap_modify() calls to specify whether attributes are being added,
  deleted or modified respectively.
 */
diff --git a/source4/libnet/libnet_become_dc.c b/source4/libnet/libnet_become_dc.c
index b89e238..2d35b40 100644
--- a/source4/libnet/libnet_become_dc.c
+++ b/source4/libnet/libnet_become_dc.c
@@ -2768,7 +2768,7 @@ static void becomeDC_drsuapi_update_refs_send(struct libnet_BecomeDC_state *s,
 	r->in.req.req1.dest_dsa_guid	= s->dest_dsa.ntds_guid;
 	r->in.req.req1.options		= DRSUAPI_DS_REPLICA_UPDATE_ADD_REFERENCE
 					| DRSUAPI_DS_REPLICA_UPDATE_DELETE_REFERENCE
-					| DRSUAPI_DS_REPLICA_UPDATE_0x00000010;
+					| DRSUAPI_DS_REPLICA_UPDATE_WRITEABLE;
 
 	req = dcerpc_drsuapi_DsReplicaUpdateRefs_send(drsuapi->pipe, r, r);
 	composite_continue_rpc(c, req, recv_fn, s);
diff --git a/source4/ntvfs/cifs/vfs_cifs.c b/source4/ntvfs/cifs/vfs_cifs.c
index 1cb6a46..ffcd5f1 100644
--- a/source4/ntvfs/cifs/vfs_cifs.c
+++ b/source4/ntvfs/cifs/vfs_cifs.c
@@ -165,9 +165,9 @@ static NTSTATUS cvfs_connect(struct ntvfs_module_context *ntvfs,
 	}
 
 	if (strncmp(sharename, "\\\\", 2) == 0) {
-		char *p = strchr(sharename+2, '\\');
-		if (p) {
-			sharename = p + 1;
+		char *str = strchr(sharename+2, '\\');
+		if (str) {
+			sharename = str + 1;
 		}
 	}
 
diff --git a/source4/ntvfs/cifs_posix_cli/vfs_cifs_posix.c b/source4/ntvfs/cifs_posix_cli/vfs_cifs_posix.c
index 7b7c17a..4e67b22 100644
--- a/source4/ntvfs/cifs_posix_cli/vfs_cifs_posix.c
+++ b/source4/ntvfs/cifs_posix_cli/vfs_cifs_posix.c
@@ -71,9 +71,9 @@ static NTSTATUS cifspsx_connect(struct ntvfs_module_context *ntvfs,
 	}
 
 	if (strncmp(sharename, "\\\\", 2) == 0) {
-		char *p = strchr(sharename+2, '\\');
-		if (p) {
-			sharename = p + 1;
+		char *str = strchr(sharename+2, '\\');
+		if (str) {
+			sharename = str + 1;
 		}
 	}
 
diff --git a/source4/ntvfs/smb2/vfs_smb2.c b/source4/ntvfs/smb2/vfs_smb2.c
index 6fc0d42..ff02eed 100644
--- a/source4/ntvfs/smb2/vfs_smb2.c
+++ b/source4/ntvfs/smb2/vfs_smb2.c
@@ -182,9 +182,9 @@ static NTSTATUS cvfs_connect(struct ntvfs_module_context *ntvfs,
 	}
 
 	if (strncmp(sharename, "\\\\", 2) == 0) {
-		char *p = strchr(sharename+2, '\\');
-		if (p) {
-			sharename = p + 1;
+		char *str = strchr(sharename+2, '\\');
+		if (str) {
+			sharename = str + 1;
 		}
 	}
 
diff --git a/source4/rpc_server/config.mk b/source4/rpc_server/config.mk
index 32669db..d5aff84 100644
--- a/source4/rpc_server/config.mk
+++ b/source4/rpc_server/config.mk
@@ -183,7 +183,9 @@ PRIVATE_DEPENDENCIES = \
 # End MODULE dcerpc_drsuapi
 ################################################
 
-dcerpc_drsuapi_OBJ_FILES = $(rpc_serversrcdir)/drsuapi/dcesrv_drsuapi.o
+dcerpc_drsuapi_OBJ_FILES = $(rpc_serversrcdir)/drsuapi/dcesrv_drsuapi.o \
+	$(rpc_serversrcdir)/drsuapi/updaterefs.o \
+	$(rpc_serversrcdir)/drsuapi/drsutil.o
 
 ################################################
 # Start MODULE dcerpc_browser
diff --git a/source4/rpc_server/dcerpc_server.c b/source4/rpc_server/dcerpc_server.c
index c7f073c..b529e60 100644
--- a/source4/rpc_server/dcerpc_server.c
+++ b/source4/rpc_server/dcerpc_server.c
@@ -1262,8 +1262,6 @@ NTSTATUS dcesrv_process_ncacn_packet(struct dcesrv_connection *dce_conn,
 */


-- 
Samba Shared Repository


More information about the samba-cvs mailing list