[SCM] Samba Shared Repository - branch master updated

Stefan Metzmacher metze at samba.org
Thu Mar 11 06:25:12 MST 2010


The branch, master has been updated
       via  d4b8fb1... s4:selftest: move samba4.net.api.become.dc from skip to knownfail
       via  dd93447... NET-API-BECOME-DC: convert to torture api
       via  b71bbba... s4:rpc_server/drsuapi: don't reset [out,ref] pointer to NULL in dcesrv_drsuapi_DsRemoveDSServer()
       via  46b0cbe... selftest: let the client also use the dns_host_file
       via  4398871... RPC-DSSYNC: fix the build after idl changes
       via  9592366... librpc: rerun make idl
       via  aef4890... drsuapi.idl: finish drsuapi_DsGetNT4ChangeLog idl
       via  d1e3898... s4: allow pam_winbind.so to be build on samba4
       via  8306eb1... s4: create ../lib/iniparser_build/config.m4
       via  5f2f484... s4: Modify auth/config.m4 to move pam tests to nsswitch.m4 so that we tests things in one place
      from  cddc542... s3-winreg: Fix _winreg_QueryValue crash bugs and implement windows behavior.

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


- Log -----------------------------------------------------------------
commit d4b8fb15b83140f217334fc848526dbcf33ee8fa
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Mar 11 13:32:34 2010 +0100

    s4:selftest: move samba4.net.api.become.dc from skip to knownfail
    
    Someone should fix the remaining bug, as this test is expected to work.
    
    metze

commit dd934472e8e456abc01a99637f91528128bec369
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Mar 11 13:30:19 2010 +0100

    NET-API-BECOME-DC: convert to torture api
    
    metze

commit b71bbbab8b491140e3de7374b4c9232d387157e3
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Mar 11 13:05:55 2010 +0100

    s4:rpc_server/drsuapi: don't reset [out,ref] pointer to NULL in dcesrv_drsuapi_DsRemoveDSServer()
    
    metze

commit 46b0cbe8798949caa60eeabcb6e982190b2c2916
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Mar 11 13:04:56 2010 +0100

    selftest: let the client also use the dns_host_file
    
    metze

commit 4398871d1fabcc28af7c9a2aac5c91fe4fba2fa4
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Mar 11 09:12:07 2010 +0100

    RPC-DSSYNC: fix the build after idl changes
    
    metze

commit 9592366dc7537adb0662d85c34c62d32a012a801
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Mar 11 09:11:25 2010 +0100

    librpc: rerun make idl
    
    metze

commit aef4890a7c426c32a5c8df6f2108a24439dafeca
Author: Stefan Metzmacher <metze at samba.org>
Date:   Thu Mar 11 08:46:39 2010 +0100

    drsuapi.idl: finish drsuapi_DsGetNT4ChangeLog idl
    
    metze

commit d1e3898a05a860f40a7b34b357917aa873dfd145
Author: Matthieu Patou <mat at matws.net>
Date:   Wed Mar 3 11:38:51 2010 +0300

    s4: allow pam_winbind.so to be build on samba4
    
    * Modify the nsswitch/config.m4 to add tests and build that will be put in configure by the autoconf/autoheader
      We test if there is pam headers and pam library to be able to build the pam module
      We add s4 build directive (that are normaly in standalone config.mk) this is due to the fact that we need
      to rely on path that are guessed during configure.
      Add tests not to build pam_winbind if pam dev files is not present
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit 8306eb1c5f7126a72423e936dc36e77f86532d6b
Author: Matthieu Patou <mat at matws.net>
Date:   Wed Mar 3 11:38:51 2010 +0300

    s4: create ../lib/iniparser_build/config.m4
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

commit 5f2f4849e556cb761c7d9fca78cb1ef9e1279974
Author: Matthieu Patou <mat at matws.net>
Date:   Wed Mar 3 11:38:51 2010 +0300

    s4: Modify auth/config.m4 to move pam tests to nsswitch.m4 so that we tests things in one place
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

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

