1/* 2 Samba Unix/Linux SMB client library 3 Distributed SMB/CIFS Server Management Utility 4 Copyright (C) 2001 Andrew Bartlett (abartlet@samba.org) 5 6 This program is free software; you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation; either version 2 of the License, or 9 (at your option) any later version. 10 11 This program is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with this program; if not, write to the Free Software 18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ 19 20/* 21 * A function of this type is passed to the ' 22 * run_rpc_command' wrapper. Must go before the net_proto.h 23 * include 24 */ 25 26typedef NTSTATUS (*rpc_command_fn)(const DOM_SID *, 27 const char *, 28 struct cli_state *cli, 29 struct rpc_pipe_client *, 30 TALLOC_CTX *, 31 int, 32 const char **); 33 34typedef struct copy_clistate { 35 TALLOC_CTX *mem_ctx; 36 struct cli_state *cli_share_src; 37 struct cli_state *cli_share_dst; 38 char *cwd; 39 uint16 attribute; 40}copy_clistate; 41 42struct rpc_sh_ctx { 43 struct cli_state *cli; 44 45 DOM_SID *domain_sid; 46 char *domain_name; 47 48 const char *whoami; 49 const char *thiscmd; 50 struct rpc_sh_cmd *cmds; 51 struct rpc_sh_ctx *parent; 52}; 53 54struct rpc_sh_cmd { 55 const char *name; 56 struct rpc_sh_cmd *(*sub)(TALLOC_CTX *mem_ctx, 57 struct rpc_sh_ctx *ctx); 58 int pipe_idx; 59 NTSTATUS (*fn)(TALLOC_CTX *mem_ctx, struct rpc_sh_ctx *ctx, 60 struct rpc_pipe_client *pipe_hnd, 61 int argc, const char **argv); 62 const char *help; 63}; 64 65enum netdom_domain_t { ND_TYPE_NT4, ND_TYPE_AD }; 66 67/* INCLUDE FILES */ 68 69#include "utils/net_proto.h" 70 71/* MACROS & DEFINES */ 72 73#define NET_FLAGS_MASTER 0x00000001 74#define NET_FLAGS_DMB 0x00000002 75#define NET_FLAGS_LOCALHOST_DEFAULT_INSANE 0x00000004 /* Would it be insane to set 'localhost' 76 as the default remote host for this 77 operation? For example, localhost 78 is insane for a 'join' operation. */ 79#define NET_FLAGS_PDC 0x00000008 /* PDC only */ 80#define NET_FLAGS_ANONYMOUS 0x00000010 /* use an anonymous connection */ 81#define NET_FLAGS_NO_PIPE 0x00000020 /* don't open an RPC pipe */ 82 83/* net share operation modes */ 84#define NET_MODE_SHARE_MIGRATE 1 85 86extern int opt_maxusers; 87extern const char *opt_comment; 88extern const char *opt_container; 89extern int opt_flags; 90 91extern const char *opt_comment; 92 93extern const char *opt_target_workgroup; 94extern const char *opt_workgroup; 95extern int opt_long_list_entries; 96extern int opt_verbose; 97extern int opt_reboot; 98extern int opt_force; 99extern int opt_machine_pass; 100extern int opt_timeout; 101extern const char *opt_host; 102extern const char *opt_user_name; 103extern const char *opt_password; 104extern BOOL opt_user_specified; 105 106extern BOOL opt_localgroup; 107extern BOOL opt_domaingroup; 108extern const char *opt_newntname; 109extern int opt_rid; 110extern int opt_acls; 111extern int opt_attrs; 112extern int opt_timestamps; 113extern const char *opt_exclude; 114extern const char *opt_destination; 115 116extern BOOL opt_have_ip; 117extern struct in_addr opt_dest_ip; 118 119extern const char *share_type[]; 120 121/* Structure for mapping accounts to groups */ 122/* Array element is the group rid */ 123typedef struct _groupmap { 124 uint32 rid; 125 uint32 gidNumber; 126 fstring sambaSID; 127 fstring group_dn; 128} GROUPMAP; 129 130typedef struct _accountmap { 131 uint32 rid; 132 fstring cn; 133} ACCOUNTMAP; 134