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

📄 smbdat.h

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 H
字号:
typedef struct SmbSession SmbSession;typedef struct SmbTree SmbTree;typedef struct SmbService SmbService;typedef struct SmbPeerInfo SmbPeerInfo;typedef struct SmbTransaction SmbTransaction;typedef struct SmbBuffer SmbBuffer;typedef struct SmbIdMap SmbIdMap;typedef struct SmbSearch SmbSearch;typedef struct SmbDirCache SmbDirCache;typedef struct SmbFile SmbFile;typedef struct SmbSharedFile SmbSharedFile;typedef struct SmbCifsSession SmbCifsSession;typedef struct SmbServerInfo SmbServerInfo;typedef struct SmbRapServerInfo1 SmbRapServerInfo1;typedef struct SmbFindFileBothDirectoryInfo SmbFindFileBothDirectoryInfo;typedef struct SmbLock SmbLock;typedef struct SmbLockList SmbLockList;typedef struct SmbSlut SmbSlut;#pragma incomplete SmbIdMap#pragma incomplete SmbBuffer#pragma incomplete SmbLockListtypedef int SMBCIFSWRITEFN(SmbCifsSession *cifs, void *buf, long n);typedef int SMBCIFSACCEPTFN(SmbCifsSession *cifs, SMBCIFSWRITEFN **fnp);typedef void SMBIDMAPAPPLYFN(void *magic, void *p);struct SmbPeerInfo {	ulong capabilities;	ushort maxlen;	uchar securitymode;	ushort maxmpxcount;	ushort maxnumbervcs;	ulong maxbuffersize;	ulong maxrawsize;	ulong sessionkey;	vlong utc;	short tzoff;	uchar encryptionkeylength;	uchar *encryptionkey;	char *oemdomainname;};struct SmbTransaction {	struct {		char *name;		ulong tpcount;		uchar *parameters;		ulong pcount;		ulong tdcount;		uchar *data;		ulong maxpcount;		ulong maxdcount;		ulong maxscount;		ulong dcount;		ushort scount;		ushort *setup;		ushort flags;	} in;	struct {		ulong tpcount;		ulong tdcount;		SmbBuffer *parameters;		SmbBuffer *data;		ushort *setup;	} out;};enum {	SmbSessionNeedNegotiate,	SmbSessionNeedSetup,	SmbSessionEstablished,};struct SmbSession {	NbSession *nbss;	SmbCifsSession *cifss;	uchar nextcommand;	SmbBuffer *response;	SmbPeerInfo peerinfo;	Chalstate *cs;	struct {		char *accountname;			char *primarydomain;		char *nativeos;		char *nativelanman;		ushort maxmpxcount;		MSchapreply mschapreply;	} client;	SmbTransaction transaction;	SmbIdMap *fidmap;	SmbIdMap *tidmap;	SmbIdMap *sidmap;	int state;	uchar errclass;	ushort error;	int tzoff;		// as passed to client during negotiation	SmbService *serv;};typedef struct SmbHeader {	uchar command;	union {		struct {			uchar errclass;			ushort error;		};		ulong status;	};	uchar flags;	ushort flags2;	union {		struct {			ushort pidhigh;			uchar securitysignature[8];		};	};	ushort tid;	ushort pid;	ushort uid;	ushort mid;	uchar wordcount;} SmbHeader;typedef enum SmbProcessResult {	SmbProcessResultOk,	SmbProcessResultUnimp,	SmbProcessResultFormat,	SmbProcessResultMisc,	SmbProcessResultError,	SmbProcessResultReply,	SmbProcessResultDie,} SmbProcessResult;typedef SmbProcessResult SMBPROCESSFN(SmbSession *s, SmbHeader *h, uchar *pdata, SmbBuffer *);typedef struct SmbOpTableEntry SmbOpTableEntry;struct SmbOpTableEntry {	char *name;	SMBPROCESSFN *process;	int debug;};extern SmbOpTableEntry smboptable[256];typedef struct SmbGlobals SmbGlobals;extern SmbGlobals smbglobals;struct SmbServerInfo {	char *name;	char *nativelanman;	uchar vmaj, vmin;	ulong stype;	char *remark;};struct SmbGlobals {	int maxreceive;	int unicode;	SmbServerInfo serverinfo;	char *nativeos;	char *primarydomain;	NbName nbname;	char *accountname;	char *mailslotbrowse;	char *pipelanman;	int l2sectorsize;	int l2allocationsize;	int convertspace;	struct {		int fd;		int print;		int tids;		int sids;		int fids;		int rap2;		int find;		int query;		int sharedfiles;		int sessions;		int rep;		int poolparanoia;		int locks;	} log;};struct SmbTree {	long id;	SmbService *serv;};struct SmbService {	Ref;	char *name;	char *type;	ushort stype;	char *path;	char *remark;	SmbService *next;};extern SmbService *smbservices;typedef struct SmbClient SmbClient;typedef struct SmbTransactionMethod {	int (*encodeprimary)(SmbTransaction *t, SmbHeader *h, SmbPeerInfo *p,		SmbBuffer *ob, uchar *wordcount, ushort *bytecount, char **errmsgp);	int (*encodesecondary)(SmbTransaction *t, SmbHeader *h, SmbBuffer *ob, char **errmsgp);	int (*sendrequest)(void *magic, SmbBuffer *ob, char **errmsgp);	int (*receiveintermediate)(void *magic, uchar *wordcountp, ushort *bytecountp, char **errmsgp);	int (*receiveresponse)(void *magic, SmbBuffer *ib, char **errmsgp);	int (*decoderesponse)(SmbTransaction *t, SmbHeader *h, uchar *pdata, SmbBuffer *b, char **errmsgp);	int (*encoderesponse)(SmbTransaction *t, SmbHeader *h, SmbPeerInfo *p,		SmbBuffer *ob, char **errmsgp);	int (*sendresponse)(void *magic, SmbBuffer *ob, char **errmsgp);} SmbTransactionMethod;extern SmbTransactionMethod smbtransactionmethoddgram;struct SmbSearch {	long id;	SmbTree *t;	SmbDirCache *dc;	Reprog *rep;	ushort tid;};struct SmbFile {	long id;	SmbTree *t;		// tree this belongs to	int fd;	char *name;	int p9mode;		// how it was opened	int share;			// additional sharing restictions added by this fid	int ioallowed;	SmbSharedFile *sf;};struct SmbSharedFile {	ushort type;	ulong dev;	vlong path;//	char *name;	int share;			// current share level	int deleteonclose;	SmbLockList *locklist;};struct SmbLock {	vlong base;	vlong limit;	SmbSession *s;		// owning session	ushort pid;		// owning pid};struct SmbCifsSession {	int fd;	void *magic;};struct SmbClient {	SmbPeerInfo peerinfo;	NbSession *nbss;	SmbBuffer *b;	ushort ipctid;	ushort sharetid;	SmbHeader protoh;};struct SmbRapServerInfo1 {	char name[16];	uchar vmaj;	uchar vmin;	ulong type;	char *remark;};struct SmbFindFileBothDirectoryInfo {	ulong fileindex;	vlong creationtime;	vlong lastaccesstime;	vlong lastwritetime;	vlong changetime;	vlong endoffile;	vlong allocationsize;	ulong extfileattributes;	char *filename;};enum {	SMB_STRING_UNALIGNED = 1,	SMB_STRING_UPCASE = 2,	SMB_STRING_UNTERMINATED = 4,	SMB_STRING_UNICODE = 8,	SMB_STRING_ASCII = 16,	SMB_STRING_REVPATH = 32,	SMB_STRING_PATH = 64,	SMB_STRING_CONVERT_MASK = SMB_STRING_PATH | SMB_STRING_REVPATH | SMB_STRING_UPCASE,};struct SmbDirCache {	Dir *buf;	long n;	long i;};typedef struct SmbTrans2OpTableEntry SmbTrans2OpTableEntry;typedef SmbProcessResult SMBTRANS2PROCESSFN(SmbSession *s, SmbHeader *h);struct SmbTrans2OpTableEntry {	char *name;	SMBTRANS2PROCESSFN *process;	int debug;};extern SmbTrans2OpTableEntry smbtrans2optable[];extern int smbtrans2optablesize;struct SmbSlut {	char *name;	int val;};extern SmbSlut smbopenmodeslut[];extern SmbSlut smbsharemodeslut[];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -