The branch, v3-2-test has been updated
       via  d5ebfccebb1f1b56b45673a506fcdb414103c43b (commit)
      from  4b3d96be8017a38a6af4ce58ae54a6af005fbe3e (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test


- Log -----------------------------------------------------------------
commit d5ebfccebb1f1b56b45673a506fcdb414103c43b
Author: Günther Deschner <[EMAIL PROTECTED]>
Date:   Fri Jan 25 13:26:10 2008 +0100

    Use generated DSSETUP client & server rpc functions and remove the 
hand-written ones.
    
    Guenther

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

Summary of changes:
 source/Makefile.in                 |   10 +-
 source/configure.in                |    4 +-
 source/include/rpc_client.h        |    1 +
 source/include/rpc_ds.h            |   66 -----------
 source/include/smb.h               |    3 +-
 source/rpc_client/cli_ds.c         |   42 -------
 source/rpc_client/cli_pipe.c       |    2 +-
 source/rpc_parse/parse_ds.c        |  111 ------------------
 source/rpc_server/srv_dssetup_nt.c |  220 ++++++++++++++++++++++++++++++++++++
 source/rpc_server/srv_lsa_ds.c     |   85 --------------
 source/rpc_server/srv_lsa_ds_nt.c  |  130 ---------------------
 source/rpc_server/srv_pipe.c       |    4 +-
 source/rpcclient/cmd_ds.c          |   51 +++++----
 source/winbindd/winbindd_cm.c      |   31 +++---
 14 files changed, 281 insertions(+), 479 deletions(-)
 create mode 100644 source/rpc_server/srv_dssetup_nt.c
 delete mode 100644 source/rpc_server/srv_lsa_ds.c
 delete mode 100644 source/rpc_server/srv_lsa_ds_nt.c


Changeset truncated at 500 lines:

diff --git a/source/Makefile.in b/source/Makefile.in
index e30d13e..08a0c14 100644
--- a/source/Makefile.in
+++ b/source/Makefile.in
@@ -276,6 +276,7 @@ LIBNDR_GEN_OBJ = librpc/gen_ndr/ndr_wkssvc.o \
                 librpc/gen_ndr/ndr_eventlog.o \
                 librpc/gen_ndr/ndr_netlogon.o \
                 librpc/gen_ndr/ndr_samr.o \
+                librpc/gen_ndr/ndr_dssetup.o \
                 librpc/gen_ndr/ndr_notify.o \
                 librpc/gen_ndr/ndr_xattr.o \
                 librpc/gen_ndr/ndr_libnet_join.o
@@ -409,6 +410,7 @@ LIBMSRPC_GEN_OBJ = librpc/gen_ndr/cli_lsa.o \
                   librpc/gen_ndr/cli_wkssvc.o \
                   librpc/gen_ndr/cli_netlogon.o \
                   librpc/gen_ndr/cli_samr.o \
+                  librpc/gen_ndr/cli_dssetup.o \
                   $(LIBNDR_GEN_OBJ) \
                   $(RPCCLIENT_NDR_OBJ)
 
@@ -474,7 +476,7 @@ RPC_REG_OBJ =  rpc_server/srv_winreg_nt.o \
               librpc/gen_ndr/srv_winreg.o \
               $(REGFIO_OBJ)
 
-RPC_LSA_DS_OBJ =  rpc_server/srv_lsa_ds.o rpc_server/srv_lsa_ds_nt.o
+RPC_DSSETUP_OBJ =  rpc_server/srv_dssetup_nt.o librpc/gen_ndr/srv_dssetup.o
 
 RPC_SVC_OBJ = rpc_server/srv_srvsvc.o rpc_server/srv_srvsvc_nt.o \
              librpc/gen_ndr/srv_srvsvc.o
@@ -900,7 +902,7 @@ PROTO_OBJ = $(SMBD_OBJ_MAIN) $(LIBNDR_OBJ) 
$(LIBNDR_GEN_OBJ) \
            $(PASSDB_OBJ) $(GROUPDB_OBJ) \
            $(READLINE_OBJ) $(PROFILE_OBJ) $(LIBADS_OBJ) $(LIBADS_SERVER_OBJ) \
            $(AUTH_SAM_OBJ) $(REGISTRY_OBJ) $(POPT_LIB_OBJ) \
-           $(RPC_LSA_OBJ) $(RPC_NETLOG_OBJ) $(RPC_SAMR_OBJ) $(RPC_REG_OBJ) 
$(RPC_LSA_DS_OBJ) \
+           $(RPC_LSA_OBJ) $(RPC_NETLOG_OBJ) $(RPC_SAMR_OBJ) $(RPC_REG_OBJ) 
$(RPC_DSSETUP_OBJ) \
            $(RPC_SVC_OBJ) $(RPC_WKS_OBJ) $(RPC_DFS_OBJ) $(RPC_SPOOLSS_OBJ) \
            $(RPC_ECHO_OBJ) $(RPC_SVCCTL_OBJ) $(RPC_EVENTLOG_OBJ) 
$(SMBLDAP_OBJ) \
             $(IDMAP_OBJ) libsmb/spnego.o $(PASSCHANGE_OBJ) $(RPC_UNIXINFO_OBJ) 
\
@@ -1543,9 +1545,9 @@ bin/[EMAIL PROTECTED]@: $(BINARY_PREREQS) 
$(RPC_INITSHUTDOWN_OBJ)
        @echo "Linking $@"
        @$(SHLD_MODULE) $(RPC_INITSHUTDOWN_OBJ)
 
-bin/[EMAIL PROTECTED]@: $(BINARY_PREREQS) $(RPC_LSA_DS_OBJ)
+bin/[EMAIL PROTECTED]@: $(BINARY_PREREQS) $(RPC_DSSETUP_OBJ)
        @echo "Linking $@"
-       @$(SHLD_MODULE) $(RPC_LSA_DS_OBJ)
+       @$(SHLD_MODULE) $(RPC_DSSETUP_OBJ)
 
 bin/[EMAIL PROTECTED]@: $(BINARY_PREREQS) $(RPC_SPOOLSS_OBJ)
        @echo "Linking $@"
diff --git a/source/configure.in b/source/configure.in
index fcbe56f..7878cd9 100644
--- a/source/configure.in
+++ b/source/configure.in
@@ -704,7 +704,7 @@ AC_SUBST(DYNEXP)
 
 dnl Add modules that have to be built by default here
 dnl These have to be built static:
-default_static_modules="pdb_smbpasswd pdb_tdbsam rpc_lsa rpc_samr rpc_winreg 
rpc_initshutdown rpc_lsa_ds rpc_wkssvc rpc_svcctl2 rpc_ntsvcs rpc_net 
rpc_netdfs rpc_srvsvc2 rpc_spoolss rpc_eventlog2 auth_sam auth_unix 
auth_winbind auth_server auth_domain auth_builtin vfs_default nss_info_template"
+default_static_modules="pdb_smbpasswd pdb_tdbsam rpc_lsa rpc_samr rpc_winreg 
rpc_initshutdown rpc_dssetup rpc_wkssvc rpc_svcctl2 rpc_ntsvcs rpc_net 
rpc_netdfs rpc_srvsvc2 rpc_spoolss rpc_eventlog2 auth_sam auth_unix 
auth_winbind auth_server auth_domain auth_builtin vfs_default nss_info_template"
 
 dnl These are preferably build shared, and static if dlopen() is not available
 default_shared_modules="vfs_recycle vfs_audit vfs_extd_audit vfs_full_audit 
vfs_netatalk vfs_fake_perms vfs_default_quota vfs_readonly vfs_cap 
vfs_expand_msdfs vfs_shadow_copy vfs_shadow_copy2 charset_CP850 charset_CP437 
auth_script vfs_readahead vfs_syncops vfs_xattr_tdb vfs_streams_xattr"
@@ -6434,7 +6434,7 @@ SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
 SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
 SMB_MODULE(rpc_winreg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
 SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), 
"bin/librpc_initshutdown.$SHLIBEXT", RPC)
-SMB_MODULE(rpc_lsa_ds, \$(RPC_LSA_DS_OBJ), "bin/librpc_lsa_ds.$SHLIBEXT", RPC)
+SMB_MODULE(rpc_dssetup, \$(RPC_DSSETUP_OBJ), "bin/librpc_dssetup.$SHLIBEXT", 
RPC)
 SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
 SMB_MODULE(rpc_svcctl2, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl2.$SHLIBEXT", 
RPC)
 SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
