Merge branch 'v4-0-test' of ssh://git.samba.org/data/git/samba into 4-0-local
authorAndrew Bartlett <abartlet@samba.org>
Wed, 23 Jul 2008 06:15:46 +0000 (16:15 +1000)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 23 Jul 2008 06:15:46 +0000 (16:15 +1000)
(This used to be commit 532ccbbe7aa360440f455dfa136f425b9996e998)

source4/dsdb/repl/drepl_out_helpers.c
source4/dsdb/repl/drepl_service.c
source4/libnet/libnet_become_dc.c
source4/libnet/libnet_unbecome_dc.c
source4/librpc/idl/drsuapi.idl
source4/pidl/lib/Parse/Pidl/Expr.pm
source4/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm
source4/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm
source4/rpc_server/drsuapi/dcesrv_drsuapi.c
source4/torture/rpc/dssync.c

index 281e5691e2616f023a3481a1b34a727dc488bbfb..0700867543b946d72b120ed8dcc64762c4c15a5c 100644 (file)
@@ -142,7 +142,7 @@ static void dreplsrv_out_drsuapi_bind_recv(struct rpc_request *req)
                        info24 = &st->bind_r.out.bind_info->info.info24;
                        st->drsuapi->remote_info28.supported_extensions = info24->supported_extensions;
                        st->drsuapi->remote_info28.site_guid            = info24->site_guid;
-                       st->drsuapi->remote_info28.u1                   = info24->u1;
+                       st->drsuapi->remote_info28.pid                  = info24->pid;
                        st->drsuapi->remote_info28.repl_epoch           = 0;
                        break;
                }
index e485c50a473d5e94f0199adc37bbeceb4c492508..3611258ca586b995fdd3e2d1e74ababe74f2b9a1 100644 (file)
@@ -104,7 +104,7 @@ static WERROR dreplsrv_connect_samdb(struct dreplsrv_service *service, struct lo
        /* TODO: fill in site_guid */
        bind_info28->site_guid                  = GUID_zero();
        /* TODO: find out how this is really triggered! */
-       bind_info28->u1                         = 0;
+       bind_info28->pid                        = 0;
        bind_info28->repl_epoch                 = 0;
 
        return WERR_OK;
index 3fece1a9bab0e36f2bee746c7db5e04a7f767579..556ba8045d4bf8b237ece6d2a9ee83b414a8ef33 100644 (file)
@@ -1604,9 +1604,9 @@ static void becomeDC_drsuapi_bind_send(struct libnet_BecomeDC_state *s,
        bind_info28->site_guid                  = s->dest_dsa.site_guid;
        if (s->domain.behavior_version == 2) {
                /* TODO: find out how this is really triggered! */
-               bind_info28->u1                         = 528;
+               bind_info28->pid                = 528;
        } else {
-               bind_info28->u1                         = 516;
+               bind_info28->pid                = 516;
        }
        bind_info28->repl_epoch                 = 0;
 
@@ -1636,7 +1636,7 @@ static WERROR becomeDC_drsuapi_bind_recv(struct libnet_BecomeDC_state *s,
                        info24 = &drsuapi->bind_r.out.bind_info->info.info24;
                        drsuapi->remote_info28.supported_extensions     = info24->supported_extensions;
                        drsuapi->remote_info28.site_guid                = info24->site_guid;
-                       drsuapi->remote_info28.u1                       = info24->u1;
+                       drsuapi->remote_info28.pid                      = info24->pid;
                        drsuapi->remote_info28.repl_epoch               = 0;
                        break;
                }
index cff919018a6e0dec6e1c6de47b2296bb45fa74ce..e01af25f3fd5f86e4954eaf153da8d4da3ec0c6f 100644 (file)
@@ -574,7 +574,7 @@ static void unbecomeDC_drsuapi_bind_send(struct libnet_UnbecomeDC_state *s)
        bind_info28                             = &s->drsuapi.local_info28;
        bind_info28->supported_extensions       = 0;
        bind_info28->site_guid                  = GUID_zero();
-       bind_info28->u1                         = 508;
+       bind_info28->pid                        = 508;
        bind_info28->repl_epoch                 = 0;
 
        s->drsuapi.bind_info_ctr.length         = 28;
@@ -612,7 +612,7 @@ static void unbecomeDC_drsuapi_bind_recv(struct rpc_request *req)
                        info24 = &s->drsuapi.bind_r.out.bind_info->info.info24;
                        s->drsuapi.remote_info28.supported_extensions   = info24->supported_extensions;
                        s->drsuapi.remote_info28.site_guid              = info24->site_guid;
-                       s->drsuapi.remote_info28.u1                     = info24->u1;
+                       s->drsuapi.remote_info28.pid                    = info24->pid;
                        s->drsuapi.remote_info28.repl_epoch             = 0;
                        break;
                }
index b9cff5d11d9fbec4a19c4252c8829d47befbc576..c19da4fa19aa852c8f44f314ae618b94112bed8d 100644 (file)
@@ -58,21 +58,36 @@ interface drsuapi
                DRSUAPI_SUPPORTED_EXTENSION_80000000                    = 0x80000000
        } drsuapi_SupportedExtensions;
 
