📄 smb.h
字号:
#define SV_TYPE_DFS_SERVER 0x00800000#define SV_TYPE_ALTERNATE_XPORT 0x20000000 #define SV_TYPE_LOCAL_LIST_ONLY 0x40000000 #define SV_TYPE_DOMAIN_ENUM 0x80000000#define SV_TYPE_ALL 0xFFFFFFFF /* This was set by JHT in liaison with Jeremy Allison early 1997 * History: * Version 4.0 - never made public * Version 4.10 - New to 1.9.16p2, lost in space 1.9.16p3 to 1.9.16p9 * - Reappeared in 1.9.16p11 with fixed smbd services * Version 4.20 - To indicate that nmbd and browsing now works better * Version 4.50 - Set at release of samba-2.2.0 by JHT * * Note: In the presence of NT4.X do not set above 4.9 * Setting this above 4.9 can have undesired side-effects. * This may change again in Samba-3.0 after further testing. JHT */ #define DEFAULT_MAJOR_VERSION 0x04#define DEFAULT_MINOR_VERSION 0x09/* Browser Election Values */#define BROWSER_ELECTION_VERSION 0x010f#define BROWSER_CONSTANT 0xaa55/* Sercurity mode bits. */#define NEGOTIATE_SECURITY_USER_LEVEL 0x01#define NEGOTIATE_SECURITY_CHALLENGE_RESPONSE 0x02#define NEGOTIATE_SECURITY_SIGNATURES_ENABLED 0x04#define NEGOTIATE_SECURITY_SIGNATURES_REQUIRED 0x08/* NT Flags2 bits - cifs6.txt section 3.1.2 */ #define FLAGS2_LONG_PATH_COMPONENTS 0x0001#define FLAGS2_EXTENDED_ATTRIBUTES 0x0002#define FLAGS2_SMB_SECURITY_SIGNATURES 0x0004#define FLAGS2_IS_LONG_NAME 0x0040#define FLAGS2_EXTENDED_SECURITY 0x0800 #define FLAGS2_DFS_PATHNAMES 0x1000#define FLAGS2_READ_PERMIT_EXECUTE 0x2000#define FLAGS2_32_BIT_ERROR_CODES 0x4000 #define FLAGS2_UNICODE_STRINGS 0x8000#define FLAGS2_WIN2K_SIGNATURE 0xC852 /* Hack alert ! For now... JRA. *//* Capabilities. see ftp.microsoft.com/developr/drg/cifs/cifs/cifs4.txt */#define CAP_RAW_MODE 0x0001#define CAP_MPX_MODE 0x0002#define CAP_UNICODE 0x0004#define CAP_LARGE_FILES 0x0008#define CAP_NT_SMBS 0x0010#define CAP_RPC_REMOTE_APIS 0x0020#define CAP_STATUS32 0x0040#define CAP_LEVEL_II_OPLOCKS 0x0080#define CAP_LOCK_AND_READ 0x0100#define CAP_NT_FIND 0x0200#define CAP_DFS 0x1000#define CAP_W2K_SMBS 0x2000#define CAP_LARGE_READX 0x4000#define CAP_LARGE_WRITEX 0x8000#define CAP_UNIX 0x800000 /* Capabilities for UNIX extensions. Created by HP. */#define CAP_EXTENDED_SECURITY 0x80000000/* protocol types. It assumes that higher protocols include lower protocols as subsets */enum protocol_types {PROTOCOL_NONE,PROTOCOL_CORE,PROTOCOL_COREPLUS,PROTOCOL_LANMAN1,PROTOCOL_LANMAN2,PROTOCOL_NT1};/* security levels */enum security_types {SEC_SHARE,SEC_USER,SEC_SERVER,SEC_DOMAIN,SEC_ADS};/* server roles */enum server_types{ ROLE_STANDALONE, ROLE_DOMAIN_MEMBER, ROLE_DOMAIN_BDC, ROLE_DOMAIN_PDC};/* printing types */enum printing_types {PRINT_BSD,PRINT_SYSV,PRINT_AIX,PRINT_HPUX, PRINT_QNX,PRINT_PLP,PRINT_LPRNG,PRINT_SOFTQ, PRINT_CUPS,PRINT_LPRNT,PRINT_LPROS2,PRINT_IPRINT#ifdef DEVELOPER,PRINT_TEST,PRINT_VLP#endif /* DEVELOPER */};/* LDAP schema types */enum schema_types {SCHEMA_COMPAT, SCHEMA_AD, SCHEMA_SAMBA};/* LDAP SSL options */enum ldap_ssl_types {LDAP_SSL_ON, LDAP_SSL_OFF, LDAP_SSL_START_TLS};/* LDAP PASSWD SYNC methods */enum ldap_passwd_sync_types {LDAP_PASSWD_SYNC_ON, LDAP_PASSWD_SYNC_OFF, LDAP_PASSWD_SYNC_ONLY};/* Remote architectures we know about. */enum remote_arch_types {RA_UNKNOWN, RA_WFWG, RA_OS2, RA_WIN95, RA_WINNT, RA_WIN2K, RA_WINXP, RA_WIN2K3, RA_SAMBA, RA_CIFSFS};/* case handling */enum case_handling {CASE_LOWER,CASE_UPPER};/* * Global value meaing that the smb_uid field should be * ingored (in share level security and protocol level == CORE) */#define UID_FIELD_INVALID 0#define VUID_OFFSET 100 /* Amount to bias returned vuid numbers *//* * Size of buffer to use when moving files across filesystems. */#define COPYBUF_SIZE (8*1024)/* * Used in chaining code. */extern int chain_size;/* * Map the Core and Extended Oplock requesst bits down * to common bits (EXCLUSIVE_OPLOCK & BATCH_OPLOCK). *//* * Core protocol. */#define CORE_OPLOCK_REQUEST(inbuf) \ ((CVAL(inbuf,smb_flg)&(FLAG_REQUEST_OPLOCK|FLAG_REQUEST_BATCH_OPLOCK))>>5)/* * Extended protocol. */#define EXTENDED_OPLOCK_REQUEST(inbuf) ((SVAL(inbuf,smb_vwv2)&((1<<1)|(1<<2)))>>1)/* Lock types. */#define LOCKING_ANDX_SHARED_LOCK 0x1#define LOCKING_ANDX_OPLOCK_RELEASE 0x2#define LOCKING_ANDX_CHANGE_LOCKTYPE 0x4#define LOCKING_ANDX_CANCEL_LOCK 0x8#define LOCKING_ANDX_LARGE_FILES 0x10/* * Bits we test with. */ #define NO_OPLOCK 0#define EXCLUSIVE_OPLOCK 1#define BATCH_OPLOCK 2#define LEVEL_II_OPLOCK 4#define INTERNAL_OPEN_ONLY 8#define FAKE_LEVEL_II_OPLOCK 16 /* Client requested no_oplock, but we have to * inform potential level2 holders on * write. */#define DEFERRED_OPEN_ENTRY 32#define UNUSED_SHARE_MODE_ENTRY 64#define EXCLUSIVE_OPLOCK_TYPE(lck) ((lck) & ((unsigned int)EXCLUSIVE_OPLOCK|(unsigned int)BATCH_OPLOCK))#define BATCH_OPLOCK_TYPE(lck) ((lck) & (unsigned int)BATCH_OPLOCK)#define LEVEL_II_OPLOCK_TYPE(lck) ((lck) & ((unsigned int)LEVEL_II_OPLOCK|(unsigned int)FAKE_LEVEL_II_OPLOCK))struct inform_level2_message { SMB_DEV_T dev; SMB_INO_T inode; uint16 mid; unsigned long target_file_id; unsigned long source_file_id;};/* kernel_oplock_message definition.struct kernel_oplock_message { SMB_DEV_T dev; SMB_INO_T inode; unsigned long file_id;};Offset Data length.0 SMB_DEV_T dev 8 bytes.8 SMB_INO_T inode 8 bytes16 unsigned long file_id 4 bytes20*/#define MSG_SMB_KERNEL_BREAK_SIZE 20/* file_renamed_message definition.struct file_renamed_message { SMB_DEV_T dev; SMB_INO_T inode; char names[1]; A variable area containing sharepath and filename.};Offset Data length.0 SMB_DEV_T dev 8 bytes.8 SMB_INO_T inode 8 bytes16 char [] name zero terminated namelen bytesminimum length == 18.*/#define MSG_FILE_RENAMED_MIN_SIZE 16/* * On the wire return values for oplock types. */#define CORE_OPLOCK_GRANTED (1<<5)#define EXTENDED_OPLOCK_GRANTED (1<<15)#define NO_OPLOCK_RETURN 0#define EXCLUSIVE_OPLOCK_RETURN 1#define BATCH_OPLOCK_RETURN 2#define LEVEL_II_OPLOCK_RETURN 3/* Oplock levels */#define OPLOCKLEVEL_NONE 0#define OPLOCKLEVEL_II 1/* * Capabilities abstracted for different systems. */#define KERNEL_OPLOCK_CAPABILITY 0x1/* if a kernel does support oplocks then a structure of the following typee is used to describe how to interact with the kernel */struct kernel_oplocks { files_struct * (*receive_message)(fd_set *fds); BOOL (*set_oplock)(files_struct *fsp, int oplock_type); void (*release_oplock)(files_struct *fsp); BOOL (*msg_waiting)(fd_set *fds); int notification_fd;};/* this structure defines the functions for doing change notify in various implementations */struct cnotify_fns { void * (*register_notify)(connection_struct *conn, char *path, uint32 flags); BOOL (*check_notify)(connection_struct *conn, uint16 vuid, char *path, uint32 flags, void *data, time_t t); void (*remove_notify)(void *data); int select_time;};#include "smb_macros.h"#define MAX_NETBIOSNAME_LEN 16/* DOS character, NetBIOS namestring. Type used on the wire. */typedef char nstring[MAX_NETBIOSNAME_LEN];/* Unix character, NetBIOS namestring. Type used to manipulate name in nmbd. */typedef char unstring[MAX_NETBIOSNAME_LEN*4];/* A netbios name structure. */struct nmb_name { nstring name; char scope[64]; unsigned int name_type;};/* A netbios node status array element. */typedef struct node_status_ { nstring name; unsigned char type; unsigned char flags;} NODE_STATUS_STRUCT;/* The extra info from a NetBIOS node status query */struct node_status_extra { unsigned char mac_addr[6]; /* There really is more here ... */ };struct pwd_info { BOOL null_pwd; BOOL cleartext; fstring password;};typedef struct user_struct { struct user_struct *next, *prev; uint16 vuid; /* Tag for this entry. */ uid_t uid; /* uid of a validated user */ gid_t gid; /* gid of a validated user */ userdom_struct user; char *homedir; char *unix_homedir; char *logon_script; BOOL guest; /* following groups stuff added by ih */ /* This groups info is needed for when we become_user() for this uid */ int n_groups; gid_t *groups; NT_USER_TOKEN *nt_user_token; DATA_BLOB session_key; char *session_keystr; /* used by utmp and pam session code. TDB key string */ int homes_snum; struct auth_serversupplied_info *server_info; struct auth_ntlmssp_state *auth_ntlmssp_state;} user_struct;struct unix_error_map { int unix_error; int dos_class; int dos_code; NTSTATUS nt_error;};/* * Size of new password account encoding string. This is enough space to * hold 11 ACB characters, plus the surrounding [] and a terminating null. * Do not change unless you are adding new ACB bits! */#define NEW_PW_FORMAT_SPACE_PADDED_LEN 14/* Do you want session setups at user level security with a invalid password to be rejected or allowed in as guest? WinNT rejects them but it can be a pain as it means "net view" needs to use a password You have 3 choices in the setting of map_to_guest: "NEVER_MAP_TO_GUEST" means session setups with an invalid password are rejected. This is the default. "MAP_TO_GUEST_ON_BAD_USER" means session setups with an invalid password are rejected, unless the username does not exist, in which case it is treated as a guest login "MAP_TO_GUEST_ON_BAD_PASSWORD" means session setups with an invalid password are treated as a guest login Note that map_to_guest only has an effect in user or server level security.*/#define NEVER_MAP_TO_GUEST 0#define MAP_TO_GUEST_ON_BAD_USER 1#define MAP_TO_GUEST_ON_BAD_PASSWORD 2#define MAP_TO_GUEST_ON_BAD_UID 3#define SAFE_NETBIOS_CHARS ". -_"/* generic iconv conversion structure */typedef struct _smb_iconv_t { size_t (*direct)(void *cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); size_t (*pull)(void *cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); size_t (*push)(void *cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); void *cd_direct, *cd_pull, *cd_push; char *from_name, *to_name;} *smb_iconv_t;/* The maximum length of a trust account password. Used when we randomly create it, 15 char passwords exceed NT4's max password length */#define DEFAULT_TRUST_ACCOUNT_PASSWORD_LENGTH 14#include "popt_common.h"#define PORT_NONE 0#ifndef LDAP_PORT#define LDAP_PORT 389#endif/* used by the IP comparison function */struct ip_service { struct in_addr ip; unsigned port;};/* Used by the SMB signing functions. */typedef struct smb_sign_info { void (*sign_outgoing_message)(char *outbuf, struct smb_sign_info *si); BOOL (*check_incoming_message)(char *inbuf, struct smb_sign_info *si, BOOL must_be_ok); void (*free_signing_context)(struct smb_sign_info *si); void *signing_context; BOOL negotiated_smb_signing; BOOL allow_smb_signing; BOOL doing_signing; BOOL mandatory_signing; BOOL seen_valid; /* Have I ever seen a validly signed packet? */} smb_sign_info;struct ea_struct { uint8 flags; char *name; DATA_BLOB value;};struct ea_list { struct ea_list *next, *prev; struct ea_struct ea;};/* EA names used internally in Samba. KEEP UP TO DATE with prohibited_ea_names in trans2.c !. */#define SAMBA_POSIX_INHERITANCE_EA_NAME "user.SAMBA_PAI"/* EA to use for DOS attributes */#define SAMBA_XATTR_DOS_ATTRIB "user.DOSATTRIB"struct uuid { uint32 time_low; uint16 time_mid; uint16 time_hi_and_version; uint8 clock_seq[2]; uint8 node[6];};#define UUID_SIZE 16#define UUID_FLAT_SIZE 16typedef struct uuid_flat { uint8 info[UUID_FLAT_SIZE];} UUID_FLAT;/* map readonly options */enum mapreadonly_options {MAP_READONLY_NO, MAP_READONLY_YES, MAP_READONLY_PERMISSIONS};#endif /* _SMB_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -