2011-05-06 13:47:43 +04:00
/*
Unix SMB / CIFS implementation .
2011-06-10 17:06:36 +04:00
Copyright ( C ) Andrew Bartlett 2001 - 2003
Copyright ( C ) Andrew Tridgell 1994 - 1998 , 2000 - 2001
Copyright ( C ) Gerald ( Jerry ) Carter 2004
Copyright ( C ) Jelmer Vernooij 2003
Copyright ( C ) Jeremy Allison 2001 - 2009 , 2011
Copyright ( C ) Stefan Metzmacher 2003 , 2009
Copyright ( C ) Volker Lendecke 2011
2011-05-06 13:47:43 +04:00
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 < http : //www.gnu.org/licenses/>.
*/
# ifndef _LIBSMB_PROTO_H_
# define _LIBSMB_PROTO_H_
2011-05-07 12:38:12 +04:00
# include "ads.h"
2012-01-30 13:53:18 +04:00
# include "auth_info.h"
2011-05-07 12:38:12 +04:00
2011-09-15 19:56:04 +04:00
struct smb_trans_enc_state ;
2011-05-06 13:47:43 +04:00
/* The following definitions come from libsmb/cliconnect.c */
NTSTATUS cli_session_setup ( struct cli_state * cli ,
const char * user ,
const char * pass , int passlen ,
const char * ntpass , int ntpasslen ,
const char * workgroup ) ;
struct tevent_req * cli_session_setup_guest_create ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
struct tevent_req * * psmbreq ) ;
struct tevent_req * cli_session_setup_guest_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ) ;
NTSTATUS cli_session_setup_guest_recv ( struct tevent_req * req ) ;
struct tevent_req * cli_ulogoff_send ( TALLOC_CTX * mem_ctx ,
struct tevent_context * ev ,
struct cli_state * cli ) ;
NTSTATUS cli_ulogoff_recv ( struct tevent_req * req ) ;
NTSTATUS cli_ulogoff ( struct cli_state * cli ) ;
struct tevent_req * cli_tcon_andx_create ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
const char * share , const char * dev ,
const char * pass , int passlen ,
struct tevent_req * * psmbreq ) ;
struct tevent_req * cli_tcon_andx_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
const char * share , const char * dev ,
const char * pass , int passlen ) ;
NTSTATUS cli_tcon_andx_recv ( struct tevent_req * req ) ;
NTSTATUS cli_tcon_andx ( struct cli_state * cli , const char * share ,
const char * dev , const char * pass , int passlen ) ;
2011-09-20 08:57:37 +04:00
NTSTATUS cli_tree_connect ( struct cli_state * cli , const char * share ,
const char * dev , const char * pass , int passlen ) ;
2011-05-06 13:47:43 +04:00
struct tevent_req * cli_tdis_send ( TALLOC_CTX * mem_ctx ,
struct tevent_context * ev ,
struct cli_state * cli ) ;
NTSTATUS cli_tdis_recv ( struct tevent_req * req ) ;
NTSTATUS cli_tdis ( struct cli_state * cli ) ;
2011-07-22 13:54:03 +04:00
NTSTATUS cli_connect_nb ( const char * host , const struct sockaddr_storage * dest_ss ,
2011-05-28 22:39:54 +04:00
uint16_t port , int name_type , const char * myname ,
2011-09-07 22:35:51 +04:00
int signing_state , int flags , struct cli_state * * pcli ) ;
2011-05-06 13:47:43 +04:00
NTSTATUS cli_start_connection ( struct cli_state * * output_cli ,
const char * my_name ,
const char * dest_host ,
2011-07-22 14:01:27 +04:00
const struct sockaddr_storage * dest_ss , int port ,
2011-05-06 13:47:43 +04:00
int signing_state , int flags ) ;
NTSTATUS cli_full_connection ( struct cli_state * * output_cli ,
const char * my_name ,
const char * dest_host ,
2011-07-22 15:03:19 +04:00
const struct sockaddr_storage * dest_ss , int port ,
2011-05-06 13:47:43 +04:00
const char * service , const char * service_type ,
const char * user , const char * domain ,
const char * password , int flags ,
int signing_state ) ;
NTSTATUS cli_raw_tcon ( struct cli_state * cli ,
const char * service , const char * pass , const char * dev ,
uint16 * max_xmit , uint16 * tid ) ;
struct cli_state * get_ipc_connect ( char * server ,
struct sockaddr_storage * server_ss ,
const struct user_auth_info * user_info ) ;
struct cli_state * get_ipc_connect_master_ip ( TALLOC_CTX * ctx ,
struct sockaddr_storage * mb_ip ,
const struct user_auth_info * user_info ,
char * * pp_workgroup_out ) ;
struct cli_state * get_ipc_connect_master_ip_bcast ( TALLOC_CTX * ctx ,
const struct user_auth_info * user_info ,
char * * pp_workgroup_out ) ;
/* The following definitions come from libsmb/clidfs.c */
NTSTATUS cli_cm_force_encryption ( struct cli_state * c ,
const char * username ,
const char * password ,
const char * domain ,
const char * sharename ) ;
2011-07-03 21:59:37 +04:00
NTSTATUS cli_cm_open ( TALLOC_CTX * ctx ,
2011-05-06 13:47:43 +04:00
struct cli_state * referring_cli ,
const char * server ,
const char * share ,
const struct user_auth_info * auth_info ,
bool show_hdr ,
bool force_encrypt ,
int max_protocol ,
int port ,
2011-07-03 21:59:37 +04:00
int name_type ,
struct cli_state * * pcli ) ;
2011-07-22 18:05:54 +04:00
void cli_cm_display ( struct cli_state * c ) ;
2011-05-06 13:47:43 +04:00
struct client_dfs_referral ;
NTSTATUS cli_dfs_get_referral ( TALLOC_CTX * ctx ,
struct cli_state * cli ,
const char * path ,
struct client_dfs_referral * * refs ,
size_t * num_refs ,
size_t * consumed ) ;
2011-07-03 22:53:55 +04:00
NTSTATUS cli_resolve_path ( TALLOC_CTX * ctx ,
const char * mountpt ,
const struct user_auth_info * dfs_auth_info ,
struct cli_state * rootcli ,
const char * path ,
struct cli_state * * targetcli ,
char * * pp_targetpath ) ;
2011-05-06 13:47:43 +04:00
bool cli_check_msdfs_proxy ( TALLOC_CTX * ctx ,
struct cli_state * cli ,
const char * sharename ,
char * * pp_newserver ,
char * * pp_newshare ,
bool force_encrypt ,
const char * username ,
const char * password ,
const char * domain ) ;
/* The following definitions come from libsmb/clientgen.c */
int cli_set_message ( char * buf , int num_words , int num_bytes , bool zero ) ;
unsigned int cli_set_timeout ( struct cli_state * cli , unsigned int timeout ) ;
2011-12-02 01:24:22 +04:00
bool cli_set_backup_intent ( struct cli_state * cli , bool flag ) ;
2011-05-06 13:47:43 +04:00
void cli_setup_packet_buf ( struct cli_state * cli , char * buf ) ;
NTSTATUS cli_set_domain ( struct cli_state * cli , const char * domain ) ;
NTSTATUS cli_set_username ( struct cli_state * cli , const char * username ) ;
NTSTATUS cli_set_password ( struct cli_state * cli , const char * password ) ;
NTSTATUS cli_init_creds ( struct cli_state * cli , const char * username , const char * domain , const char * password ) ;
2011-07-21 23:47:36 +04:00
struct cli_state * cli_state_create ( TALLOC_CTX * mem_ctx ,
int fd ,
2011-07-22 18:53:51 +04:00
const char * remote_name ,
2011-08-10 00:15:23 +04:00
const char * remote_realm ,
2011-09-07 23:10:24 +04:00
int signing_state ,
int flags ) ;
2011-05-06 13:47:43 +04:00
void cli_nt_pipes_close ( struct cli_state * cli ) ;
void cli_shutdown ( struct cli_state * cli ) ;
2011-08-10 00:15:23 +04:00
const char * cli_state_remote_realm ( struct cli_state * cli ) ;
2011-07-19 14:52:10 +04:00
uint16_t cli_state_get_vc_num ( struct cli_state * cli ) ;
2011-05-06 13:47:43 +04:00
uint16 cli_setpid ( struct cli_state * cli , uint16 pid ) ;
2011-07-19 14:56:51 +04:00
uint16_t cli_getpid ( struct cli_state * cli ) ;
2011-07-19 18:25:52 +04:00
bool cli_state_has_tcon ( struct cli_state * cli ) ;
uint16_t cli_state_get_tid ( struct cli_state * cli ) ;
uint16_t cli_state_set_tid ( struct cli_state * cli , uint16_t tid ) ;
2011-07-21 11:20:43 +04:00
uint16_t cli_state_get_uid ( struct cli_state * cli ) ;
uint16_t cli_state_set_uid ( struct cli_state * cli , uint16_t uid ) ;
2011-05-06 13:47:43 +04:00
bool cli_set_case_sensitive ( struct cli_state * cli , bool case_sensitive ) ;
2011-09-13 13:23:49 +04:00
uint32_t cli_state_available_size ( struct cli_state * cli , uint32_t ofs ) ;
2011-09-13 23:41:17 +04:00
time_t cli_state_server_time ( struct cli_state * cli ) ;
2011-05-06 13:47:43 +04:00
struct tevent_req * cli_echo_send ( TALLOC_CTX * mem_ctx , struct event_context * ev ,
struct cli_state * cli , uint16_t num_echos ,
DATA_BLOB data ) ;
NTSTATUS cli_echo_recv ( struct tevent_req * req ) ;
NTSTATUS cli_echo ( struct cli_state * cli , uint16_t num_echos , DATA_BLOB data ) ;
bool is_andx_req ( uint8_t cmd ) ;
NTSTATUS cli_smb ( TALLOC_CTX * mem_ctx , struct cli_state * cli ,
uint8_t smb_command , uint8_t additional_flags ,
uint8_t wct , uint16_t * vwv ,
uint32_t num_bytes , const uint8_t * bytes ,
struct tevent_req * * result_parent ,
uint8_t min_wct , uint8_t * pwct , uint16_t * * pvwv ,
uint32_t * pnum_bytes , uint8_t * * pbytes ) ;
/* The following definitions come from libsmb/clierror.c */
const char * cli_errstr ( struct cli_state * cli ) ;
NTSTATUS cli_nt_error ( struct cli_state * cli ) ;
void cli_dos_error ( struct cli_state * cli , uint8 * eclass , uint32 * ecode ) ;
int cli_errno ( struct cli_state * cli ) ;
bool cli_is_error ( struct cli_state * cli ) ;
bool cli_is_nt_error ( struct cli_state * cli ) ;
bool cli_is_dos_error ( struct cli_state * cli ) ;
bool cli_state_is_connected ( struct cli_state * cli ) ;
/* The following definitions come from libsmb/clifile.c */
struct tevent_req * cli_setpathinfo_send ( TALLOC_CTX * mem_ctx ,
struct tevent_context * ev ,
struct cli_state * cli ,
uint16_t level ,
const char * path ,
uint8_t * data ,
size_t data_len ) ;
NTSTATUS cli_setpathinfo_recv ( struct tevent_req * req ) ;
NTSTATUS cli_setpathinfo ( struct cli_state * cli ,
uint16_t level ,
const char * path ,
uint8_t * data ,
size_t data_len ) ;
struct tevent_req * cli_posix_symlink_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
const char * oldname ,
const char * newname ) ;
NTSTATUS cli_posix_symlink_recv ( struct tevent_req * req ) ;
NTSTATUS cli_posix_symlink ( struct cli_state * cli ,
const char * oldname ,
const char * newname ) ;
struct tevent_req * cli_posix_readlink_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
const char * fname ,
size_t len ) ;
NTSTATUS cli_posix_readlink_recv ( struct tevent_req * req , struct cli_state * cli ,
char * retpath , size_t len ) ;
NTSTATUS cli_posix_readlink ( struct cli_state * cli , const char * fname ,
char * linkpath , size_t len ) ;
struct tevent_req * cli_posix_hardlink_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
const char * oldname ,
const char * newname ) ;
NTSTATUS cli_posix_hardlink_recv ( struct tevent_req * req ) ;
NTSTATUS cli_posix_hardlink ( struct cli_state * cli ,
const char * oldname ,
const char * newname ) ;
uint32_t unix_perms_to_wire ( mode_t perms ) ;
mode_t wire_perms_to_unix ( uint32_t perms ) ;
struct tevent_req * cli_posix_getfacl_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
const char * fname ) ;
NTSTATUS cli_posix_getfacl_recv ( struct tevent_req * req ,
TALLOC_CTX * mem_ctx ,
size_t * prb_size ,
char * * retbuf ) ;
NTSTATUS cli_posix_getfacl ( struct cli_state * cli ,
const char * fname ,
TALLOC_CTX * mem_ctx ,
size_t * prb_size ,
char * * retbuf ) ;
struct tevent_req * cli_posix_stat_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
const char * fname ) ;
NTSTATUS cli_posix_stat_recv ( struct tevent_req * req ,
SMB_STRUCT_STAT * sbuf ) ;
NTSTATUS cli_posix_stat ( struct cli_state * cli ,
const char * fname ,
SMB_STRUCT_STAT * sbuf ) ;
struct tevent_req * cli_posix_chmod_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
const char * fname ,
mode_t mode ) ;
NTSTATUS cli_posix_chmod_recv ( struct tevent_req * req ) ;
NTSTATUS cli_posix_chmod ( struct cli_state * cli , const char * fname , mode_t mode ) ;
struct tevent_req * cli_posix_chown_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
const char * fname ,
uid_t uid ,
gid_t gid ) ;
NTSTATUS cli_posix_chown_recv ( struct tevent_req * req ) ;
NTSTATUS cli_posix_chown ( struct cli_state * cli ,
const char * fname ,
uid_t uid ,
gid_t gid ) ;
struct tevent_req * cli_rename_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
const char * fname_src ,
const char * fname_dst ) ;
NTSTATUS cli_rename_recv ( struct tevent_req * req ) ;
NTSTATUS cli_rename ( struct cli_state * cli , const char * fname_src , const char * fname_dst ) ;
struct tevent_req * cli_ntrename_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
const char * fname_src ,
const char * fname_dst ) ;
NTSTATUS cli_ntrename_recv ( struct tevent_req * req ) ;
NTSTATUS cli_ntrename ( struct cli_state * cli , const char * fname_src , const char * fname_dst ) ;
struct tevent_req * cli_nt_hardlink_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
const char * fname_src ,
const char * fname_dst ) ;
NTSTATUS cli_nt_hardlink_recv ( struct tevent_req * req ) ;
NTSTATUS cli_nt_hardlink ( struct cli_state * cli , const char * fname_src , const char * fname_dst ) ;
struct tevent_req * cli_unlink_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
const char * fname ,
uint16_t mayhave_attrs ) ;
NTSTATUS cli_unlink_recv ( struct tevent_req * req ) ;
NTSTATUS cli_unlink ( struct cli_state * cli , const char * fname , uint16_t mayhave_attrs ) ;
struct tevent_req * cli_mkdir_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
const char * dname ) ;
NTSTATUS cli_mkdir_recv ( struct tevent_req * req ) ;
NTSTATUS cli_mkdir ( struct cli_state * cli , const char * dname ) ;
struct tevent_req * cli_rmdir_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
const char * dname ) ;
NTSTATUS cli_rmdir_recv ( struct tevent_req * req ) ;
NTSTATUS cli_rmdir ( struct cli_state * cli , const char * dname ) ;
struct tevent_req * cli_nt_delete_on_close_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
uint16_t fnum ,
bool flag ) ;
NTSTATUS cli_nt_delete_on_close_recv ( struct tevent_req * req ) ;
NTSTATUS cli_nt_delete_on_close ( struct cli_state * cli , uint16_t fnum , bool flag ) ;
struct tevent_req * cli_ntcreate_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
const char * fname ,
uint32_t CreatFlags ,
uint32_t DesiredAccess ,
uint32_t FileAttributes ,
uint32_t ShareAccess ,
uint32_t CreateDisposition ,
uint32_t CreateOptions ,
uint8_t SecurityFlags ) ;
NTSTATUS cli_ntcreate_recv ( struct tevent_req * req , uint16_t * pfnum ) ;
NTSTATUS cli_ntcreate ( struct cli_state * cli ,
const char * fname ,
uint32_t CreatFlags ,
uint32_t DesiredAccess ,
uint32_t FileAttributes ,
uint32_t ShareAccess ,
uint32_t CreateDisposition ,
uint32_t CreateOptions ,
uint8_t SecurityFlags ,
uint16_t * pfid ) ;
uint8_t * smb_bytes_push_str ( uint8_t * buf , bool ucs2 , const char * str ,
size_t str_len , size_t * pconverted_size ) ;
uint8_t * smb_bytes_push_bytes ( uint8_t * buf , uint8_t prefix ,
const uint8_t * bytes , size_t num_bytes ) ;
2011-07-06 20:23:52 +04:00
uint8_t * trans2_bytes_push_str ( uint8_t * buf , bool ucs2 ,
const char * str , size_t str_len ,
size_t * pconverted_size ) ;
2011-07-07 12:02:36 +04:00
uint8_t * trans2_bytes_push_bytes ( uint8_t * buf ,
const uint8_t * bytes , size_t num_bytes ) ;
2011-12-04 09:13:08 +04:00
struct tevent_req * cli_openx_create ( TALLOC_CTX * mem_ctx ,
2011-05-06 13:47:43 +04:00
struct event_context * ev ,
struct cli_state * cli , const char * fname ,
int flags , int share_mode ,
struct tevent_req * * psmbreq ) ;
2011-12-04 09:13:08 +04:00
struct tevent_req * cli_openx_send ( TALLOC_CTX * mem_ctx , struct event_context * ev ,
2011-05-06 13:47:43 +04:00
struct cli_state * cli , const char * fname ,
int flags , int share_mode ) ;
2011-12-04 09:13:08 +04:00
NTSTATUS cli_openx_recv ( struct tevent_req * req , uint16_t * fnum ) ;
NTSTATUS cli_openx ( struct cli_state * cli , const char * fname , int flags , int share_mode , uint16_t * pfnum ) ;
2011-12-04 09:31:32 +04:00
NTSTATUS cli_open ( struct cli_state * cli , const char * fname , int flags , int share_mode , uint16_t * pfnum ) ;
2011-05-06 13:47:43 +04:00
struct tevent_req * cli_close_create ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli , uint16_t fnum ,
struct tevent_req * * psubreq ) ;
struct tevent_req * cli_close_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli , uint16_t fnum ) ;
NTSTATUS cli_close_recv ( struct tevent_req * req ) ;
NTSTATUS cli_close ( struct cli_state * cli , uint16_t fnum ) ;
struct tevent_req * cli_ftruncate_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
uint16_t fnum ,
uint64_t size ) ;
NTSTATUS cli_ftruncate_recv ( struct tevent_req * req ) ;
NTSTATUS cli_ftruncate ( struct cli_state * cli , uint16_t fnum , uint64_t size ) ;
NTSTATUS cli_locktype ( struct cli_state * cli , uint16_t fnum ,
uint32_t offset , uint32_t len ,
int timeout , unsigned char locktype ) ;
2011-07-11 13:13:18 +04:00
NTSTATUS cli_lock32 ( struct cli_state * cli , uint16_t fnum , uint32_t offset ,
uint32_t len , int timeout , enum brl_type lock_type ) ;
2011-05-06 13:47:43 +04:00
struct tevent_req * cli_unlock_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
uint16_t fnum ,
uint64_t offset ,
uint64_t len ) ;
NTSTATUS cli_unlock_recv ( struct tevent_req * req ) ;
NTSTATUS cli_unlock ( struct cli_state * cli , uint16_t fnum , uint32_t offset , uint32_t len ) ;
2011-07-11 13:19:21 +04:00
NTSTATUS cli_lock64 ( struct cli_state * cli , uint16_t fnum ,
uint64_t offset , uint64_t len , int timeout ,
enum brl_type lock_type ) ;
2011-05-06 13:47:43 +04:00
struct tevent_req * cli_unlock64_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
uint16_t fnum ,
uint64_t offset ,
uint64_t len ) ;
NTSTATUS cli_unlock64_recv ( struct tevent_req * req ) ;
NTSTATUS cli_unlock64 ( struct cli_state * cli , uint16_t fnum , uint64_t offset , uint64_t len ) ;
struct tevent_req * cli_posix_lock_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
uint16_t fnum ,
uint64_t offset ,
uint64_t len ,
bool wait_lock ,
enum brl_type lock_type ) ;
NTSTATUS cli_posix_lock_recv ( struct tevent_req * req ) ;
NTSTATUS cli_posix_lock ( struct cli_state * cli , uint16_t fnum ,
uint64_t offset , uint64_t len ,
bool wait_lock , enum brl_type lock_type ) ;
struct tevent_req * cli_posix_unlock_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
uint16_t fnum ,
uint64_t offset ,
uint64_t len ) ;
NTSTATUS cli_posix_unlock_recv ( struct tevent_req * req ) ;
NTSTATUS cli_posix_unlock ( struct cli_state * cli , uint16_t fnum , uint64_t offset , uint64_t len ) ;
struct tevent_req * cli_getattrE_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
uint16_t fnum ) ;
NTSTATUS cli_getattrE_recv ( struct tevent_req * req ,
uint16_t * attr ,
2012-04-05 08:53:08 +04:00
off_t * size ,
2011-05-06 13:47:43 +04:00
time_t * change_time ,
time_t * access_time ,
time_t * write_time ) ;
NTSTATUS cli_getattrE ( struct cli_state * cli ,
uint16_t fnum ,
uint16_t * attr ,
2012-04-05 08:53:08 +04:00
off_t * size ,
2011-05-06 13:47:43 +04:00
time_t * change_time ,
time_t * access_time ,
time_t * write_time ) ;
struct tevent_req * cli_setattrE_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
uint16_t fnum ,
time_t change_time ,
time_t access_time ,
time_t write_time ) ;
NTSTATUS cli_setattrE_recv ( struct tevent_req * req ) ;
NTSTATUS cli_setattrE ( struct cli_state * cli ,
uint16_t fnum ,
time_t change_time ,
time_t access_time ,
time_t write_time ) ;
struct tevent_req * cli_getatr_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
const char * fname ) ;
NTSTATUS cli_getatr_recv ( struct tevent_req * req ,
uint16_t * attr ,
2012-04-05 08:53:08 +04:00
off_t * size ,
2011-05-06 13:47:43 +04:00
time_t * write_time ) ;
NTSTATUS cli_getatr ( struct cli_state * cli ,
const char * fname ,
uint16_t * attr ,
2012-04-05 08:53:08 +04:00
off_t * size ,
2011-05-06 13:47:43 +04:00
time_t * write_time ) ;
struct tevent_req * cli_setatr_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
const char * fname ,
uint16_t attr ,
time_t mtime ) ;
NTSTATUS cli_setatr_recv ( struct tevent_req * req ) ;
NTSTATUS cli_setatr ( struct cli_state * cli ,
const char * fname ,
uint16_t attr ,
time_t mtime ) ;
struct tevent_req * cli_chkpath_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
const char * fname ) ;
NTSTATUS cli_chkpath_recv ( struct tevent_req * req ) ;
NTSTATUS cli_chkpath ( struct cli_state * cli , const char * path ) ;
struct tevent_req * cli_dskattr_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ) ;
NTSTATUS cli_dskattr_recv ( struct tevent_req * req , int * bsize , int * total ,
int * avail ) ;
NTSTATUS cli_dskattr ( struct cli_state * cli , int * bsize , int * total , int * avail ) ;
struct tevent_req * cli_ctemp_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
const char * path ) ;
NTSTATUS cli_ctemp_recv ( struct tevent_req * req ,
TALLOC_CTX * ctx ,
uint16_t * pfnum ,
char * * outfile ) ;
NTSTATUS cli_ctemp ( struct cli_state * cli ,
TALLOC_CTX * ctx ,
const char * path ,
uint16_t * pfnum ,
char * * out_path ) ;
NTSTATUS cli_raw_ioctl ( struct cli_state * cli , uint16_t fnum , uint32_t code , DATA_BLOB * blob ) ;
NTSTATUS cli_set_ea_path ( struct cli_state * cli , const char * path ,
const char * ea_name , const char * ea_val ,
size_t ea_len ) ;
NTSTATUS cli_set_ea_fnum ( struct cli_state * cli , uint16_t fnum ,
const char * ea_name , const char * ea_val ,
size_t ea_len ) ;
struct tevent_req * cli_get_ea_list_path_send ( TALLOC_CTX * mem_ctx ,
struct tevent_context * ev ,
struct cli_state * cli ,
const char * fname ) ;
NTSTATUS cli_get_ea_list_path_recv ( struct tevent_req * req , TALLOC_CTX * mem_ctx ,
size_t * pnum_eas , struct ea_struct * * peas ) ;
NTSTATUS cli_get_ea_list_path ( struct cli_state * cli , const char * path ,
TALLOC_CTX * ctx ,
size_t * pnum_eas ,
struct ea_struct * * pea_list ) ;
struct tevent_req * cli_posix_open_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
const char * fname ,
int flags ,
mode_t mode ) ;
NTSTATUS cli_posix_open_recv ( struct tevent_req * req , uint16_t * pfnum ) ;
NTSTATUS cli_posix_open ( struct cli_state * cli , const char * fname ,
int flags , mode_t mode , uint16_t * fnum ) ;
struct tevent_req * cli_posix_mkdir_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
const char * fname ,
mode_t mode ) ;
NTSTATUS cli_posix_mkdir_recv ( struct tevent_req * req ) ;
NTSTATUS cli_posix_mkdir ( struct cli_state * cli , const char * fname , mode_t mode ) ;
struct tevent_req * cli_posix_unlink_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
const char * fname ) ;
NTSTATUS cli_posix_unlink_recv ( struct tevent_req * req ) ;
NTSTATUS cli_posix_unlink ( struct cli_state * cli , const char * fname ) ;
struct tevent_req * cli_posix_rmdir_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
const char * fname ) ;
NTSTATUS cli_posix_rmdir_recv ( struct tevent_req * req , TALLOC_CTX * mem_ctx ) ;
NTSTATUS cli_posix_rmdir ( struct cli_state * cli , const char * fname ) ;
struct tevent_req * cli_notify_send ( TALLOC_CTX * mem_ctx ,
struct tevent_context * ev ,
struct cli_state * cli , uint16_t fnum ,
uint32_t buffer_size ,
uint32_t completion_filter , bool recursive ) ;
NTSTATUS cli_notify_recv ( struct tevent_req * req , TALLOC_CTX * mem_ctx ,
uint32_t * pnum_changes ,
struct notify_change * * pchanges ) ;
2012-03-22 15:17:14 +04:00
NTSTATUS cli_notify ( struct cli_state * cli , uint16_t fnum , uint32_t buffer_size ,
uint32_t completion_filter , bool recursive ,
TALLOC_CTX * mem_ctx , uint32_t * pnum_changes ,
struct notify_change * * pchanges ) ;
2011-05-06 13:47:43 +04:00
2011-06-18 11:10:30 +04:00
struct tevent_req * cli_nttrans_create_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
const char * fname ,
uint32_t CreatFlags ,
uint32_t DesiredAccess ,
uint32_t FileAttributes ,
uint32_t ShareAccess ,
uint32_t CreateDisposition ,
uint32_t CreateOptions ,
uint8_t SecurityFlags ,
struct security_descriptor * secdesc ,
struct ea_struct * eas ,
int num_eas ) ;
NTSTATUS cli_nttrans_create_recv ( struct tevent_req * req , uint16_t * fnum ) ;
NTSTATUS cli_nttrans_create ( struct cli_state * cli ,
const char * fname ,
uint32_t CreatFlags ,
uint32_t DesiredAccess ,
uint32_t FileAttributes ,
uint32_t ShareAccess ,
uint32_t CreateDisposition ,
uint32_t CreateOptions ,
uint8_t SecurityFlags ,
struct security_descriptor * secdesc ,
struct ea_struct * eas ,
int num_eas ,
uint16_t * pfid ) ;
2011-05-06 13:47:43 +04:00
/* The following definitions come from libsmb/clifsinfo.c */
struct tevent_req * cli_unix_extensions_version_send ( TALLOC_CTX * mem_ctx ,
struct tevent_context * ev ,
struct cli_state * cli ) ;
NTSTATUS cli_unix_extensions_version_recv ( struct tevent_req * req ,
uint16_t * pmajor , uint16_t * pminor ,
uint32_t * pcaplow ,
uint32_t * pcaphigh ) ;
NTSTATUS cli_unix_extensions_version ( struct cli_state * cli , uint16 * pmajor ,
uint16 * pminor , uint32 * pcaplow ,
uint32 * pcaphigh ) ;
struct tevent_req * cli_set_unix_extensions_capabilities_send (
TALLOC_CTX * mem_ctx , struct tevent_context * ev , struct cli_state * cli ,
uint16_t major , uint16_t minor , uint32_t caplow , uint32_t caphigh ) ;
NTSTATUS cli_set_unix_extensions_capabilities_recv ( struct tevent_req * req ) ;
NTSTATUS cli_set_unix_extensions_capabilities ( struct cli_state * cli ,
uint16 major , uint16 minor ,
uint32 caplow , uint32 caphigh ) ;
struct tevent_req * cli_get_fs_attr_info_send ( TALLOC_CTX * mem_ctx ,
struct tevent_context * ev ,
struct cli_state * cli ) ;
NTSTATUS cli_get_fs_attr_info_recv ( struct tevent_req * req , uint32_t * fs_attr ) ;
NTSTATUS cli_get_fs_attr_info ( struct cli_state * cli , uint32_t * fs_attr ) ;
2011-07-06 15:57:20 +04:00
NTSTATUS cli_get_fs_volume_info ( struct cli_state * cli ,
TALLOC_CTX * mem_ctx , char * * volume_name ,
2011-05-06 13:47:43 +04:00
uint32 * pserial_number , time_t * pdate ) ;
NTSTATUS cli_get_fs_full_size_info ( struct cli_state * cli ,
uint64_t * total_allocation_units ,
uint64_t * caller_allocation_units ,
uint64_t * actual_allocation_units ,
uint64_t * sectors_per_allocation_unit ,
uint64_t * bytes_per_sector ) ;
NTSTATUS cli_get_posix_fs_info ( struct cli_state * cli ,
uint32 * optimal_transfer_size ,
uint32 * block_size ,
uint64_t * total_blocks ,
uint64_t * blocks_available ,
uint64_t * user_blocks_available ,
uint64_t * total_file_nodes ,
uint64_t * free_file_nodes ,
uint64_t * fs_identifier ) ;
NTSTATUS cli_raw_ntlm_smb_encryption_start ( struct cli_state * cli ,
const char * user ,
const char * pass ,
const char * domain ) ;
NTSTATUS cli_gss_smb_encryption_start ( struct cli_state * cli ) ;
NTSTATUS cli_force_encryption ( struct cli_state * c ,
const char * username ,
const char * password ,
const char * domain ) ;
/* The following definitions come from libsmb/clilist.c */
NTSTATUS cli_list_old ( struct cli_state * cli , const char * Mask , uint16 attribute ,
NTSTATUS ( * fn ) ( const char * , struct file_info * ,
const char * , void * ) , void * state ) ;
NTSTATUS cli_list_trans ( struct cli_state * cli , const char * mask ,
uint16_t attribute , int info_level ,
NTSTATUS ( * fn ) ( const char * mnt , struct file_info * finfo ,
const char * mask , void * private_data ) ,
void * private_data ) ;
struct tevent_req * cli_list_send ( TALLOC_CTX * mem_ctx ,
struct tevent_context * ev ,
struct cli_state * cli ,
const char * mask ,
uint16_t attribute ,
uint16_t info_level ) ;
NTSTATUS cli_list_recv ( struct tevent_req * req , TALLOC_CTX * mem_ctx ,
struct file_info * * finfo , size_t * num_finfo ) ;
NTSTATUS cli_list ( struct cli_state * cli , const char * Mask , uint16 attribute ,
NTSTATUS ( * fn ) ( const char * , struct file_info * , const char * ,
void * ) , void * state ) ;
/* The following definitions come from libsmb/climessage.c */
struct tevent_req * cli_message_send ( TALLOC_CTX * mem_ctx ,
struct tevent_context * ev ,
struct cli_state * cli ,
const char * host , const char * username ,
const char * message ) ;
NTSTATUS cli_message_recv ( struct tevent_req * req ) ;
NTSTATUS cli_message ( struct cli_state * cli , const char * host ,
const char * username , const char * message ) ;
/* The following definitions come from libsmb/clioplock.c */
2011-08-28 19:16:11 +04:00
struct tevent_req * cli_smb_oplock_break_waiter_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ) ;
NTSTATUS cli_smb_oplock_break_waiter_recv ( struct tevent_req * req ,
uint16_t * pfnum ,
uint8_t * plevel ) ;
2011-05-06 13:47:43 +04:00
struct tevent_req * cli_oplock_ack_send ( TALLOC_CTX * mem_ctx ,
struct tevent_context * ev ,
struct cli_state * cli ,
uint16_t fnum , uint8_t level ) ;
NTSTATUS cli_oplock_ack_recv ( struct tevent_req * req ) ;
/* The following definitions come from libsmb/cliprint.c */
int cli_print_queue ( struct cli_state * cli ,
void ( * fn ) ( struct print_job_info * ) ) ;
int cli_printjob_del ( struct cli_state * cli , int job ) ;
/* The following definitions come from libsmb/cliquota.c */
NTSTATUS cli_get_quota_handle ( struct cli_state * cli , uint16_t * quota_fnum ) ;
void free_ntquota_list ( SMB_NTQUOTA_LIST * * qt_list ) ;
NTSTATUS cli_get_user_quota ( struct cli_state * cli , int quota_fnum ,
SMB_NTQUOTA_STRUCT * pqt ) ;
NTSTATUS cli_set_user_quota ( struct cli_state * cli , int quota_fnum ,
SMB_NTQUOTA_STRUCT * pqt ) ;
NTSTATUS cli_list_user_quota ( struct cli_state * cli , int quota_fnum ,
SMB_NTQUOTA_LIST * * pqt_list ) ;
NTSTATUS cli_get_fs_quota_info ( struct cli_state * cli , int quota_fnum ,
SMB_NTQUOTA_STRUCT * pqt ) ;
NTSTATUS cli_set_fs_quota_info ( struct cli_state * cli , int quota_fnum ,
SMB_NTQUOTA_STRUCT * pqt ) ;
/* The following definitions come from libsmb/clireadwrite.c */
struct tevent_req * cli_read_andx_create ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli , uint16_t fnum ,
off_t offset , size_t size ,
struct tevent_req * * psmbreq ) ;
struct tevent_req * cli_read_andx_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli , uint16_t fnum ,
off_t offset , size_t size ) ;
NTSTATUS cli_read_andx_recv ( struct tevent_req * req , ssize_t * received ,
uint8_t * * rcvbuf ) ;
struct tevent_req * cli_pull_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli ,
uint16_t fnum , off_t start_offset ,
2012-04-05 08:53:08 +04:00
off_t size , size_t window_size ,
2011-05-06 13:47:43 +04:00
NTSTATUS ( * sink ) ( char * buf , size_t n ,
void * priv ) ,
void * priv ) ;
2012-04-05 08:53:08 +04:00
NTSTATUS cli_pull_recv ( struct tevent_req * req , off_t * received ) ;
2011-05-06 13:47:43 +04:00
NTSTATUS cli_pull ( struct cli_state * cli , uint16_t fnum ,
2012-04-05 08:53:08 +04:00
off_t start_offset , off_t size , size_t window_size ,
2011-05-06 13:47:43 +04:00
NTSTATUS ( * sink ) ( char * buf , size_t n , void * priv ) ,
2012-04-05 08:53:08 +04:00
void * priv , off_t * received ) ;
2011-07-19 13:11:27 +04:00
NTSTATUS cli_read ( struct cli_state * cli , uint16_t fnum ,
char * buf , off_t offset , size_t size ,
size_t * nread ) ;
2011-05-06 13:47:43 +04:00
NTSTATUS cli_smbwrite ( struct cli_state * cli , uint16_t fnum , char * buf ,
off_t offset , size_t size1 , size_t * ptotal ) ;
struct tevent_req * cli_write_andx_create ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli , uint16_t fnum ,
uint16_t mode , const uint8_t * buf ,
off_t offset , size_t size ,
struct tevent_req * * reqs_before ,
int num_reqs_before ,
struct tevent_req * * psmbreq ) ;
struct tevent_req * cli_write_andx_send ( TALLOC_CTX * mem_ctx ,
struct event_context * ev ,
struct cli_state * cli , uint16_t fnum ,
uint16_t mode , const uint8_t * buf ,
off_t offset , size_t size ) ;
NTSTATUS cli_write_andx_recv ( struct tevent_req * req , size_t * pwritten ) ;
NTSTATUS cli_writeall ( struct cli_state * cli , uint16_t fnum , uint16_t mode ,
const uint8_t * buf , off_t offset , size_t size ,
size_t * pwritten ) ;
struct tevent_req * cli_push_send ( TALLOC_CTX * mem_ctx , struct event_context * ev ,
struct cli_state * cli ,
uint16_t fnum , uint16_t mode ,
off_t start_offset , size_t window_size ,
size_t ( * source ) ( uint8_t * buf , size_t n ,
void * priv ) ,
void * priv ) ;
NTSTATUS cli_push_recv ( struct tevent_req * req ) ;
NTSTATUS cli_push ( struct cli_state * cli , uint16_t fnum , uint16_t mode ,
off_t start_offset , size_t window_size ,
size_t ( * source ) ( uint8_t * buf , size_t n , void * priv ) ,
void * priv ) ;
/* The following definitions come from libsmb/clisecdesc.c */
2011-07-22 17:11:31 +04:00
NTSTATUS cli_query_secdesc ( struct cli_state * cli , uint16_t fnum ,
TALLOC_CTX * mem_ctx , struct security_descriptor * * sd ) ;
2011-05-06 13:47:43 +04:00
NTSTATUS cli_set_secdesc ( struct cli_state * cli , uint16_t fnum ,
2011-07-23 11:55:06 +04:00
const struct security_descriptor * sd ) ;
2011-05-06 13:47:43 +04:00
/* The following definitions come from libsmb/clistr.c */
size_t clistr_pull_talloc ( TALLOC_CTX * ctx ,
const char * base ,
uint16_t flags2 ,
char * * pp_dest ,
const void * src ,
int src_len ,
int flags ) ;
/* The following definitions come from libsmb/clitrans.c */
struct tevent_req * cli_trans_send (
2011-10-26 17:43:08 +04:00
TALLOC_CTX * mem_ctx , struct tevent_context * ev ,
2011-05-06 13:47:43 +04:00
struct cli_state * cli , uint8_t cmd ,
const char * pipe_name , uint16_t fid , uint16_t function , int flags ,
uint16_t * setup , uint8_t num_setup , uint8_t max_setup ,
uint8_t * param , uint32_t num_param , uint32_t max_param ,
uint8_t * data , uint32_t num_data , uint32_t max_data ) ;
NTSTATUS cli_trans_recv ( struct tevent_req * req , TALLOC_CTX * mem_ctx ,
uint16_t * recv_flags2 ,
uint16_t * * setup , uint8_t min_setup ,
uint8_t * num_setup ,
uint8_t * * param , uint32_t min_param ,
uint32_t * num_param ,
uint8_t * * data , uint32_t min_data ,
uint32_t * num_data ) ;
NTSTATUS cli_trans ( TALLOC_CTX * mem_ctx , struct cli_state * cli ,
uint8_t trans_cmd ,
const char * pipe_name , uint16_t fid , uint16_t function ,
int flags ,
uint16_t * setup , uint8_t num_setup , uint8_t max_setup ,
uint8_t * param , uint32_t num_param , uint32_t max_param ,
uint8_t * data , uint32_t num_data , uint32_t max_data ,
uint16_t * recv_flags2 ,
uint16_t * * rsetup , uint8_t min_rsetup , uint8_t * num_rsetup ,
uint8_t * * rparam , uint32_t min_rparam , uint32_t * num_rparam ,
uint8_t * * rdata , uint32_t min_rdata , uint32_t * num_rdata ) ;
2011-06-23 17:33:58 +04:00
/* The following definitions come from libsmb/reparse_symlink.c */
bool symlink_reparse_buffer_marshall (
const char * substitute , const char * printname , uint32_t flags ,
TALLOC_CTX * mem_ctx , uint8_t * * pdst , size_t * pdstlen ) ;
bool symlink_reparse_buffer_parse (
const uint8_t * src , size_t srclen , TALLOC_CTX * mem_ctx ,
char * * psubstitute_name , char * * pprint_name , uint32_t * pflags ) ;
2011-06-23 18:49:17 +04:00
/* The following definitions come from libsmb/clisymlink.c */
struct tevent_req * cli_symlink_send ( TALLOC_CTX * mem_ctx ,
struct tevent_context * ev ,
struct cli_state * cli ,
const char * oldpath ,
const char * newpath ,
uint32_t flags ) ;
NTSTATUS cli_symlink_recv ( struct tevent_req * req ) ;
NTSTATUS cli_symlink ( struct cli_state * cli , const char * oldname ,
const char * newname , uint32_t flags ) ;
2011-06-30 17:06:46 +04:00
struct tevent_req * cli_readlink_send ( TALLOC_CTX * mem_ctx ,
struct tevent_context * ev ,
struct cli_state * cli ,
const char * fname ) ;
NTSTATUS cli_readlink_recv ( struct tevent_req * req , TALLOC_CTX * mem_ctx ,
char * * psubstitute_name , char * * pprint_name ,
uint32_t * pflags ) ;
NTSTATUS cli_readlink ( struct cli_state * cli , const char * fname ,
TALLOC_CTX * mem_ctx , char * * psubstitute_name ,
char * * pprint_name , uint32_t * pflags ) ;
2011-05-06 13:47:43 +04:00
# endif /* _LIBSMB_PROTO_H_ */