#ifndef _LIBSMB_INTERNAL_H_ #define _LIBSMB_INTERNAL_H_ #define SMBC_MAX_NAME 1023 #define SMBC_FILE_MODE (S_IFREG | 0444) #define SMBC_DIR_MODE (S_IFDIR | 0555) #include "include/libsmbclient.h" struct _SMBCSRV { struct cli_state *cli; dev_t dev; bool no_pathinfo; bool no_pathinfo2; bool no_nt_session; POLICY_HND pol; SMBCSRV *next, *prev; }; /* * Keep directory entries in a list */ struct smbc_dir_list { struct smbc_dir_list *next; struct smbc_dirent *dirent; }; /* * Structure for open file management */ struct _SMBCFILE { int cli_fd; char *fname; SMB_OFF_T offset; struct _SMBCSRV *srv; bool file; struct smbc_dir_list *dir_list, *dir_end, *dir_next; int dir_type, dir_error; SMBCFILE *next, *prev; }; struct smbc_internal_data { /* * Is this handle initialized ? */ bool _initialized; /* dirent pointer location * * Leave room for any urlencoded filename and the comment field. * * We really should use sizeof(struct smbc_dirent) plus (NAME_MAX * 3) * plus whatever the max length of a comment is, plus a couple of null * terminators (one after the filename, one after the comment). * * According to , NAME_MAX is 255. Is it longer * anyplace else? */ char _dirent[1024]; /* * server connection list */ SMBCSRV * _servers; /* * open file/dir list */ SMBCFILE * _files; /* * Log to standard error instead of the more typical standard output */ bool _debug_stderr; /* * Support "Create Time" in get/set with the *xattr() functions, if * true. This replaces the dos attribute strings C_TIME, A_TIME and * M_TIME with CHANGE_TIME, ACCESS_TIME and WRITE_TIME, and adds * CREATE_TIME. Default is FALSE, i.e. to use the old-style shorter * names and to not support CREATE time, for backward compatibility. */ bool _full_time_names; /* * The share mode of a file being opened. To match POSIX semantics * (and maintain backward compatibility), DENY_NONE is the default. */ smbc_share_mode _share_mode; /* * Authentication function which includes the context. This will be * used if set; otherwise context->callbacks.auth_fn() will be used. */ smbc_get_auth_data_with_context_fn _auth_fn_with_context; /* * An opaque (to this library) user data handle which can be set * and retrieved with smbc_option_set() and smbc_option_get(). */ void * _user_data; /* * Should we attempt UNIX smb encryption ? * Set to 0 if we should never attempt, set to 1 if * encryption requested, set to 2 if encryption required. */ int _smb_encryption_level; }; #endif