diff --git a/source/include/rpc_client.h b/source/include/rpc_client.h
index 01e2a84..c560fd0 100644
--- a/source/include/rpc_client.h
+++ b/source/include/rpc_client.h
@@ -33,6 +33,7 @@
 #include "librpc/gen_ndr/cli_srvsvc.h"
 #include "librpc/gen_ndr/cli_samr.h"
 #include "librpc/gen_ndr/cli_netlogon.h"
+#include "librpc/gen_ndr/cli_dssetup.h"
 
 /* macro to expand cookie-cutter code in cli_xxx() using rpc_api_pipe_req() */
 
diff --git a/source/include/rpc_ds.h b/source/include/rpc_ds.h
index 1ba02ae..0278b61 100644
--- a/source/include/rpc_ds.h
+++ b/source/include/rpc_ds.h
@@ -20,82 +20,16 @@
 #ifndef _RPC_DS_H /* _RPC_LSA_H */
 #define _RPC_DS_H 
 
-/* Opcodes available on PIPE_LSARPC_DS */
-
-#define DS_GETPRIMDOMINFO      0x00
-#define DS_NOP                 0xFF    /* no op -- placeholder */
-
 /* Opcodes available on PIPE_NETLOGON */
 
 #define DS_ENUM_DOM_TRUSTS      0x28
 
