/* Samba Unix/Linux SMB client library Distributed SMB/CIFS Server Management Utility Copyright (C) 2001 Andrew Bartlett (abartlet@samba.org) 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 . */ /* * A function of this type is passed to the ' * run_rpc_command' wrapper. Must go before the net_proto.h * include */ #include "lib/netapi/netapi.h" #include "libnet/libnet.h" struct net_context { const char *opt_requester_name; const char *opt_host; const char *opt_password; const char *opt_user_name; bool opt_user_specified; const char *opt_workgroup; int opt_long_list_entries; int opt_reboot; int opt_force; int opt_stdin; int opt_port; int opt_verbose; int opt_maxusers; const char *opt_comment; const char *opt_container; int opt_flags; int opt_timeout; const char *opt_target_workgroup; int opt_machine_pass; int opt_localgroup; int opt_domaingroup; int do_talloc_report; const char *opt_newntname; int opt_rid; int opt_acls; int opt_attrs; int opt_timestamps; const char *opt_exclude; const char *opt_destination; int opt_testmode; int opt_have_ip; struct sockaddr_storage opt_dest_ip; bool smb_encrypt; struct libnetapi_ctx *netapi_ctx; bool display_usage; void *private_data; const char *share_type[]; }; #define NET_TRANSPORT_LOCAL 0x01 #define NET_TRANSPORT_RAP 0x02 #define NET_TRANSPORT_RPC 0x04 #define NET_TRANSPORT_ADS 0x08 struct functable { const char *funcname; int (*fn)(struct net_context *c, int argc, const char **argv); int valid_transports; const char *description; const char *usage; }; typedef NTSTATUS (*rpc_command_fn)(struct net_context *c, const DOM_SID *, const char *, struct cli_state *cli, struct rpc_pipe_client *, TALLOC_CTX *, int, const char **); typedef struct copy_clistate { TALLOC_CTX *mem_ctx; struct cli_state *cli_share_src; struct cli_state *cli_share_dst; char *cwd; uint16 attribute; struct net_context *c; }copy_clistate; struct rpc_sh_ctx { struct cli_state *cli; DOM_SID *domain_sid; const char *domain_name; const char *whoami; const char *thiscmd; struct rpc_sh_cmd *cmds; struct rpc_sh_ctx *parent; }; struct rpc_sh_cmd { const char *name; struct rpc_sh_cmd *(*sub)(struct net_context *c, TALLOC_CTX *mem_ctx, struct rpc_sh_ctx *ctx); int pipe_idx; NTSTATUS (*fn)(struct net_context *c, TALLOC_CTX *mem_ctx, struct rpc_sh_ctx *ctx, struct rpc_pipe_client *pipe_hnd, int argc, const char **argv); const char *help; }; enum netdom_domain_t { ND_TYPE_NT4, ND_TYPE_AD }; /* INCLUDE FILES */ #include "utils/net_proto.h" #include "utils/net_help_common.h" /* MACROS & DEFINES */ #define NET_FLAGS_MASTER 0x00000001 #define NET_FLAGS_DMB 0x00000002 #define NET_FLAGS_LOCALHOST_DEFAULT_INSANE 0x00000004 /* Would it be insane to set 'localhost' as the default remote host for this operation? For example, localhost is insane for a 'join' operation. */ #define NET_FLAGS_PDC 0x00000008 /* PDC only */ #define NET_FLAGS_ANONYMOUS 0x00000010 /* use an anonymous connection */ #define NET_FLAGS_NO_PIPE 0x00000020 /* don't open an RPC pipe */ /* net share operation modes */ #define NET_MODE_SHARE_MIGRATE 1 /* Structure for mapping accounts to groups */ /* Array element is the group rid */ typedef struct _groupmap { uint32 rid; uint32 gidNumber; fstring sambaSID; fstring group_dn; } GROUPMAP; typedef struct _accountmap { uint32 rid; fstring cn; } ACCOUNTMAP;