2008-05-08 11:14:16 +04:00
/*
Samba Unix / Linux SMB client library
Distributed SMB / CIFS Server Management Utility
2001-12-03 09:49:47 +03:00
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
2007-07-09 23:25:36 +04:00
the Free Software Foundation ; either version 3 of the License , or
2001-12-03 09:49:47 +03:00
( at your option ) any later version .
2008-05-08 11:14:16 +04:00
2001-12-03 09:49:47 +03:00
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 .
2008-05-08 11:14:16 +04:00
2001-12-03 09:49:47 +03:00
You should have received a copy of the GNU General Public License
2007-07-10 04:52:41 +04:00
along with this program . If not , see < http : //www.gnu.org/licenses/>. */
2002-07-15 14:35:28 +04:00
2008-05-08 11:14:16 +04:00
/*
2005-01-18 17:46:24 +03:00
* A function of this type is passed to the '
2008-05-08 11:14:16 +04:00
* run_rpc_command ' wrapper . Must go before the net_proto . h
2005-01-18 17:46:24 +03:00
* include
*/
2008-04-16 04:16:08 +04:00
# include "lib/netapi/netapi.h"
2008-06-13 14:20:01 +04:00
# include "libnet/libnet.h"
2008-04-16 04:16:08 +04:00
2008-05-21 12:47:59 +04:00
struct net_context {
const char * opt_requester_name ;
const char * opt_host ;
int opt_long_list_entries ;
2009-05-14 13:39:01 +04:00
const char * opt_workgroup ;
2008-05-21 12:47:59 +04:00
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 ;
2009-03-26 22:32:55 +03:00
int opt_request_timeout ;
2008-05-21 12:47:59 +04:00
const char * opt_target_workgroup ;
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 ;
2008-07-30 19:46:13 +04:00
int opt_force_full_repl ;
2008-08-01 01:05:45 +04:00
int opt_single_obj_repl ;
2008-08-01 02:12:18 +04:00
int opt_clean_old_entries ;
2008-05-21 12:47:59 +04:00
int opt_have_ip ;
struct sockaddr_storage opt_dest_ip ;
struct libnetapi_ctx * netapi_ctx ;
2009-05-14 13:39:01 +04:00
struct user_auth_info * auth_info ;
2008-05-21 12:47:59 +04:00
2008-05-22 11:41:21 +04:00
bool display_usage ;
2008-05-19 02:19:18 +04:00
void * private_data ;
2008-05-21 12:47:59 +04:00
} ;
2008-11-11 20:59:21 +03:00
struct net_dc_info {
bool is_dc ;
bool is_pdc ;
bool is_ad ;
bool is_mixed_mode ;
const char * netbios_domain_name ;
const char * dns_domain_name ;
const char * forest_name ;
} ;
2008-05-21 12:47:59 +04:00
# define NET_TRANSPORT_LOCAL 0x01
# define NET_TRANSPORT_RAP 0x02
# define NET_TRANSPORT_RPC 0x04
2008-05-26 00:41:58 +04:00
# define NET_TRANSPORT_ADS 0x08
2008-05-21 12:47:59 +04:00
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 ;
} ;
2008-05-10 01:22:12 +04:00
typedef NTSTATUS ( * rpc_command_fn ) ( struct net_context * c ,
const DOM_SID * ,
2008-05-08 11:14:16 +04:00
const char * ,
2005-09-30 21:13:37 +04:00
struct cli_state * cli ,
struct rpc_pipe_client * ,
TALLOC_CTX * ,
int ,
const char * * ) ;
2005-06-13 01:18:16 +04:00
typedef struct copy_clistate {
TALLOC_CTX * mem_ctx ;
struct cli_state * cli_share_src ;
struct cli_state * cli_share_dst ;
char * cwd ;
uint16 attribute ;
2008-05-10 01:22:12 +04:00
struct net_context * c ;
2005-09-30 21:13:37 +04:00
} copy_clistate ;
2005-06-13 01:18:16 +04:00
2006-02-04 01:19:41 +03:00
struct rpc_sh_ctx {
struct cli_state * cli ;
DOM_SID * domain_sid ;
2008-01-15 18:40:02 +03:00
const char * domain_name ;
2006-02-04 01:19:41 +03:00
const char * whoami ;
const char * thiscmd ;
struct rpc_sh_cmd * cmds ;
struct rpc_sh_ctx * parent ;
} ;
struct rpc_sh_cmd {
const char * name ;
2008-05-10 01:22:12 +04:00
struct rpc_sh_cmd * ( * sub ) ( struct net_context * c ,
TALLOC_CTX * mem_ctx ,
2006-02-04 01:19:41 +03:00
struct rpc_sh_ctx * ctx ) ;
2008-07-20 20:40:31 +04:00
const struct ndr_syntax_id * interface ;
2008-05-10 01:22:12 +04:00
NTSTATUS ( * fn ) ( struct net_context * c , TALLOC_CTX * mem_ctx ,
struct rpc_sh_ctx * ctx ,
2006-02-04 01:19:41 +03:00
struct rpc_pipe_client * pipe_hnd ,
int argc , const char * * argv ) ;
const char * help ;
} ;
2006-05-19 00:12:45 +04:00
enum netdom_domain_t { ND_TYPE_NT4 , ND_TYPE_AD } ;
2005-01-18 17:46:24 +03:00
/* INCLUDE FILES */
2004-10-07 08:01:18 +04:00
# include "utils/net_proto.h"
2008-05-12 16:38:21 +04:00
# include "utils/net_help_common.h"
2008-05-08 11:14:16 +04:00
2005-01-18 17:46:24 +03:00
/* MACROS & DEFINES */
2006-05-12 19:17:35 +04:00
# 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 . */
2008-05-08 11:14:16 +04:00
# define NET_FLAGS_PDC 0x00000008 /* PDC only */
2006-05-12 19:17:35 +04:00
# define NET_FLAGS_ANONYMOUS 0x00000010 /* use an anonymous connection */
# define NET_FLAGS_NO_PIPE 0x00000020 /* don't open an RPC pipe */
2008-06-24 12:34:16 +04:00
# define NET_FLAGS_SIGN 0x00000040 /* sign RPC connection */
# define NET_FLAGS_SEAL 0x00000080 /* seal RPC connection */
2001-12-03 09:49:47 +03:00
2005-06-13 01:18:16 +04:00
/* net share operation modes */
# define NET_MODE_SHARE_MIGRATE 1