Summary of changes:
 lib/iniparser_build/config.m4               |   45 ++++++
 librpc/gen_ndr/drsuapi.h                    |   32 ++--
 librpc/gen_ndr/ndr_drsuapi.c                |  227 +++++++++++++++------------
 librpc/gen_ndr/ndr_drsuapi.h                |    1 +
 librpc/idl/drsuapi.idl                      |   35 +++--
 nsswitch/config.m4                          |   31 ++++
 selftest/selftest.pl                        |    3 +-
 source4/auth/config.m4                      |    7 +-
 source4/configure.ac                        |    6 +-
 source4/rpc_server/drsuapi/dcesrv_drsuapi.c |    1 -
 source4/selftest/knownfail                  |    1 +
 source4/selftest/skip                       |    1 -
 source4/torture/libnet/libnet_BecomeDC.c    |   82 ++++-------
 source4/torture/rpc/dssync.c                |   17 ++-
 14 files changed, 288 insertions(+), 201 deletions(-)
 create mode 100644 lib/iniparser_build/config.m4


Changeset truncated at 500 lines:

diff --git a/lib/iniparser_build/config.m4 b/lib/iniparser_build/config.m4
new file mode 100644
index 0000000..282c977
--- /dev/null
+++ b/lib/iniparser_build/config.m4
@@ -0,0 +1,45 @@
+AC_ARG_WITH(included-iniparser,
+[AS_HELP_STRING([--with-included-iniparser], [use bundled iniparser library, not from system])],
+[
+  case "$withval" in
+  yes)
+    INCLUDED_INIPARSER=yes
+    ;;
+  no)
+    INCLUDED_INIPARSER=no
+    ;;
+  esac ],
+)
+if test x"$INCLUDED_INIPARSER" != x"yes"; then
+    AC_CHECK_LIB_EXT(iniparser, LIBINIPARSER_LIBS, iniparser_load)
+
+fi
+
+AC_MSG_CHECKING(whether to use included iniparser)
+if test x"$ac_cv_lib_ext_iniparser" != x"yes"; then
+
+  iniparserpaths="../iniparser ../lib/iniparser"
+  for d in $iniparserpaths; do
+    if test -f "$srcdir/$d/src/iniparser.c"; then
+      iniparserdir="$d"
+      break;
+    fi
+  done
+  if test x"$iniparserdir" = "x"; then
+     AC_MSG_ERROR([cannot find iniparser source in $iniparserpaths])
+  fi
+  INIPARSER_CFLAGS="-I$srcdir/$iniparserdir/src"
+  AC_MSG_RESULT(yes)
+
+  INIPARSER_OBJS=""
+  INIPARSER_OBJS="$INIPARSER_OBJS $srcdir/$iniparserdir/../iniparser_build/iniparser.o"
+  INIPARSER_OBJS="$INIPARSER_OBJS $srcdir/$iniparserdir/../iniparser_build/dictionary.o"
+  INIPARSER_OBJS="$INIPARSER_OBJS $srcdir/$iniparserdir/../iniparser_build/strlib.o"
+
+  SMB_SUBSYSTEM(LIBINIPARSER,[$INIPARSER_OBJS],[],[$INIPARSER_CFLAGS])
+else
+  AC_MSG_RESULT(no)
+  SMB_EXT_LIB(LIBINIPARSER,,,,${LIBINIPARSER_LIBS})
+  SMB_ENABLE(LIBINIPARSER,YES)
+fi
+
diff --git a/librpc/gen_ndr/drsuapi.h b/librpc/gen_ndr/drsuapi.h
index 12d44a6..8bd80fd 100644
--- a/librpc/gen_ndr/drsuapi.h
+++ b/librpc/gen_ndr/drsuapi.h
@@ -795,11 +795,15 @@ union drsuapi_DsGetMembershipsRequest {
 	struct drsuapi_DsGetMembershipsRequest1 req1;/* [case] */
 }/* [switch_type(uint32)] */;
 