+       typedef [bitmap32bit] bitmap {
+               DRSUAPI_SUPPORTED_EXTENSION_ADAM                        = 0x00000001,
+               DRSUAPI_SUPPORTED_EXTENSION_LH_BETA2                    = 0x00000002
+       } drsuapi_SupportedExtensionsExt;
+
        /* this is used by w2k */
        typedef struct {
                drsuapi_SupportedExtensions supported_extensions;
                GUID site_guid;
-               uint32 u1;
+               uint32 pid;
        } drsuapi_DsBindInfo24;
 
        /* this is used by w2k3 */
        typedef struct {
                drsuapi_SupportedExtensions supported_extensions;
                GUID site_guid;
-               uint32 u1;
+               uint32 pid;
                uint32 repl_epoch;
        } drsuapi_DsBindInfo28;
 
+       /* this is used by w2k8 */
+       typedef struct {
+               drsuapi_SupportedExtensions supported_extensions;
+               GUID site_guid;
+               uint32 pid;
+               uint32 repl_epoch;
+               drsuapi_SupportedExtensionsExt supported_extensions_ext;
+               GUID config_dn_guid;
+       } drsuapi_DsBindInfo48;
+
        typedef struct {
                [flag(NDR_REMAINING)] DATA_BLOB info;
        } drsuapi_DsBindInfoFallBack;
@@ -80,6 +95,7 @@ interface drsuapi
        typedef [nodiscriminant] union {
                [case(24)][subcontext(4)] drsuapi_DsBindInfo24 info24;
                [case(28)][subcontext(4)] drsuapi_DsBindInfo28 info28;
+               [case(48)][subcontext(4)] drsuapi_DsBindInfo48 info48;
                [default][subcontext(4)] drsuapi_DsBindInfoFallBack FallBack;
        } drsuapi_DsBindInfo;
 
@@ -1409,7 +1425,7 @@ interface drsuapi
                GUID bind_guid;
                NTTIME_1sec bind_time;
                [flag(NDR_BIG_ENDIAN)] ipv4address client_ip_address;
