⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smb.h

📁 samba-3.0.22.tar.gz 编译smb服务器的源码
💻 H
📖 第 1 页 / 共 4 页
字号:
#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 + -