+/* bitmap drsuapi_DsGetNT4ChangeLogFlags */
+#define DRSUAPI_NT4_CHANGELOG_GET_CHANGELOG ( 0x00000001 )
+#define DRSUAPI_NT4_CHANGELOG_GET_SERIAL_NUMBERS ( 0x00000002 )
+
 struct drsuapi_DsGetNT4ChangeLogRequest1 {
-	uint32_t unknown1;
-	uint32_t unknown2;
-	uint32_t length;/* [range(0,0x00A00000)] */
-	uint8_t *data;/* [unique,size_is(length)] */
+	uint32_t flags;
+	uint32_t preferred_maximum_length;
+	uint32_t restart_length;/* [range(0,0x00A00000)] */
+	uint8_t *restart_data;/* [unique,size_is(restart_length)] */
 };
 
 union drsuapi_DsGetNT4ChangeLogRequest {
@@ -807,17 +811,17 @@ union drsuapi_DsGetNT4ChangeLogRequest {
 }/* [switch_type(uint32)] */;
 
 struct drsuapi_DsGetNT4ChangeLogInfo1 {
-	uint32_t length1;/* [range(0,0x00A00000)] */
-	uint32_t length2;/* [range(0,0x00A00000)] */
-	uint64_t unknown1;
-	NTTIME time2;
-	uint64_t unknown3;
-	NTTIME time4;
-	uint64_t unknown5;
-	NTTIME time6;
+	uint32_t restart_length;/* [range(0,0x00A00000)] */
+	uint32_t log_length;/* [range(0,0x00A00000)] */
+	uint64_t sam_serial_number;
+	NTTIME sam_creation_time;
+	uint64_t builtin_serial_number;
+	NTTIME builtin_creation_time;
+	uint64_t lsa_serial_number;
+	NTTIME lsa_creation_time;
 	NTSTATUS status;
-	uint8_t *data1;/* [unique,size_is(length1)] */
-	uint8_t *data2;/* [unique,size_is(length2)] */
+	uint8_t *restart_data;/* [unique,size_is(restart_length)] */
+	uint8_t *log_data;/* [unique,size_is(log_length)] */
 };
 
 union drsuapi_DsGetNT4ChangeLogInfo {
diff --git a/librpc/gen_ndr/ndr_drsuapi.c b/librpc/gen_ndr/ndr_drsuapi.c
index 6d3285d..8aab9e4 100644
--- a/librpc/gen_ndr/ndr_drsuapi.c
+++ b/librpc/gen_ndr/ndr_drsuapi.c
@@ -5154,20 +5154,43 @@ _PUBLIC_ void ndr_print_drsuapi_DsGetMembershipsRequest(struct ndr_print *ndr, c
 	}
 }
 
+static enum ndr_err_code ndr_push_drsuapi_DsGetNT4ChangeLogFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
+{
+	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
+	return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_drsuapi_DsGetNT4ChangeLogFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
+{
+	uint32_t v;
+	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
+	*r = v;
+	return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_drsuapi_DsGetNT4ChangeLogFlags(struct ndr_print *ndr, const char *name, uint32_t r)
+{
+	ndr_print_uint32(ndr, name, r);
+	ndr->depth++;
+	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_NT4_CHANGELOG_GET_CHANGELOG", DRSUAPI_NT4_CHANGELOG_GET_CHANGELOG, r);
+	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DRSUAPI_NT4_CHANGELOG_GET_SERIAL_NUMBERS", DRSUAPI_NT4_CHANGELOG_GET_SERIAL_NUMBERS, r);
+	ndr->depth--;
+}
+
 static enum ndr_err_code ndr_push_drsuapi_DsGetNT4ChangeLogRequest1(struct ndr_push *ndr, int ndr_flags, const struct drsuapi_DsGetNT4ChangeLogRequest1 *r)
 {
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_push_align(ndr, 5));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown1));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown2));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->data));
+		NDR_CHECK(ndr_push_drsuapi_DsGetNT4ChangeLogFlags(ndr, NDR_SCALARS, r->flags));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->preferred_maximum_length));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->restart_length));
+		NDR_CHECK(ndr_push_unique_ptr(ndr, r->restart_data));
 		NDR_CHECK(ndr_push_trailer_align(ndr, 5));
 	}
 	if (ndr_flags & NDR_BUFFERS) {
-		if (r->data) {
-			NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->length));
-			NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->data, r->length));
+		if (r->restart_data) {
+			NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->restart_length));
+			NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->restart_data, r->restart_length));
 		}
 	}
 	return NDR_ERR_SUCCESS;
