idl: switched to using the WSPP names for the 'neighbour' DRS options
[abartlet/samba.git/.git] / source3 / rpcclient / cmd_drsuapi.c
index 71757f5ea370f0e5ac65ce6ff285d43ac665a842..e11922a9f8db8cd1cf01c57b2795898b41de079a 100644 (file)
@@ -20,6 +20,7 @@
 
 #include "includes.h"
 #include "rpcclient.h"
+#include "../librpc/gen_ndr/cli_drsuapi.h"
 
 static WERROR cracknames(struct rpc_pipe_client *cli,
                         TALLOC_CTX *mem_ctx,
@@ -103,7 +104,7 @@ static WERROR cmd_drsuapi_cracknames(struct rpc_pipe_client *cli,
 
        werr = cracknames(cli, mem_ctx,
                          &bind_handle,
-                         DRSUAPI_DS_NAME_FORMAT_UKNOWN,
+                         DRSUAPI_DS_NAME_FORMAT_UNKNOWN,
                          DRSUAPI_DS_NAME_FORMAT_FQDN_1779,
                          1,
                          argv+1,
@@ -321,11 +322,11 @@ static WERROR cmd_drsuapi_getncchanges(struct rpc_pipe_client *cli,
        int y;
 
        uint32_t supported_extensions = 0;
-       uint32_t replica_flags  = DRSUAPI_DS_REPLICA_NEIGHBOUR_WRITEABLE |
-                                 DRSUAPI_DS_REPLICA_NEIGHBOUR_SYNC_ON_STARTUP |
-                                 DRSUAPI_DS_REPLICA_NEIGHBOUR_DO_SCHEDULED_SYNCS |
-                                 DRSUAPI_DS_REPLICA_NEIGHBOUR_RETURN_OBJECT_PARENTS |
-                                 DRSUAPI_DS_REPLICA_NEIGHBOUR_NEVER_SYNCED;
+       uint32_t replica_flags  = DRSUAPI_DRS_WRIT_REP |
+                                 DRSUAPI_DRS_INIT_SYNC |
+                                 DRSUAPI_DRS_PER_SYNC |
+                                 DRSUAPI_DRS_GET_ANC |
+                                 DRSUAPI_DRS_NEVER_SYNCED;
 
        if (argc > 3) {
                printf("usage: %s [naming_context_or_object_dn [single]]\n", argv[0]);
@@ -419,7 +420,7 @@ static WERROR cmd_drsuapi_getncchanges(struct rpc_pipe_client *cli,
 
                werr = cracknames(cli, mem_ctx,
                                  &bind_handle,
-                                 DRSUAPI_DS_NAME_FORMAT_UKNOWN,
+                                 DRSUAPI_DS_NAME_FORMAT_UNKNOWN,
                                  DRSUAPI_DS_NAME_FORMAT_FQDN_1779,
                                  1,
                                  &name,
@@ -495,9 +496,9 @@ static WERROR cmd_drsuapi_getncchanges(struct rpc_pipe_client *cli,
                if (level_out == 1) {
                        out_level = 1;
                        ctr1 = &ctr.ctr1;
-               } else if (level_out == 2) {
+               } else if (level_out == 2 && ctr.ctr2.mszip1.ts) {
                        out_level = 1;
-                       ctr1 = ctr.ctr2.ctr.mszip1.ctr1;
+                       ctr1 = &ctr.ctr2.mszip1.ts->ctr1;
                }
 
                status = cli_get_session_key(mem_ctx, cli, &session_key);
@@ -527,9 +528,16 @@ static WERROR cmd_drsuapi_getncchanges(struct rpc_pipe_client *cli,
                        ctr6 = &ctr.ctr6;
                } else if (level_out == 7
                           && ctr.ctr7.level == 6
-                          && ctr.ctr7.type == DRSUAPI_COMPRESSION_TYPE_MSZIP) {
+                          && ctr.ctr7.type == DRSUAPI_COMPRESSION_TYPE_MSZIP
+                          && ctr.ctr7.ctr.mszip6.ts) {
                        out_level = 6;
-                       ctr6 = ctr.ctr7.ctr.mszip6.ctr6;
+                       ctr6 = &ctr.ctr7.ctr.mszip6.ts->ctr6;
+               } else if (level_out == 7
+                          && ctr.ctr7.level == 6
+                          && ctr.ctr7.type == DRSUAPI_COMPRESSION_TYPE_XPRESS
+                          && ctr.ctr7.ctr.xpress6.ts) {
+                       out_level = 6;
+                       ctr6 = &ctr.ctr7.ctr.xpress6.ts->ctr6;
                }
 
                if (out_level == 6) {