The branch, v4-1-stable has been updated
       via  28eacea VERSION: Disable git snapshots for the 4.1.15 release.
       via  c72d0e0 WHATSNEW: Add release notes for Samba 4.1.15.
       via  65f891a nsswitch: fix soname of linux nss_*.so.2 modules
       via  5636a48 selftest: use shared/libnss_wrapper_winbind.so.2
       via  b3f140d wafsamba: add optional keep_underscore=True to 
SAMBA_LIBRARY()
       via  16f881c winbind: Retry after SESSION_EXPIRED error in ping-dc
       via  c6ede38 winbind: Retry LogonControl RPC in ping-dc after session 
expiration
       via  45238fe librpc/ndr_drsuapi: Allow ndrdump to dump dsinfo52 blobs
       via  db5d422 idl:drsuapi: Manage all possible lengths of 
drsuapi_DsBindInfo
       via  e3e0c5e librpc-idl: change the drsuapi_DsBindInfoCtr so that it 
match what is on the wire both in NDR32 and NDR64.
       via  e890269 librpc-idl: replace int32 by uint32 as the values are 
always > 0
       via  9dd858c librpc-idl: replace int32 by the enumeration as it's the 
type that we use in union's switch drsuapi_DsGetDCInfoCtrLevels
       via  a6a301f drsuapi.idl: change the range for attribute values to 
26214400 bytes.
       via  d6c626a libcli/smb: only force signing of smb2 session setups when 
binding a new session
       via  be1585f s3:smb2_server: allow reauthentication without signing
       via  7aacb3c s3:smb2_server: use the global signing key to check if 
signing is required
       via  b1ecde9 testprogs/test_ldb: check rootdse search with extended-dn 
control
       via  54c8bca s4:dsdb/rootdse: expand extended dn values with the 
AS_SYSTEM control
       via  950506d s3:utils/profiles fix a use after free
       via  b18866b s3:registry/regfio fix some valgrind warnings
       via  d95c2d2 s3:registry/regfio read SD from the correct location
       via  a3d2970 s3: modules: Fix *allocate* calls to follow POSIX error 
return convention.
       via  1a128c4 s3: smbd: Fix *allocate* calls to follow POSIX error return 
convention.
       via  5b5546b s3: smbd: Fix *allocate* calls to follow POSIX error return 
convention.
       via  8999aca s3-libsmb: Duplicate the memory before we free it.
       via  4051499 s3-libsmb: Set the netbios_name in use_ccache case too.
       via  8ca520e s3-lib: Do not require a password with --use-ccache.
       via  6e030c2 pam_winbind: fix warn_pwd_expire implementation.
       via  2bea37d libcli: SMB2: Pure SMB2-only negprot fix to make us behave 
as a Windows client does.
       via  192fa10 s3-smbstatus: Fix exit code of profile output.
       via  9c7b253 s3-smbclient: Return success if we listed the shares.
       via  6931f8d s4-rpc: dnsserver: Fix enumeration of IPv4 and IPv6 
addresses
       via  05cace7 samba-tool: Fix the IP output of "samba-tool dns serverinfo 
<some_server>"
       via  1e02ce0 samba-tool: Fix enum values in dns.py
       via  7dfcd23 VERSION: Bump version up to 4.1.15...
      from  1eb23eb VERSION: Disable git snapshots for the 4.1.14 release.

https://git.samba.org/?p=samba.git;a=shortlog;h=v4-1-stable


- Log -----------------------------------------------------------------
-----------------------------------------------------------------------