@@ -5175,35 +5198,35 @@ static enum ndr_err_code ndr_push_drsuapi_DsGetNT4ChangeLogRequest1(struct ndr_p
 
 static enum ndr_err_code ndr_pull_drsuapi_DsGetNT4ChangeLogRequest1(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsGetNT4ChangeLogRequest1 *r)
 {
-	uint32_t _ptr_data;
-	TALLOC_CTX *_mem_save_data_0;
+	uint32_t _ptr_restart_data;
+	TALLOC_CTX *_mem_save_restart_data_0;
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_pull_align(ndr, 5));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown1));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown2));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length));
-		if (r->length > 0x00A00000) {
+		NDR_CHECK(ndr_pull_drsuapi_DsGetNT4ChangeLogFlags(ndr, NDR_SCALARS, &r->flags));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->preferred_maximum_length));
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->restart_length));
+		if (r->restart_length > 0x00A00000) {
 			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
 		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data));
-		if (_ptr_data) {
-			NDR_PULL_ALLOC(ndr, r->data);
+		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_restart_data));
+		if (_ptr_restart_data) {
+			NDR_PULL_ALLOC(ndr, r->restart_data);
 		} else {
-			r->data = NULL;
+			r->restart_data = NULL;
 		}
 		NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
 	}
 	if (ndr_flags & NDR_BUFFERS) {
-		if (r->data) {
-			_mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->data, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->data));
-			NDR_PULL_ALLOC_N(ndr, r->data, ndr_get_array_size(ndr, &r->data));
-			NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->data, ndr_get_array_size(ndr, &r->data)));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, 0);
+		if (r->restart_data) {
+			_mem_save_restart_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
+			NDR_PULL_SET_MEM_CTX(ndr, r->restart_data, 0);
+			NDR_CHECK(ndr_pull_array_size(ndr, &r->restart_data));
+			NDR_PULL_ALLOC_N(ndr, r->restart_data, ndr_get_array_size(ndr, &r->restart_data));
+			NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->restart_data, ndr_get_array_size(ndr, &r->restart_data)));
+			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_restart_data_0, 0);
 		}
-		if (r->data) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data, r->length));
+		if (r->restart_data) {
+			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->restart_data, r->restart_length));
 		}
 	}
 	return NDR_ERR_SUCCESS;
@@ -5213,13 +5236,13 @@ _PUBLIC_ void ndr_print_drsuapi_DsGetNT4ChangeLogRequest1(struct ndr_print *ndr,
 {
 	ndr_print_struct(ndr, name, "drsuapi_DsGetNT4ChangeLogRequest1");
 	ndr->depth++;
-	ndr_print_uint32(ndr, "unknown1", r->unknown1);
-	ndr_print_uint32(ndr, "unknown2", r->unknown2);
-	ndr_print_uint32(ndr, "length", r->length);
-	ndr_print_ptr(ndr, "data", r->data);
+	ndr_print_drsuapi_DsGetNT4ChangeLogFlags(ndr, "flags", r->flags);
+	ndr_print_uint32(ndr, "preferred_maximum_length", r->preferred_maximum_length);
+	ndr_print_uint32(ndr, "restart_length", r->restart_length);
+	ndr_print_ptr(ndr, "restart_data", r->restart_data);
 	ndr->depth++;
-	if (r->data) {
-		ndr_print_array_uint8(ndr, "data", r->data, r->length);
+	if (r->restart_data) {
+		ndr_print_array_uint8(ndr, "restart_data", r->restart_data, r->restart_length);
 	}
 	ndr->depth--;
 	ndr->depth--;
@@ -5306,27 +5329,27 @@ static enum ndr_err_code ndr_push_drsuapi_DsGetNT4ChangeLogInfo1(struct ndr_push
 {
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_push_align(ndr, 8));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length1));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length2));
-		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->unknown1));
-		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->time2));
-		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->unknown3));
-		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->time4));
-		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->unknown5));
-		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->time6));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->restart_length));
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->log_length));
+		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->sam_serial_number));
+		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->sam_creation_time));
+		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->builtin_serial_number));
+		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->builtin_creation_time));
+		NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->lsa_serial_number));
+		NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->lsa_creation_time));
 		NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->status));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->data1));
