1/* 2 Unix SMB/CIFS implementation. 3 RPC pipe client 4 5 Copyright (C) Gerald Carter 2002 6 Copyright (C) Guenther Deschner 2008 7 8 This program is free software; you can redistribute it and/or modify 9 it under the terms of the GNU General Public License as published by 10 the Free Software Foundation; either version 3 of the License, or 11 (at your option) any later version. 12 13 This program is distributed in the hope that it will be useful, 14 but WITHOUT ANY WARRANTY; without even the implied warranty of 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 GNU General Public License for more details. 17 18 You should have received a copy of the GNU General Public License 19 along with this program. If not, see <http://www.gnu.org/licenses/>. 20*/ 21 22#include "includes.h" 23#include "rpcclient.h" 24#include "../librpc/gen_ndr/cli_dssetup.h" 25 26/* Look up domain related information on a remote host */ 27 28static WERROR cmd_ds_dsrole_getprimarydominfo(struct rpc_pipe_client *cli, 29 TALLOC_CTX *mem_ctx, int argc, 30 const char **argv) 31{ 32 NTSTATUS status; 33 WERROR werr; 34 union dssetup_DsRoleInfo info; 35 36 status = rpccli_dssetup_DsRoleGetPrimaryDomainInformation(cli, mem_ctx, 37 DS_ROLE_BASIC_INFORMATION, 38 &info, 39 &werr); 40 if (!NT_STATUS_IS_OK(status)) { 41 return ntstatus_to_werror(status); 42 } 43 44 if (!W_ERROR_IS_OK(werr)) { 45 return werr; 46 } 47 48 printf ("Machine Role = [%d]\n", info.basic.role); 49 50 if (info.basic.flags & DS_ROLE_PRIMARY_DS_RUNNING) { 51 printf("Directory Service is running.\n"); 52 printf("Domain is in %s mode.\n", 53 (info.basic.flags & DS_ROLE_PRIMARY_DS_MIXED_MODE) ? "mixed" : "native" ); 54 } else { 55 printf("Directory Service not running on server\n"); 56 } 57 58 return werr; 59} 60 61/* List of commands exported by this module */ 62 63struct cmd_set ds_commands[] = { 64 65 { "LSARPC-DS" }, 66 67 { "dsroledominfo", RPC_RTYPE_WERROR, NULL, cmd_ds_dsrole_getprimarydominfo, &ndr_table_dssetup.syntax_id, NULL, "Get Primary Domain Information", "" }, 68 69{ NULL } 70}; 71