-               uint32 u5; /* this is the same value the client used as u1 in the DsBindInfoX struct */
+               uint32 u5; /* this is the same value the client used as pid in the DsBindInfoX struct */
        } drsuapi_DsReplicaConnection04;
 
        typedef struct {
index 4e02be05756b34398c6675955ee42b17ea3f5cc4..5524374faed863c67a64dfa1f2d5618fede6f051 100644 (file)
@@ -1127,7 +1127,7 @@ sub new {
        [#Rule 2
                 'exp', 1,
 sub
-#line 22 "pidl/expr.yp"
+#line 22 "./pidl/expr.yp"
 { "\"$_[1]\"" }
        ],
        [#Rule 3
@@ -1139,199 +1139,199 @@ sub
        [#Rule 5
                 'exp', 2,
 sub
-#line 25 "pidl/expr.yp"
+#line 25 "./pidl/expr.yp"
 { "~$_[2]" }
        ],
        [#Rule 6
                 'exp', 3,
 sub
-#line 26 "pidl/expr.yp"
+#line 26 "./pidl/expr.yp"
 { "$_[1] + $_[3]" }
        ],
        [#Rule 7
                 'exp', 3,
 sub
-#line 27 "pidl/expr.yp"
+#line 27 "./pidl/expr.yp"
 { "$_[1] - $_[3]" }
        ],
        [#Rule 8
                 'exp', 3,
 sub
-#line 28 "pidl/expr.yp"
+#line 28 "./pidl/expr.yp"
 { "$_[1] * $_[3]" }
        ],
        [#Rule 9
                 'exp', 3,
 sub
-#line 29 "pidl/expr.yp"
+#line 29 "./pidl/expr.yp"
 { "$_[1] % $_[3]" }
        ],
        [#Rule 10
                 'exp', 3,
 sub
-#line 30 "pidl/expr.yp"
+#line 30 "./pidl/expr.yp"
 { "$_[1] < $_[3]" }
        ],
        [#Rule 11
                 'exp', 3,
 sub
-#line 31 "pidl/expr.yp"
+#line 31 "./pidl/expr.yp"
 { "$_[1] > $_[3]" }
        ],
        [#Rule 12
                 'exp', 3,
 sub
-#line 32 "pidl/expr.yp"
+#line 32 "./pidl/expr.yp"
 { "$_[1] | $_[3]" }
        ],
        [#Rule 13
                 'exp', 3,
 sub
-#line 33 "pidl/expr.yp"
+#line 33 "./pidl/expr.yp"
 { "$_[1] == $_[3]" }
        ],
        [#Rule 14
                 'exp', 3,
 sub
-#line 34 "pidl/expr.yp"
+#line 34 "./pidl/expr.yp"
 { "$_[1] <= $_[3]" }
        ],
        [#Rule 15
                 'exp', 3,
 sub
-#line 35 "pidl/expr.yp"
+#line 35 "./pidl/expr.yp"
 { "$_[1] => $_[3]" }
        ],
        [#Rule 16
                 'exp', 3,
 sub
-#line 36 "pidl/expr.yp"
+#line 36 "./pidl/expr.yp"
 { "$_[1] << $_[3]" }
        ],
        [#Rule 17
                 'exp', 3,
 sub
-#line 37 "pidl/expr.yp"
+#line 37 "./pidl/expr.yp"
 { "$_[1] >> $_[3]" }
        ],
        [#Rule 18
                 'exp', 3,
 sub
-#line 38 "pidl/expr.yp"
+#line 38 "./pidl/expr.yp"
 { "$_[1] != $_[3]" }
        ],
        [#Rule 19
                 'exp', 3,
 sub
-#line 39 "pidl/expr.yp"
+#line 39 "./pidl/expr.yp"
 { "$_[1] || $_[3]" }
        ],
        [#Rule 20
                 'exp', 3,
 sub
-#line 40 "pidl/expr.yp"
+#line 40 "./pidl/expr.yp"
 { "$_[1] && $_[3]" }
        ],
        [#Rule 21
                 'exp', 3,
 sub
-#line 41 "pidl/expr.yp"
+#line 41 "./pidl/expr.yp"
 { "$_[1] & $_[3]" }
        ],
        [#Rule 22
                 'exp', 5,
 sub
-#line 42 "pidl/expr.yp"
+#line 42 "./pidl/expr.yp"
 { "$_[1]?$_[3]:$_[5]" }
        ],
        [#Rule 23
                 'exp', 2,
 sub
-#line 43 "pidl/expr.yp"
+#line 43 "./pidl/expr.yp"
 { "~$_[1]" }
        ],
        [#Rule 24
                 'exp', 2,
 sub
-#line 44 "pidl/expr.yp"
+#line 44 "./pidl/expr.yp"
 { "not $_[1]" }
        ],
        [#Rule 25
                 'exp', 3,
 sub
-#line 45 "pidl/expr.yp"
+#line 45 "./pidl/expr.yp"
 { "$_[1] / $_[3]" }
        ],
        [#Rule 26
                 'exp', 2,
 sub
-#line 46 "pidl/expr.yp"
+#line 46 "./pidl/expr.yp"
 { "-$_[2]" }
        ],
        [#Rule 27
                 'exp', 2,
 sub
-#line 47 "pidl/expr.yp"
+#line 47 "./pidl/expr.yp"
 { "&$_[2]" }
        ],
        [#Rule 28
                 'exp', 3,
 sub
-#line 48 "pidl/expr.yp"
+#line 48 "./pidl/expr.yp"
 { "$_[1]^$_[3]" }
        ],
        [#Rule 29
                 'exp', 3,
 sub
-#line 49 "pidl/expr.yp"
+#line 49 "./pidl/expr.yp"
 { "($_[2])" }
        ],
        [#Rule 30
                 'possible_pointer', 1,
 sub
-#line 53 "pidl/expr.yp"
+#line 53 "./pidl/expr.yp"
 { $_[0]->_Lookup($_[1]) }
        ],
        [#Rule 31
                 'possible_pointer', 2,
 sub
-#line 54 "pidl/expr.yp"
+#line 54 "./pidl/expr.yp"
 { $_[0]->_Dereference($_[2]); "*$_[2]" }
        ],
        [#Rule 32
                 'var', 1,
 sub
-#line 57 "pidl/expr.yp"
+#line 57 "./pidl/expr.yp"
 { $_[0]->_Use($_[1]) }
        ],
        [#Rule 33
                 'var', 3,
 sub
-#line 58 "pidl/expr.yp"
+#line 58 "./pidl/expr.yp"
 { $_[0]->_Use("$_[1].$_[3]") }
        ],
        [#Rule 34
                 'var', 3,
 sub
-#line 59 "pidl/expr.yp"
+#line 59 "./pidl/expr.yp"
 { "($_[2])" }
        ],
        [#Rule 35
                 'var', 3,
 sub
-#line 60 "pidl/expr.yp"
+#line 60 "./pidl/expr.yp"
 { $_[0]->_Use("*$_[1]"); $_[1]."->".$_[3] }
        ],
        [#Rule 36
                 'func', 4,
 sub
-#line 64 "pidl/expr.yp"
+#line 64 "./pidl/expr.yp"
 { "$_[1]($_[3])" }
        ],
        [#Rule 37
                 'opt_args', 0,
 sub
-#line 65 "pidl/expr.yp"
+#line 65 "./pidl/expr.yp"
 { "" }
        ],
        [#Rule 38
@@ -1349,7 +1349,7 @@ sub
        [#Rule 42
                 'args', 3,
 sub
-#line 68 "pidl/expr.yp"
+#line 68 "./pidl/expr.yp"
 { "$_[1], $_[3]" }
        ]
 ],
@@ -1357,7 +1357,7 @@ sub
     bless($self,$class);
 }
 
-#line 71 "pidl/expr.yp"
+#line 71 "./pidl/expr.yp"
 
 
 package Parse::Pidl::Expr;
index 87ed29b54eb63ff76b1b2deb0af08be09ea0d30d..d2ab407eb0d96d5ed80adbfd3ae1dc08267bdbc6 100644 (file)
@@ -153,7 +153,6 @@ sub ParseFunction($$$)
        $self->pidl("");
        $self->pidl("status = cli_do_rpc_ndr(cli,");
        $self->pidl("\t\t\tmem_ctx,");
-       $self->pidl("\t\t\tPI_$uif,");
        $self->pidl("\t\t\t&ndr_table_$if,");
        $self->pidl("\t\t\t$ufn,");
        $self->pidl("\t\t\t&r);");
index 0d1806a0fae31201cfb847e8735b0d75f382cd1f..a0de1f127ad3936aa59446a7a4e3adf2a556267d 100644 (file)
@@ -770,7 +770,7 @@ sub ParseElementPrint($$$$)
                        } else {
                                my $counter = "cntr_$e->{NAME}_$l->{LEVEL_INDEX}";
 
-                               $self->pidl("ndr->print(ndr, \"\%s: ARRAY(\%d)\", \"$e->{NAME}\", $length);");
+                               $self->pidl("ndr->print(ndr, \"\%s: ARRAY(\%d)\", \"$e->{NAME}\", (int)$length);");
                                $self->pidl("ndr->depth++;");
                                $self->pidl("for ($counter=0;$counter<$length;$counter++) {");
                                $self->indent;
index e0a222e7675be23856c24fa7c54bba80d47ae414..bbb78cb7787f227ec38b216072151e34ebe161e8 100644 (file)
@@ -45,7 +45,7 @@ static WERROR dcesrv_drsuapi_DsBind(struct dcesrv_call_state *dce_call, TALLOC_C
        struct ldb_result *ntds_res;
        struct ldb_dn *ntds_dn;
        static const char *ntds_attrs[] = { "ms-DS-ReplicationEpoch", NULL };
-       uint32_t u1;
+       uint32_t pid;
        uint32_t repl_epoch;
        int ret;
 
@@ -98,9 +98,12 @@ static WERROR dcesrv_drsuapi_DsBind(struct dcesrv_call_state *dce_call, TALLOC_C
        repl_epoch = samdb_result_uint(ntds_res->msgs[0], "ms-DS-ReplicationEpoch", 0);
 
        /*
-        * TODO: find out what this is...
+        * The "process identifier" of the client.
+        * According to the WSPP docs, sectin 5.35, this is
+        * for informational and debugging purposes only.
+        * The assignment is implementation specific.
         */
-       u1 = 0;
+       pid = 0;
 
        /*
         * store the clients bind_guid
@@ -119,7 +122,7 @@ static WERROR dcesrv_drsuapi_DsBind(struct dcesrv_call_state *dce_call, TALLOC_C
                        info24 = &r->in.bind_info->info.info24;
                        b_state->remote_info28.supported_extensions     = info24->supported_extensions;
                        b_state->remote_info28.site_guid                = info24->site_guid;
-                       b_state->remote_info28.u1                       = info24->u1;
+                       b_state->remote_info28.pid                      = info24->pid;
                        b_state->remote_info28.repl_epoch               = 0;
                        break;
                }
@@ -171,8 +174,8 @@ static WERROR dcesrv_drsuapi_DsBind(struct dcesrv_call_state *dce_call, TALLOC_C
        b_state->local_info28.supported_extensions      |= DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESS;
 #endif
        b_state->local_info28.site_guid                 = site_guid;
-       b_state->local_info28.u1                                = u1;
-       b_state->local_info28.repl_epoch                        = repl_epoch;
+       b_state->local_info28.pid                       = pid;
+       b_state->local_info28.repl_epoch                = repl_epoch;
 
        /*
         * allocate the return bind_info
index 053f78e99b9d67ea94550889ebf4e9ae6e23c2bc..35fd4df84599e36697797574b438b51c3419601f 100644 (file)
@@ -104,7 +104,7 @@ static struct DsSyncTest *test_create_context(struct torture_context *tctx)
        our_bind_info28->supported_extensions   = 0xFFFFFFFF;
        our_bind_info28->supported_extensions   |= DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3;
        our_bind_info28->site_guid              = GUID_zero();
-       our_bind_info28->u1                     = 0;
+       our_bind_info28->pid                    = 0;
        our_bind_info28->repl_epoch             = 1;
 
        our_bind_info_ctr                       = &ctx->admin.drsuapi.our_bind_info_ctr;
@@ -153,7 +153,7 @@ static struct DsSyncTest *test_create_context(struct torture_context *tctx)
                our_bind_info28->supported_extensions   |= DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESS;
        }
        our_bind_info28->site_guid              = GUID_zero();
-       our_bind_info28->u1                     = 508;
+       our_bind_info28->pid                    = 508;
        our_bind_info28->repl_epoch             = 0;
 
        our_bind_info_ctr                       = &ctx->new_dc.drsuapi.our_bind_info_ctr;
@@ -210,7 +210,7 @@ static bool _test_DsBind(struct torture_context *tctx,
                        info24 = &b->req.out.bind_info->info.info24;
                        b->peer_bind_info28.supported_extensions= info24->supported_extensions;
                        b->peer_bind_info28.site_guid           = info24->site_guid;
-                       b->peer_bind_info28.u1                  = info24->u1;
+                       b->peer_bind_info28.pid                 = info24->pid;
                        b->peer_bind_info28.repl_epoch          = 0;
                        break;
                }