-		NDR_CHECK(ndr_push_unique_ptr(ndr, r->data2));
+		NDR_CHECK(ndr_push_unique_ptr(ndr, r->restart_data));
+		NDR_CHECK(ndr_push_unique_ptr(ndr, r->log_data));
 		NDR_CHECK(ndr_push_trailer_align(ndr, 8));
 	}
 	if (ndr_flags & NDR_BUFFERS) {
-		if (r->data1) {
-			NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->length1));
-			NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->data1, r->length1));
+		if (r->restart_data) {
+			NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->restart_length));
+			NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->restart_data, r->restart_length));
 		}
-		if (r->data2) {
-			NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->length2));
-			NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->data2, r->length2));
+		if (r->log_data) {
+			NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->log_length));
+			NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->log_data, r->log_length));
 		}
 	}
 	return NDR_ERR_SUCCESS;
@@ -5334,63 +5357,63 @@ static enum ndr_err_code ndr_push_drsuapi_DsGetNT4ChangeLogInfo1(struct ndr_push
 
 static enum ndr_err_code ndr_pull_drsuapi_DsGetNT4ChangeLogInfo1(struct ndr_pull *ndr, int ndr_flags, struct drsuapi_DsGetNT4ChangeLogInfo1 *r)
 {
-	uint32_t _ptr_data1;
-	TALLOC_CTX *_mem_save_data1_0;
-	uint32_t _ptr_data2;
-	TALLOC_CTX *_mem_save_data2_0;
+	uint32_t _ptr_restart_data;
+	TALLOC_CTX *_mem_save_restart_data_0;
+	uint32_t _ptr_log_data;
+	TALLOC_CTX *_mem_save_log_data_0;
 	if (ndr_flags & NDR_SCALARS) {
 		NDR_CHECK(ndr_pull_align(ndr, 8));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length1));
-		if (r->length1 > 0x00A00000) {
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->restart_length));
+		if (r->restart_length > 0x00A00000) {
 			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
 		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length2));
-		if (r->length2 > 0x00A00000) {
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->log_length));
+		if (r->log_length > 0x00A00000) {
 			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
 		}
-		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->unknown1));
-		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->time2));
-		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->unknown3));
-		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->time4));
-		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->unknown5));
-		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->time6));
+		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->sam_serial_number));
+		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->sam_creation_time));
+		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->builtin_serial_number));
+		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->builtin_creation_time));
+		NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->lsa_serial_number));
+		NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->lsa_creation_time));
 		NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->status));
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data1));
-		if (_ptr_data1) {
-			NDR_PULL_ALLOC(ndr, r->data1);
+		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_restart_data));
+		if (_ptr_restart_data) {
+			NDR_PULL_ALLOC(ndr, r->restart_data);
 		} else {
-			r->data1 = NULL;
+			r->restart_data = NULL;
 		}
-		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data2));
-		if (_ptr_data2) {
-			NDR_PULL_ALLOC(ndr, r->data2);
+		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_log_data));
+		if (_ptr_log_data) {
+			NDR_PULL_ALLOC(ndr, r->log_data);
 		} else {
-			r->data2 = NULL;
+			r->log_data = NULL;
 		}
 		NDR_CHECK(ndr_pull_trailer_align(ndr, 8));
 	}
 	if (ndr_flags & NDR_BUFFERS) {
-		if (r->data1) {
-			_mem_save_data1_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->data1, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->data1));
-			NDR_PULL_ALLOC_N(ndr, r->data1, ndr_get_array_size(ndr, &r->data1));
-			NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->data1, ndr_get_array_size(ndr, &r->data1)));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data1_0, 0);
+		if (r->restart_data) {
+			_mem_save_restart_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
+			NDR_PULL_SET_MEM_CTX(ndr, r->restart_data, 0);
+			NDR_CHECK(ndr_pull_array_size(ndr, &r->restart_data));
+			NDR_PULL_ALLOC_N(ndr, r->restart_data, ndr_get_array_size(ndr, &r->restart_data));
+			NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->restart_data, ndr_get_array_size(ndr, &r->restart_data)));
+			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_restart_data_0, 0);
 		}
