~vcs-imports/samba/main

« back to all changes in this revision

Viewing changes to source/rpcclient/cmd_ds.c

  • Committer: jerry
  • Date: 2006-07-14 21:48:39 UTC
  • Revision ID: vcs-imports@canonical.com-20060714214839-586d8c489a8fcead
gutting trunk to move to svn:externals

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* 
2
 
   Unix SMB/CIFS implementation.
3
 
   RPC pipe client
4
 
 
5
 
   Copyright (C) Gerald Carter 2002
6
 
 
7
 
   This program is free software; you can redistribute it and/or modify
8
 
   it under the terms of the GNU General Public License as published by
9
 
   the Free Software Foundation; either version 2 of the License, or
10
 
   (at your option) any later version.
11
 
   
12
 
   This program is distributed in the hope that it will be useful,
13
 
   but WITHOUT ANY WARRANTY; without even the implied warranty of
14
 
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
 
   GNU General Public License for more details.
16
 
   
17
 
   You should have received a copy of the GNU General Public License
18
 
   along with this program; if not, write to the Free Software
19
 
   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20
 
*/
21
 
 
22
 
#include "includes.h"
23
 
#include "rpcclient.h"
24
 
 
25
 
/* Look up domain related information on a remote host */
26
 
 
27
 
static NTSTATUS cmd_ds_dsrole_getprimarydominfo(struct rpc_pipe_client *cli, 
28
 
                                     TALLOC_CTX *mem_ctx, int argc, 
29
 
                                     const char **argv) 
30
 
{
31
 
        NTSTATUS result;
32
 
        DS_DOMINFO_CTR  ctr;
33
 
        
34
 
        result = rpccli_ds_getprimarydominfo( cli, mem_ctx, DsRolePrimaryDomainInfoBasic, &ctr );
35
 
        if ( NT_STATUS_IS_OK(result) )
36
 
        {
37
 
                printf ("Machine Role = [%d]\n", ctr.basic->machine_role);
38
 
                
39
 
                if ( ctr.basic->flags & DSROLE_PRIMARY_DS_RUNNING )     {
40
 
                        printf( "Directory Service is running.\n");
41
 
                        printf( "Domain is in %s mode.\n", (ctr.basic->flags & DSROLE_PRIMARY_DS_MIXED_MODE) ? "mixed" : "native" );
42
 
                }
43
 
                else
44
 
                        printf( "Directory Service not running on server\n");
45
 
        }
46
 
        
47
 
        return result;
48
 
}
49
 
 
50
 
static NTSTATUS cmd_ds_enum_domain_trusts(struct rpc_pipe_client *cli,
51
 
                                     TALLOC_CTX *mem_ctx, int argc, 
52
 
                                     const char **argv) 
53
 
{
54
 
        NTSTATUS                result;
55
 
        uint32                  flags = DS_DOMAIN_IN_FOREST;
56
 
        struct ds_domain_trust   *trusts = NULL;
57
 
        unsigned int                    num_domains = 0;
58
 
        int i;
59
 
        
60
 
        if (argc > 1) {
61
 
                flags = atoi(argv[1]);
62
 
        }
63
 
 
64
 
        result = rpccli_ds_enum_domain_trusts( cli, mem_ctx, cli->cli->desthost, flags, 
65
 
                &trusts, &num_domains );
66
 
        
67
 
        printf( "%d domains returned\n", num_domains );
68
 
 
69
 
        for (i=0; i<num_domains; i++ ) 
70
 
                printf("%s (%s)\n", trusts[i].dns_domain, trusts[i].netbios_domain);
71
 
        
72
 
        return result;
73
 
}
74
 
 
75
 
/* List of commands exported by this module */
76
 
 
77
 
struct cmd_set ds_commands[] = {
78
 
 
79
 
        { "LSARPC-DS" },
80
 
 
81
 
        { "dsroledominfo",   RPC_RTYPE_NTSTATUS, cmd_ds_dsrole_getprimarydominfo, NULL, PI_LSARPC_DS, NULL, "Get Primary Domain Information", "" },
82
 
        { "dsenumdomtrusts", RPC_RTYPE_NTSTATUS, cmd_ds_enum_domain_trusts,       NULL, PI_NETLOGON,  NULL, "Enumerate all trusted domains in an AD forest", "" },
83
 
 
84
 
{ NULL }
85
 
};