-/* macros for RPC's */
-
-/* DSROLE_PRIMARY_DOMAIN_INFO_BASIC */
-
-/* flags */
-
-#define DSROLE_PRIMARY_DS_RUNNING           0x00000001
-#define DSROLE_PRIMARY_DS_MIXED_MODE        0x00000002
-#define DSROLE_UPGRADE_IN_PROGRESS          0x00000004
-#define DSROLE_PRIMARY_DOMAIN_GUID_PRESENT  0x01000000
-
-/* machine role */
-
-#define DSROLE_DOMAIN_MEMBER_WKS       1
-#define DSROLE_STANDALONE_SRV          2       
-#define DSROLE_DOMAIN_MEMBER_SRV       3
-#define DSROLE_BDC                     4
-#define DSROLE_PDC                     5
-
 /* Settings for the domainFunctionality attribute in the rootDSE */
 
 #define DS_DOMAIN_FUNCTION_2000                0
 #define DS_DOMAIN_FUCNTION_2003_MIXED  1
 #define DS_DOMAIN_FUNCTION_2003                2
 
-typedef struct
-{
-       uint16          machine_role;
-       uint32          flags;  
-       uint32          netbios_ptr;
-       uint32          dnsname_ptr;
-       uint32          forestname_ptr;
-       
-       struct GUID     domain_guid;    
-       UNISTR2 netbios_domain;
-       UNISTR2 dns_domain;     /* our dns domain */
-       UNISTR2 forest_domain;  /* root domain of the forest to which we belong 
*/
-} DSROLE_PRIMARY_DOMAIN_INFO_BASIC;
-
-typedef struct
-{
-       DSROLE_PRIMARY_DOMAIN_INFO_BASIC        *basic;
-} DS_DOMINFO_CTR;
-
-/* info levels for ds_getprimdominfo() */
-
-#define DsRolePrimaryDomainInfoBasic           1
-
-/* DS_Q_GETPRIMDOMINFO - DsGetPrimaryDomainInformation() request */
-typedef struct 
-{
-       uint16  level;
-} DS_Q_GETPRIMDOMINFO;
-
-/* DS_R_GETPRIMDOMINFO - DsGetPrimaryDomainInformation() response */
-typedef struct 
-{
-       uint32          ptr;
-               
-       uint16          level;
-       uint16          unknown0;       /* 0x455c -- maybe just alignment? */
-
-       DS_DOMINFO_CTR  info;
-       
-       NTSTATUS status;
-} DS_R_GETPRIMDOMINFO;
-
 typedef struct {
        /* static portion of structure */
        uint32          netbios_ptr;
diff --git a/source/include/smb.h b/source/include/smb.h
index 3160365..3e0c997 100644
--- a/source/include/smb.h
+++ b/source/include/smb.h
@@ -193,7 +193,7 @@ typedef uint32 codepoint_t;
 #define PIPE_NETLOGON_PLAIN "\\NETLOGON"
 
 #define PI_LSARPC              0
-#define PI_LSARPC_DS           1
+#define PI_DSSETUP             1
 #define PI_SAMR                        2
 #define PI_NETLOGON            3
 #define PI_SRVSVC              4
@@ -306,6 +306,7 @@ extern const DATA_BLOB data_blob_null;
 #include "librpc/gen_ndr/svcctl.h"
 #include "librpc/gen_ndr/netlogon.h"
 #include "librpc/gen_ndr/samr.h"
+#include "librpc/gen_ndr/dssetup.h"
 #include "librpc/gen_ndr/libnet_join.h"
 
 struct lsa_dom_info {
diff --git a/source/rpc_client/cli_ds.c b/source/rpc_client/cli_ds.c
index 71516b8..c9724de 100644
--- a/source/rpc_client/cli_ds.c
+++ b/source/rpc_client/cli_ds.c
@@ -23,48 +23,6 @@
 /* implementations of client side DsXXX() functions */
 
 /********************************************************************
- Get information about the server and directory services
-********************************************************************/
-
-NTSTATUS rpccli_ds_getprimarydominfo(struct rpc_pipe_client *cli,
-                                    TALLOC_CTX *mem_ctx, 
-                                    uint16 level, DS_DOMINFO_CTR *ctr)
-{
-       prs_struct qbuf, rbuf;
-       DS_Q_GETPRIMDOMINFO q;
-       DS_R_GETPRIMDOMINFO r;
-       NTSTATUS result;
-
-       ZERO_STRUCT(q);
-       ZERO_STRUCT(r);
-
-       q.level = level;
-       
-       CLI_DO_RPC( cli, mem_ctx, PI_LSARPC_DS, DS_GETPRIMDOMINFO,
-               q, r,
-               qbuf, rbuf,
-               ds_io_q_getprimdominfo,
-               ds_io_r_getprimdominfo,
-               NT_STATUS_UNSUCCESSFUL);
-       
-       /* Return basic info - if we are requesting at info != 1 then
-          there could be trouble. */ 
-
-       result = r.status;
-
-       if ( r.ptr && ctr ) {
-               ctr->basic = TALLOC_P(mem_ctx, 
DSROLE_PRIMARY_DOMAIN_INFO_BASIC);
-               if (!ctr->basic)
-                       goto done;
-               memcpy(ctr->basic, r.info.basic, 
sizeof(DSROLE_PRIMARY_DOMAIN_INFO_BASIC));
-       }
-       
-done:
-
-       return result;
-}
-
-/********************************************************************
  Enumerate trusted domains in an AD forest
 ********************************************************************/
 
diff --git a/source/rpc_client/cli_pipe.c b/source/rpc_client/cli_pipe.c
index 81b2ea5..40d0ac5 100644
--- a/source/rpc_client/cli_pipe.c
+++ b/source/rpc_client/cli_pipe.c
@@ -2263,7 +2263,7 @@ struct rpc_pipe_client *cli_rpc_pipe_open_noauth(struct 
cli_state *cli, int pipe
        *perr = rpc_pipe_bind(result, PIPE_AUTH_TYPE_NONE, 
PIPE_AUTH_LEVEL_NONE);
        if (!NT_STATUS_IS_OK(*perr)) {
                int lvl = 0;
-               if (pipe_idx == PI_LSARPC_DS) {
+               if (pipe_idx == PI_DSSETUP) {
                        /* non AD domains just don't have this pipe, avoid
                         * level 0 statement in that case - gd */
                        lvl = 3;
diff --git a/source/rpc_parse/parse_ds.c b/source/rpc_parse/parse_ds.c
index 8f3ce36..3cf4156 100644
--- a/source/rpc_parse/parse_ds.c
+++ b/source/rpc_parse/parse_ds.c
@@ -21,117 +21,6 @@
 #include "includes.h"
 
 /************************************************************************
-************************************************************************/
-
-static bool ds_io_dominfobasic(const char *desc, 
DSROLE_PRIMARY_DOMAIN_INFO_BASIC **basic, prs_struct *ps, int depth)
-{
-       DSROLE_PRIMARY_DOMAIN_INFO_BASIC *p = *basic;
-       
-       if ( UNMARSHALLING(ps) ) {
-               p = *basic = PRS_ALLOC_MEM(ps, 
DSROLE_PRIMARY_DOMAIN_INFO_BASIC, 1);
-       }
-               
-       if ( !p )
-               return False;
-               
-       if ( !prs_uint16("machine_role", ps, depth, &p->machine_role) )
-               return False;
-       if ( !prs_align(ps) )
-               return False;
-
-       if ( !prs_uint32("flags", ps, depth, &p->flags) )
-               return False;
-
-       if ( !prs_uint32("netbios_ptr", ps, depth, &p->netbios_ptr) )
-               return False;
-       if ( !prs_uint32("dnsname_ptr", ps, depth, &p->dnsname_ptr) )
-               return False;
-       if ( !prs_uint32("forestname_ptr", ps, depth, &p->forestname_ptr) )
-               return False;
-               
-       if ( !smb_io_uuid("domain_guid", &p->domain_guid, ps, depth) )
-               return False;
-               
-       if ( !smb_io_unistr2( "netbios_domain", &p->netbios_domain, 
p->netbios_ptr, ps, depth) )
-               return False;
-       if ( !prs_align(ps) )
-               return False;
-       
-       if ( !smb_io_unistr2( "dns_domain", &p->dns_domain, p->dnsname_ptr, ps, 
depth) )
-               return False;
-       if ( !prs_align(ps) )
-               return False;
-       
-       if ( !smb_io_unistr2( "forest_domain", &p->forest_domain, 
p->forestname_ptr, ps, depth) )
-               return False;
-       if ( !prs_align(ps) )
-               return False;
-       
-               
-       return True;
-               
-}
-
-/************************************************************************
-************************************************************************/
-
-bool ds_io_q_getprimdominfo( const char *desc, DS_Q_GETPRIMDOMINFO *q_u, 
prs_struct *ps, int depth)
-{
-       prs_debug(ps, depth, desc, "ds_io_q_getprimdominfo");
-       depth++;
-
-       if(!prs_align(ps))
-               return False;
-
-       if ( !prs_uint16( "level", ps, depth, &q_u->level ) )
-               return False;
-               
-       return True;
-}
-
-/************************************************************************
-************************************************************************/
-
-bool ds_io_r_getprimdominfo( const char *desc, DS_R_GETPRIMDOMINFO *r_u, 
prs_struct *ps, int depth)
-{
-       prs_debug(ps, depth, desc, "ds_io_r_getprimdominfo");
-       depth++;
-
-       if(!prs_align(ps))
-               return False;
-
-       if ( !prs_uint32( "ptr", ps, depth, &r_u->ptr ) )
-               return False;
-               
-       if ( r_u->ptr )
-       {
-               if ( !prs_uint16( "level", ps, depth, &r_u->level ) )
-                       return False;
-       
-               if ( !prs_uint16( "unknown0", ps, depth, &r_u->unknown0 ) )
-                       return False;
-               
-               switch ( r_u->level )
-               {
-                       case DsRolePrimaryDomainInfoBasic:
-                               if ( !ds_io_dominfobasic( "dominfobasic", 
&r_u->info.basic, ps, depth) )
-                                       return False;
-                               break;
-                       default:
-                               return False;
-               }
-       }
-
-       if ( !prs_align(ps) )
-               return False;
-       
-       if ( !prs_ntstatus("status", ps, depth, &r_u->status ) )
-               return False;           
-               
-       return True;
-}
-
-/************************************************************************
  initialize a DS_ENUM_DOM_TRUSTS structure
 ************************************************************************/
 
diff --git a/source/rpc_server/srv_dssetup_nt.c 
b/source/rpc_server/srv_dssetup_nt.c
new file mode 100644
index 0000000..ea535a3
--- /dev/null
+++ b/source/rpc_server/srv_dssetup_nt.c
@@ -0,0 +1,220 @@
+/*
+ *  Unix SMB/CIFS implementation.
+ *  RPC Pipe client / server routines
+ *  Copyright (C) Andrew Tridgell               1992-1997.
+ *  Copyright (C) Luke Kenneth Casson Leighton  1996-1997.
+ *  Copyright (C) Paul Ashton                        1997.
+ *  Copyright (C) Jeremy Allison                     2001.
+ *  Copyright (C) Gerald Carter                      2002.
+ *  Copyright (C) Guenther Deschner                  2008.
+ *
+ *  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
+ *  the Free Software Foundation; either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "includes.h"
+
+#undef DBGC_CLASS
+#define DBGC_CLASS DBGC_RPC_SRV
+
+/********************************************************************
+ Fill in a dssetup_DsRolePrimaryDomInfoBasic structure
+ ********************************************************************/
+
+static WERROR fill_dsrole_dominfo_basic(TALLOC_CTX *ctx,
+                                       struct 
dssetup_DsRolePrimaryDomInfoBasic **info)
+{
+       struct dssetup_DsRolePrimaryDomInfoBasic *basic = NULL;
+       fstring dnsdomain;
+
+       DEBUG(10,("fill_dsrole_dominfo_basic: enter\n"));
+
+       basic = TALLOC_ZERO_P(ctx, struct dssetup_DsRolePrimaryDomInfoBasic);
+       if (!basic) {
+               DEBUG(0,("fill_dsrole_dominfo_basic: out of memory\n"));
+               return WERR_NOMEM;
+       }
+
+       switch (lp_server_role()) {
+               case ROLE_STANDALONE:
+                       basic->role = DS_ROLE_STANDALONE_SERVER;
+                       basic->domain = get_global_sam_name();
+                       break;
+               case ROLE_DOMAIN_MEMBER:
+                       basic->role = DS_ROLE_MEMBER_SERVER;
+                       basic->domain = lp_workgroup();
+                       break;
+               case ROLE_DOMAIN_BDC:
+                       basic->role = DS_ROLE_BACKUP_DC;
+                       basic->domain = get_global_sam_name();
+                       break;
+               case ROLE_DOMAIN_PDC:
+                       basic->role = DS_ROLE_PRIMARY_DC;
+                       basic->domain = get_global_sam_name();
+                       break;
+       }
+
+       if (secrets_fetch_domain_guid(lp_workgroup(), &basic->domain_guid)) {
+               basic->flags |= DS_ROLE_PRIMARY_DOMAIN_GUID_PRESENT;
+       }
+
+       /* fill in some additional fields if we are a member of an AD domain */
+
+       if (lp_security() == SEC_ADS) {
+               fstrcpy(dnsdomain, lp_realm());
+               strlower_m(dnsdomain);
+               basic->dns_domain = dnsdomain;
+
+               /* FIXME!! We really should fill in the correct forest
+                  name.  Should get this information from winbindd.  */
+               basic->forest = dnsdomain;
+       } else {
+               /* security = domain should not fill in the dns or
+                  forest name */
+               basic->dns_domain = NULL;
+               basic->forest = NULL;
+       }
+
+       *info = basic;
+
+       return WERR_OK;
+}
+
+/********************************************************************
+ Implement the _dssetup_DsRoleGetPrimaryDomainInformation() call
+ ********************************************************************/
+
+WERROR _dssetup_DsRoleGetPrimaryDomainInformation(pipes_struct *p,
+                                                 struct 
dssetup_DsRoleGetPrimaryDomainInformation *r)
+{
+       WERROR werr = WERR_OK;
+
+       switch (r->in.level) {
+
+               case DS_ROLE_BASIC_INFORMATION: {
+                       struct dssetup_DsRolePrimaryDomInfoBasic *basic = NULL;
+                       werr = fill_dsrole_dominfo_basic(p->mem_ctx, &basic);
+                       if (W_ERROR_IS_OK(werr)) {
+                               r->out.info->basic = *basic;
+                       }
+                       break;
+               }
+               default:
+                       DEBUG(0,("_dssetup_DsRoleGetPrimaryDomainInformation: "
+                               "Unknown info level [%d]!\n", r->in.level));


-- 
Samba Shared Repository

Reply via email to