Summary of changes:
 VERSION                                         |   2 +-
 WHATSNEW.txt                                    |  89 ++++++++++-
 buildtools/wafsamba/wafsamba.py                 |   6 +-
 libcli/smb/smbXcli_base.c                       |  18 ++-
 librpc/idl/drsuapi.idl                          | 104 ++++++++++---
 librpc/ndr/ndr_drsuapi.c                        | 190 ++++++++++++++++++++++++
 nsswitch/pam_winbind.c                          |   5 +-
 nsswitch/wscript_build                          |  24 ++-
 python/samba/netcmd/dns.py                      |  15 +-
 selftest/target/Samba.pm                        |   2 +-
 source3/client/client.c                         |   2 +-
 source3/include/local.h                         |   2 +
 source3/lib/util_cmdline.c                      |   3 +-
 source3/libnet/libnet_dssync.c                  |  21 ++-
 source3/libsmb/ntlmssp.c                        |  18 ++-
 source3/modules/vfs_ceph.c                      |  13 +-
 source3/modules/vfs_default.c                   |  17 ++-
 source3/modules/vfs_streams_xattr.c             |   5 +-
 source3/modules/vfs_time_audit.c                |   8 +-
 source3/registry/regfio.c                       |  10 +-
 source3/rpcclient/cmd_drsuapi.c                 |   4 +
 source3/script/tests/test_smbclient_s3.sh       |   4 +-
 source3/smbd/smb2_server.c                      |   5 -
 source3/smbd/smb2_sesssetup.c                   |   4 +
 source3/smbd/vfs.c                              |  22 +--
 source3/utils/profiles.c                        |   6 +-
 source3/utils/status.c                          |   7 +-
 source3/winbindd/winbindd_dual_srv.c            |  18 +++
 source3/wscript_build                           |   7 -
 source4/dsdb/repl/drepl_out_helpers.c           |  27 +++-
 source4/dsdb/samdb/ldb_modules/rootdse.c        |   6 +-
 source4/libnet/libnet_become_dc.c               |  25 +++-
 source4/libnet/libnet_unbecome_dc.c             |  25 +++-
 source4/rpc_server/dnsserver/dcerpc_dnsserver.c |  20 ++-
 source4/rpc_server/dnsserver/dnsdata.c          |  56 +++++++
 source4/rpc_server/dnsserver/dnsserver.h        |   7 +-
 source4/rpc_server/dnsserver/dnsutils.c         | 106 +++++++++----
 source4/selftest/tests.py                       |   2 +-
 source4/torture/drs/rpc/dssync.c                |  21 ++-
 source4/torture/drs/rpc/msds_intid.c            |  21 ++-
 source4/torture/rpc/dsgetinfo.c                 |  21 ++-
 testprogs/blackbox/test_ldb.sh                  |   2 +
 42 files changed, 821 insertions(+), 149 deletions(-)


Changeset truncated at 500 lines:

diff --git a/VERSION b/VERSION
index cbe4336..e5a8fba 100644
--- a/VERSION
+++ b/VERSION
@@ -25,7 +25,7 @@
 ########################################################
 SAMBA_VERSION_MAJOR=4
 SAMBA_VERSION_MINOR=1
-SAMBA_VERSION_RELEASE=14
+SAMBA_VERSION_RELEASE=15
 
 ########################################################
 # If a official release has a serious bug              #
diff --git a/WHATSNEW.txt b/WHATSNEW.txt
index f96bfdf..fe8cbeb 100644
--- a/WHATSNEW.txt
+++ b/WHATSNEW.txt
@@ -1,4 +1,89 @@
                    ==============================
