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
*/
2011-05-06 14:53:38 +04:00
struct cli_state ;
2011-03-25 13:56:10 +03:00
# include "../librpc/gen_ndr/lsa.h"
2009-07-29 22:07:47 +04:00
2011-02-14 14:02:00 +03:00
# include "intl.h"
2009-07-29 22:07:47 +04:00
# ifdef HAVE_LIBINTL_H
# include <libintl.h>
# endif
# if defined(HAVE_GETTEXT) && !defined(__LCLINT__)
# define _(foo) gettext(foo)
# else
# define _(foo) foo
# endif
# define MODULE_NAME "net"
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 ;
2009-07-05 11:21:07 +04:00
const char * opt_password ;
const char * opt_user_name ;
bool opt_user_specified ;
2009-05-14 13:39:01 +04:00
const char * opt_workgroup ;
2009-07-05 11:21:07 +04:00
int opt_long_list_entries ;
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 ;
2009-07-05 11:21:07 +04:00
int opt_machine_pass ;
2008-05-21 12:47:59 +04:00
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 ;
2010-01-24 20:51:58 +03:00
int opt_kerberos ;
2008-07-30 19:46:13 +04:00
int opt_force_full_repl ;
2010-01-24 20:50:48 +03:00
int opt_ccache ;
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 ;
2011-02-08 14:01:34 +03:00
const char * opt_db ;
2011-01-28 12:55:58 +03:00
int opt_lock ;
int opt_auto ;
int opt_repair ;
2011-06-30 14:08:16 +04:00
int opt_reg_version ;
const char * opt_output ;
int opt_wipe ;
2012-05-04 15:51:01 +04:00
const char * opt_precheck ;
2015-09-09 09:28:43 +03:00
int opt_no_dns_updates ;
2018-06-27 18:32:31 +03:00
int opt_keep_account ;
2018-07-02 17:21:59 +03:00
int opt_json ;
2019-07-10 17:03:17 +03:00
int opt_continue_on_error ;
int opt_recursive ;
int opt_follow_symlink ;
2023-02-16 20:36:37 +03:00
int opt_dns_ttl ;
2023-12-15 16:49:37 +03:00
const char * opt_witness_registration ;
const char * opt_witness_net_name ;
const char * opt_witness_share_name ;
const char * opt_witness_ip_address ;
const char * opt_witness_client_computer_name ;
2023-12-15 16:49:37 +03:00
int opt_witness_apply_to_all ;
const char * opt_witness_new_ip ;
int opt_witness_new_node ;
2023-12-15 16:49:37 +03:00
const char * opt_witness_forced_response ;
2008-05-21 12:47:59 +04:00
int opt_have_ip ;
struct sockaddr_storage opt_dest_ip ;
2009-07-05 11:21:07 +04:00
bool smb_encrypt ;
2008-05-21 12:47:59 +04:00
struct libnetapi_ctx * netapi_ctx ;
2010-09-22 07:56:23 +04:00
struct messaging_context * msg_ctx ;
2013-09-16 21:59:11 +04:00
struct netlogon_creds_cli_context * netlogon_creds ;
2021-04-01 13:03:45 +03:00
struct cli_credentials * creds ;
struct loadparm_context * lp_ctx ;
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 ,
2010-05-21 05:25:01 +04:00
const struct 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 ;
2015-05-07 03:00:06 +03:00
uint16_t 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 ;
2010-05-21 05:25:01 +04:00
struct 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 ) ;
2012-01-10 14:53:42 +04:00
const struct ndr_interface_table * table ;
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 */
2009-09-11 00:23:21 +04:00
# define NET_FLAGS_TCP 0x00000100 /* use ncacn_ip_tcp */
2013-07-15 15:28:34 +04:00
# define NET_FLAGS_EXPECT_FALLBACK 0x00000200 /* the caller will fallback */
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