-		if (r->data2) {
-			_mem_save_data2_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->data2, 0);
-			NDR_CHECK(ndr_pull_array_size(ndr, &r->data2));
-			NDR_PULL_ALLOC_N(ndr, r->data2, ndr_get_array_size(ndr, &r->data2));
-			NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->data2, ndr_get_array_size(ndr, &r->data2)));
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data2_0, 0);
+		if (r->log_data) {
+			_mem_save_log_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
+			NDR_PULL_SET_MEM_CTX(ndr, r->log_data, 0);
+			NDR_CHECK(ndr_pull_array_size(ndr, &r->log_data));
+			NDR_PULL_ALLOC_N(ndr, r->log_data, ndr_get_array_size(ndr, &r->log_data));
+			NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->log_data, ndr_get_array_size(ndr, &r->log_data)));
+			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_log_data_0, 0);
 		}
-		if (r->data1) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data1, r->length1));
+		if (r->restart_data) {
+			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->restart_data, r->restart_length));
 		}
-		if (r->data2) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data2, r->length2));
+		if (r->log_data) {
+			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->log_data, r->log_length));
 		}
 	}
 	return NDR_ERR_SUCCESS;
@@ -5400,25 +5423,25 @@ _PUBLIC_ void ndr_print_drsuapi_DsGetNT4ChangeLogInfo1(struct ndr_print *ndr, co
 {
 	ndr_print_struct(ndr, name, "drsuapi_DsGetNT4ChangeLogInfo1");
 	ndr->depth++;
-	ndr_print_uint32(ndr, "length1", r->length1);
-	ndr_print_uint32(ndr, "length2", r->length2);
-	ndr_print_hyper(ndr, "unknown1", r->unknown1);
-	ndr_print_NTTIME(ndr, "time2", r->time2);
-	ndr_print_hyper(ndr, "unknown3", r->unknown3);
-	ndr_print_NTTIME(ndr, "time4", r->time4);
-	ndr_print_hyper(ndr, "unknown5", r->unknown5);
-	ndr_print_NTTIME(ndr, "time6", r->time6);
+	ndr_print_uint32(ndr, "restart_length", r->restart_length);
+	ndr_print_uint32(ndr, "log_length", r->log_length);
+	ndr_print_hyper(ndr, "sam_serial_number", r->sam_serial_number);
+	ndr_print_NTTIME(ndr, "sam_creation_time", r->sam_creation_time);
+	ndr_print_hyper(ndr, "builtin_serial_number", r->builtin_serial_number);
+	ndr_print_NTTIME(ndr, "builtin_creation_time", r->builtin_creation_time);
+	ndr_print_hyper(ndr, "lsa_serial_number", r->lsa_serial_number);
+	ndr_print_NTTIME(ndr, "lsa_creation_time", r->lsa_creation_time);
 	ndr_print_NTSTATUS(ndr, "status", r->status);
-	ndr_print_ptr(ndr, "data1", r->data1);
+	ndr_print_ptr(ndr, "restart_data", r->restart_data);
 	ndr->depth++;
-	if (r->data1) {
-		ndr_print_array_uint8(ndr, "data1", r->data1, r->length1);
+	if (r->restart_data) {
+		ndr_print_array_uint8(ndr, "restart_data", r->restart_data, r->restart_length);
 	}
 	ndr->depth--;
-	ndr_print_ptr(ndr, "data2", r->data2);
+	ndr_print_ptr(ndr, "log_data", r->log_data);
 	ndr->depth++;
-	if (r->data2) {
-		ndr_print_array_uint8(ndr, "data2", r->data2, r->length2);
+	if (r->log_data) {
+		ndr_print_array_uint8(ndr, "log_data", r->log_data, r->log_length);
 	}
 	ndr->depth--;
 	ndr->depth--;
diff --git a/librpc/gen_ndr/ndr_drsuapi.h b/librpc/gen_ndr/ndr_drsuapi.h
index 9994196..cf4a584 100644
--- a/librpc/gen_ndr/ndr_drsuapi.h
+++ b/librpc/gen_ndr/ndr_drsuapi.h
@@ -179,6 +179,7 @@ void ndr_print_drsuapi_DsGetMembershipsCtr1(struct ndr_print *ndr, const char *n
 void ndr_print_drsuapi_DsGetMembershipsCtr(struct ndr_print *ndr, const char *name, const union drsuapi_DsGetMembershipsCtr *r);
 void ndr_print_drsuapi_DsGetMembershipsRequest1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetMembershipsRequest1 *r);
 void ndr_print_drsuapi_DsGetMembershipsRequest(struct ndr_print *ndr, const char *name, const union drsuapi_DsGetMembershipsRequest *r);
+void ndr_print_drsuapi_DsGetNT4ChangeLogFlags(struct ndr_print *ndr, const char *name, uint32_t r);
 void ndr_print_drsuapi_DsGetNT4ChangeLogRequest1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetNT4ChangeLogRequest1 *r);
 void ndr_print_drsuapi_DsGetNT4ChangeLogRequest(struct ndr_print *ndr, const char *name, const union drsuapi_DsGetNT4ChangeLogRequest *r);
 void ndr_print_drsuapi_DsGetNT4ChangeLogInfo1(struct ndr_print *ndr, const char *name, const struct drsuapi_DsGetNT4ChangeLogInfo1 *r);
diff --git a/librpc/idl/drsuapi.idl b/librpc/idl/drsuapi.idl
index 258ed6d..54a7b93 100644
--- a/librpc/idl/drsuapi.idl
+++ b/librpc/idl/drsuapi.idl
@@ -877,11 +877,16 @@ interface drsuapi
 
 	/*****************/
         /* Function 0x0b */
+	typedef [bitmap32bit] bitmap {
+		DRSUAPI_NT4_CHANGELOG_GET_CHANGELOG		= 0x00000001,
+		DRSUAPI_NT4_CHANGELOG_GET_SERIAL_NUMBERS	= 0x00000002
+	} drsuapi_DsGetNT4ChangeLogFlags;
+
 	typedef struct {
-		uint32 unknown1;
-		uint32 unknown2;
-		[range(0,0x00A00000)] uint32 length;
-		[size_is(length)] uint8 *data;
+		drsuapi_DsGetNT4ChangeLogFlags flags;
+		uint32 preferred_maximum_length;
+		[range(0,0x00A00000)] uint32 restart_length;
+		[size_is(restart_length)] uint8 *restart_data;
 	} drsuapi_DsGetNT4ChangeLogRequest1;
 
 	typedef [switch_type(uint32)] union {
@@ -889,24 +894,24 @@ interface drsuapi
 	} drsuapi_DsGetNT4ChangeLogRequest;
 
 	typedef struct {
-		[range(0,0x00A00000)] uint32 length1;
-		[range(0,0x00A00000)] uint32 length2;
-		hyper unknown1;
-		NTTIME time2;
-		hyper unknown3;
-		NTTIME time4;
-		hyper unknown5;
-		NTTIME time6;
+		[range(0,0x00A00000)] uint32 restart_length;
+		[range(0,0x00A00000)] uint32 log_length;
+		hyper sam_serial_number;
+		NTTIME sam_creation_time;
+		hyper builtin_serial_number;
+		NTTIME builtin_creation_time;
+		hyper lsa_serial_number;
+		NTTIME lsa_creation_time;
 		NTSTATUS status;
-		[size_is(length1)] uint8 *data1;
-		[size_is(length2)] uint8 *data2;
+		[size_is(restart_length)] uint8 *restart_data;
+		[size_is(log_length)] uint8 *log_data;
 	} drsuapi_DsGetNT4ChangeLogInfo1;
 
 	typedef [switch_type(uint32)] union {
 		[case(1)] drsuapi_DsGetNT4ChangeLogInfo1 info1;
 	} drsuapi_DsGetNT4ChangeLogInfo;
 
-	[todo] WERROR drsuapi_DsGetNT4ChangeLog(
+	WERROR drsuapi_DsGetNT4ChangeLog(
 		[in] policy_handle *bind_handle,
 		[in] uint32 level,
 		[in,ref] [switch_is(level)] drsuapi_DsGetNT4ChangeLogRequest *req,
diff --git a/nsswitch/config.m4 b/nsswitch/config.m4
index b49ecbc..8966e35 100644
--- a/nsswitch/config.m4
+++ b/nsswitch/config.m4
@@ -1,3 +1,4 @@
+######


-- 
Samba Shared Repository


More information about the samba-cvs mailing list