+                   Release Notes for Samba 4.1.15
+                          January 12, 2015
+                   ==============================
+
+
+This is the latest stable release of Samba 4.1.
+
+
+Changes since 4.1.14:
+---------------------
+
+o   Jeremy Allison <j...@samba.org>
+    * BUG 10966: libcli: SMB2: Pure SMB2-only negprot fix to make us behave as 
a
+      Windows client does.
+    * BUG 10982 s3: smbd/modules: Fix *allocate* calls to follow POSIX error
+      return convention.
+
+
+o   Christian Ambach <a...@samba.org>
+    * BUG 9629: Fix profiles tool.
+
+
+o   Samuel Cabrero <scabr...@zentyal.com>
+    * BUG 11006: idl:drsuapi: Manage all possible lengths of 
drsuapi_DsBindInfo.
+
+
+o   Günther Deschner <g...@samba.org>
+    * BUG 9056: pam_winbind: Fix warn_pwd_expire implementation.
+
+
+o   Guenter Kukkukk <li...@kukkukk.com>
+    * BUG 10952: s4-rpc: dnsserver: Fix enumeration of IPv4 and IPv6 addresses.
+
+
+o   Stefan Metzmacher <me...@samba.org>
+    * BUG 9299: nsswitch: Fix soname of linux nss_*.so.2 modules.
+    * BUG 10949: s4:dsdb/rootdse: Expand extended dn values with the AS_SYSTEM
+      control.
+    * BUG 10958: s3:smb2_server: Allow reauthentication without signing.
+    * BUG 11006: Fix 'domain join' by adding 'drsuapi.DsBindInfoFallBack'
+      attribute 'supported_extensions'.
+
+
+o   Matthieu Patou <m...@matws.net>
+    * BUG 11006: Fix 'domain join' by adding 'drsuapi.DsBindInfoFallBack'
+      attribute 'supported_extensions'.
+
+
+o   Christof Schmitt <c...@samba.org>
+    * BUG 11034: winbind: Retry LogonControl RPC in ping-dc after session
+      expiration.
+
+
+o   Andreas Schneider <a...@samba.org>
+    * BUG 10279: s3-lib: Do not require a password with --use-ccache.
+    * BUG 10960: s3-smbclient: Return success if we listed the shares.
+    * BUG 10961: s3-smbstatus: Fix exit code of profile output.
+
+
+#######################################
+Reporting bugs & Development Discussion
+#######################################
+
+Please discuss this release on the samba-technical mailing list or by
+joining the #samba-technical IRC channel on irc.freenode.net.
+
+If you do report problems then please try to send high quality
+feedback. If you don't provide vital information to help us track down
+the problem then you will probably be ignored.  All bug reports should
+be filed under the Samba 4.1 product in the project's Bugzilla
+database (https://bugzilla.samba.org/).
+
+
+======================================================================
+== Our Code, Our Bugs, Our Responsibility.
+== The Samba Team
+======================================================================
+
+
+Release notes for older releases follow:
+----------------------------------------
+
+======================================================================
+
+                   ==============================
                    Release Notes for Samba 4.1.14
                           December 1, 2014
                    ==============================
@@ -83,10 +168,8 @@ database (https://bugzilla.samba.org/).
 ======================================================================
 
 
-Release notes for older releases follow:
-----------------------------------------
+----------------------------------------------------------------------
 
-======================================================================
 
                    ==============================
                    Release Notes for Samba 4.1.13
diff --git a/buildtools/wafsamba/wafsamba.py b/buildtools/wafsamba/wafsamba.py
index c8220c2..6f0e11b 100644
--- a/buildtools/wafsamba/wafsamba.py
+++ b/buildtools/wafsamba/wafsamba.py
@@ -109,6 +109,7 @@ def SAMBA_LIBRARY(bld, libname, source,
                   ldflags='',
                   external_library=False,
                   realname=None,
+                  keep_underscore=False,
                   autoproto=None,
                   autoproto_extra_source='',
                   group='main',
@@ -209,7 +210,10 @@ def SAMBA_LIBRARY(bld, libname, source,
                        libname)
 
     if target_type == 'PYTHON' or realname or not private_library:
-        bundled_name = libname.replace('_', '-')
+        if keep_underscore:
+            bundled_name = libname
+        else:
+            bundled_name = libname.replace('_', '-')
     else:
         bundled_name = PRIVATE_NAME(bld, libname, bundled_extension,
             private_library)
diff --git a/libcli/smb/smbXcli_base.c b/libcli/smb/smbXcli_base.c
index 25fbabd..7fadffa 100644
--- a/libcli/smb/smbXcli_base.c
+++ b/libcli/smb/smbXcli_base.c
@@ -31,6 +31,7 @@
 #include "../libcli/smb/read_smb.h"
 #include "smbXcli_base.h"
 #include "librpc/ndr/libndr.h"
+#include "local.h"
 
 struct smbXcli_conn;
 struct smbXcli_req;
@@ -2654,7 +2655,12 @@ struct tevent_req *smb2cli_req_create(TALLOC_CTX 
*mem_ctx,
                state->smb2.should_encrypt = session->smb2->should_encrypt;
 
                if (cmd == SMB2_OP_SESSSETUP &&
-                   session->smb2->signing_key.length != 0) {
+                   session->smb2_channel.signing_key.length == 0 &&
+                   session->smb2->signing_key.length != 0)
+               {
+                       /*
+                        * a session bind needs to be signed
+                        */
                        state->smb2.should_sign = true;
                }
 
@@ -3791,6 +3797,16 @@ struct tevent_req *smbXcli_negprot_send(TALLOC_CTX 
*mem_ctx,
                 */
                conn->dispatch_incoming = smb2cli_conn_dispatch_incoming;
 
+               /*
+                * As we're starting with an SMB2 negprot, emulate Windows
+                * and ask for 31 credits in the initial SMB2 negprot.
+                * If we don't and leave requested credits at
+                * zero, MacOSX servers return zero credits on
+                * the negprot reply and we fail to connect.
+                */
+               smb2cli_conn_set_max_credits(conn,
+                       WINDOWS_CLIENT_PURE_SMB2_NEGPROT_INITIAL_CREDIT_ASK);
+
                subreq = smbXcli_negprot_smb2_subreq(state);
                if (tevent_req_nomem(subreq, req)) {
                        return tevent_req_post(req, ev);
diff --git a/librpc/idl/drsuapi.idl b/librpc/idl/drsuapi.idl
index ed85205..b78a865 100644
--- a/librpc/idl/drsuapi.idl
+++ b/librpc/idl/drsuapi.idl
@@ -115,22 +115,30 @@ interface drsuapi
        } drsuapi_SupportedExtensionsExt;
 
        /* this is used by w2k */
-       typedef struct {
+       typedef [public] struct {
                drsuapi_SupportedExtensions supported_extensions;
                GUID site_guid;
                uint32 pid;
        } drsuapi_DsBindInfo24;
 
        /* this is used by w2k3 */
-       typedef struct {
+       typedef [public] struct {
                drsuapi_SupportedExtensions supported_extensions;
                GUID site_guid;
                uint32 pid;
                uint32 repl_epoch;
        } drsuapi_DsBindInfo28;
 
+       typedef [public] struct {
+               drsuapi_SupportedExtensions supported_extensions;
+               GUID site_guid;
+               uint32 pid;
+               uint32 repl_epoch;
+               drsuapi_SupportedExtensionsExt supported_extensions_ext;
+       } drsuapi_DsBindInfo32;
+
        /* this is used by w2k8 */
-       typedef struct {
+       typedef [public] struct {
                drsuapi_SupportedExtensions supported_extensions;
                GUID site_guid;
                uint32 pid;
@@ -139,15 +147,34 @@ interface drsuapi
                GUID config_dn_guid;
        } drsuapi_DsBindInfo48;
 
-       typedef struct {
+       /* this is used by w2k12 R2 [MS-DRSR] Section 5.39 */
+       typedef [public] struct {
+               drsuapi_SupportedExtensions supported_extensions;
+               GUID site_guid;
+               uint32 pid;
+               uint32 repl_epoch;
+               drsuapi_SupportedExtensionsExt supported_extensions_ext;
+               GUID config_dn_guid;
+               drsuapi_SupportedExtensionsExt supported_capabilities_ext;
+       } drsuapi_DsBindInfo52;
+
+       typedef [public] struct {
                [flag(NDR_REMAINING)] DATA_BLOB info;
        } drsuapi_DsBindInfoFallBack;
 
-       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;
+       typedef [nopull, nopush, noprint] [nodiscriminant] union {
+               [case(24)][subcontext(0), subcontext_size(24)] 
drsuapi_DsBindInfo24 info24;
+               [case(28)][subcontext(0), subcontext_size(28)] 
drsuapi_DsBindInfo28 info28;
+               [case(32)][subcontext(0), subcontext_size(32)] 
drsuapi_DsBindInfo32 info32;
+               [case(48)][subcontext(0), subcontext_size(48)] 
drsuapi_DsBindInfo48 info48;
+               [case(52)][subcontext(0), subcontext_size(52)] 
drsuapi_DsBindInfo52 info52;
+               /*
+                * The size for the defaut case is a bit arbitrary it in fact 
the value
+                * of the switch but we can't reference it.
+                * As we hand(un-)marshall this structure it has 0 impact and 
makes
+                * pidl happy for wireshark too
+                */
+               [default][subcontext(0), subcontext_size(48)] 
drsuapi_DsBindInfoFallBack Fallback;
        } drsuapi_DsBindInfo;
 
        /* the drsuapi_DsBindInfoCtr was this before
@@ -160,11 +187,44 @@ interface drsuapi
         * so we're doing it here
         */
 
+       /*
+        * MS-DRSR.pdf gives the following definition
+       typedef struct {
+               [range(1,10000)] DWORD cb;
+               [size_is(cb)] BYTE rgb[];
+       } DRS_EXTENSIONS;
+
+       But we use a subcontext which has a slighly different signification on 
how
+       data are laid out.
+       With the MS-DRSR definition we will have
+               size_is_cb cv rgb_array
+       with size_is_cb being a uint3264 and cv being a uint32
+
+       We used to have
        typedef struct {
                [range(1,10000)] uint32 length;
                [switch_is(length)] drsuapi_DsBindInfo info;
        } drsuapi_DsBindInfoCtr;
 
+       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;
+
+       With this definition data is laid out this way:
+       length subcontext_size drsuapi_DsBindInfoxx
+       with length being a uint32 and subcontext_size being a uint3264
+
+       It has clearly an impact on the way things are aligned when using NDR64
+       */
+       typedef [flag(NDR_NOALIGN)] struct {
+               [range(1,10000)] uint3264 length;
+               [value(length)] uint32 __ndr_length;
+               [switch_is(length)] drsuapi_DsBindInfo info;
+       } drsuapi_DsBindInfoCtr;
+
        /* this is a magic guid you need to pass to DsBind to make 
drsuapi_DsWriteAccountSpn() work
         *
         * maybe the bind_guid could also be the invocation_id see 
drsuapi_DsReplicaConnection04
@@ -546,7 +606,7 @@ interface drsuapi
 
        /* Generic DATA_BLOB values */
        typedef struct {
-               [range(0,10485760),value(ndr_size_DATA_BLOB(0,blob,0))] uint32 
__ndr_size;
+               [range(0,26214400),value(ndr_size_DATA_BLOB(0,blob,0))] uint32 
__ndr_size;
                DATA_BLOB *blob;
        } drsuapi_DsAttributeValue;
 
@@ -1107,12 +1167,19 @@ interface drsuapi
 
        /*****************/
         /* Function 0x10 */
+       typedef [v1_enum] enum {
+               DRSUAPI_DC_INFO_CTR_1  = 1,
+               DRSUAPI_DC_INFO_CTR_2  = 2,
+               DRSUAPI_DC_INFO_CTR_3  = 3,
+               DRSUAPI_DC_CONNECTION_CTR_01 = 0xFFFFFFFF
+       } drsuapi_DsGetDCInfoCtrLevels;
+
        typedef struct {
                [charset(UTF16),string] uint16 *domain_name; /* netbios or dns 
*/
-               int32 level; /* specifies the switch level for the request */
+               drsuapi_DsGetDCInfoCtrLevels level; /* specifies the switch 
level for the request */
        } drsuapi_DsGetDCInfoRequest1;
 
-       typedef [switch_type(int32)] union {
+       typedef [switch_type(uint32)] union {
                [case(1)] drsuapi_DsGetDCInfoRequest1 req1;
        } drsuapi_DsGetDCInfoRequest;
 
@@ -1204,14 +1271,7 @@ interface drsuapi
                [size_is(count)] drsuapi_DsGetDCConnection01 *array;
        } drsuapi_DsGetDCConnectionCtr01;
 
-       typedef [v1_enum] enum {
-               DRSUAPI_DC_INFO_CTR_1  = 1,
-               DRSUAPI_DC_INFO_CTR_2  = 2,
-               DRSUAPI_DC_INFO_CTR_3  = 3,
-               DRSUAPI_DC_CONNECTION_CTR_01 = -1
-       } drsuapi_DsGetDCInfoCtrLevels;
-
-        typedef [switch_type(int32)] union {
+        typedef [switch_type(drsuapi_DsGetDCInfoCtrLevels)] union {
                [case(DRSUAPI_DC_INFO_CTR_1)]  drsuapi_DsGetDCInfoCtr1  ctr1;
                [case(DRSUAPI_DC_INFO_CTR_2)]  drsuapi_DsGetDCInfoCtr2  ctr2;
                [case(DRSUAPI_DC_INFO_CTR_3)]  drsuapi_DsGetDCInfoCtr3  ctr3;
@@ -1220,9 +1280,9 @@ interface drsuapi
 
        WERROR drsuapi_DsGetDomainControllerInfo(
                [in] policy_handle *bind_handle,
-               [in] int32 level,
+               [in] uint32 level,
                [in,ref,switch_is(level)] drsuapi_DsGetDCInfoRequest *req,
-               [out,ref] int32 *level_out,
+               [out,ref] drsuapi_DsGetDCInfoCtrLevels *level_out,
                [out,ref,switch_is(*level_out)] drsuapi_DsGetDCInfoCtr *ctr
                );
 
diff --git a/librpc/ndr/ndr_drsuapi.c b/librpc/ndr/ndr_drsuapi.c
index f7125e6..45d3ac09 100644
--- a/librpc/ndr/ndr_drsuapi.c
+++ b/librpc/ndr/ndr_drsuapi.c
@@ -4,6 +4,7 @@
    routines for printing some linked list structs in DRSUAPI
 
    Copyright (C) Stefan (metze) Metzmacher 2005
+   Copyright (C) Matthieu Patou 2013
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -406,3 +407,192 @@ _PUBLIC_ void 
ndr_print_drsuapi_DsAddEntry_AttrErrListItem_V1(struct ndr_print *
                ndr_print_drsuapi_DsAddEntry_AttrErrListItem_V1(ndr, "next", 
r->next);
        }
 }
+
+enum ndr_err_code ndr_push_drsuapi_DsBindInfo(struct ndr_push *ndr, int 
ndr_flags, const union drsuapi_DsBindInfo *r)
+{
+       uint32_t _flags_save = ndr->flags;
+       ndr->flags = ndr->flags & ~LIBNDR_FLAG_NDR64;
+       NDR_PUSH_CHECK_FLAGS(ndr, ndr_flags);
+       if (ndr_flags & NDR_SCALARS) {
+               uint32_t level = ndr_push_get_switch_value(ndr, r);
+               NDR_CHECK(ndr_push_union_align(ndr, 4));
+               switch (level) {
+                       case 24: {
+                               {
+                                       struct ndr_push *_ndr_info24;
+                                       
NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_info24, 0, 24));
+                                       
NDR_CHECK(ndr_push_drsuapi_DsBindInfo24(_ndr_info24, NDR_SCALARS, &r->info24));
+                                       NDR_CHECK(ndr_push_subcontext_end(ndr, 
_ndr_info24, 0, 24));
+                               }
+                       break; }
+
+                       case 28: {
+                               {
+                                       struct ndr_push *_ndr_info28;
+                                       
NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_info28, 0, 28));
+                                       
NDR_CHECK(ndr_push_drsuapi_DsBindInfo28(_ndr_info28, NDR_SCALARS, &r->info28));
+                                       NDR_CHECK(ndr_push_subcontext_end(ndr, 
_ndr_info28, 0, 28));
+                               }
+                       break; }
+
+                       case 48: {
+                               {
+                                       struct ndr_push *_ndr_info48;
+                                       
NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_info48, 0, 48));
+                                       
NDR_CHECK(ndr_push_drsuapi_DsBindInfo48(_ndr_info48, NDR_SCALARS, &r->info48));
+                                       NDR_CHECK(ndr_push_subcontext_end(ndr, 
_ndr_info48, 0, 48));
+                               }
+                       break; }
+
+                       case 52: {
+                               {
+                                       struct ndr_push *_ndr_info52;
+                                       
NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_info52, 0, 52));
+                                       
NDR_CHECK(ndr_push_drsuapi_DsBindInfo52(_ndr_info52, NDR_SCALARS, &r->info52));
+                                       NDR_CHECK(ndr_push_subcontext_end(ndr, 
_ndr_info52, 0, 52));
+                               }
+                       break; }
+
+                       default: {
+                               {
+                                       struct ndr_push *_ndr_Fallback;
+                                       
NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_Fallback, 0, level));
+                                       
NDR_CHECK(ndr_push_drsuapi_DsBindInfoFallBack(_ndr_Fallback, NDR_SCALARS, 
&r->Fallback));
+                                       NDR_CHECK(ndr_push_subcontext_end(ndr, 
_ndr_Fallback, 0, level));
+                               }
+                       break; }
+
+               }
+       }
+       if (ndr_flags & NDR_BUFFERS) {
+               uint32_t level = ndr_push_get_switch_value(ndr, r);
+               switch (level) {
+                       case 24:
+                       break;
+
+                       case 28:
+                       break;
+
+                       case 48:
+                       break;
+
+                       case 52:
+                       break;
+
+                       default:
+                       break;
+
+               }
+       }
+       ndr->flags = _flags_save;
+       return NDR_ERR_SUCCESS;
+}
+
+enum ndr_err_code ndr_pull_drsuapi_DsBindInfo(struct ndr_pull *ndr, int 
ndr_flags, union drsuapi_DsBindInfo *r)
+{
+       uint32_t level;
+       uint32_t _flags_save = ndr->flags;
+       ndr->flags = ndr->flags & ~LIBNDR_FLAG_NDR64;
+       level = ndr_pull_get_switch_value(ndr, r);
+       NDR_PULL_CHECK_FLAGS(ndr, ndr_flags);
+       if (ndr_flags & NDR_SCALARS) {
+               NDR_CHECK(ndr_pull_union_align(ndr, 4));
+               switch (level) {
+                       case 24: {
+                               {
+                                       struct ndr_pull *_ndr_info24;
+                                       
NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_info24, 0, 24));
+                                       
NDR_CHECK(ndr_pull_drsuapi_DsBindInfo24(_ndr_info24, NDR_SCALARS, &r->info24));
+                                       NDR_CHECK(ndr_pull_subcontext_end(ndr, 
_ndr_info24, 0, 24));
+                               }
+                       break; }
+
+                       case 28: {
+                               {
+                                       struct ndr_pull *_ndr_info28;
+                                       
NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_info28, 0, 28));
+                                       
NDR_CHECK(ndr_pull_drsuapi_DsBindInfo28(_ndr_info28, NDR_SCALARS, &r->info28));
+                                       NDR_CHECK(ndr_pull_subcontext_end(ndr, 
_ndr_info28, 0, 28));
+                               }
+                       break; }
+
+                       case 48: {
+                               {
+                                       struct ndr_pull *_ndr_info48;
+                                       
NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_info48, 0, 48));
+                                       
NDR_CHECK(ndr_pull_drsuapi_DsBindInfo48(_ndr_info48, NDR_SCALARS, &r->info48));
+                                       NDR_CHECK(ndr_pull_subcontext_end(ndr, 
_ndr_info48, 0, 48));


-- 
Samba Shared Repository

Reply via email to