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

📄 dat.h

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 H
字号:
#include <u.h>#include <libc.h>#include <auth.h>#include <authsrv.h>#include <mp.h>#include <libsec.h>#include <String.h>#include <thread.h>	/* only for 9p.h */#include <fcall.h>#include <9p.h>#pragma varargck type "N" Attr*enum{	Maxname = 128,	Maxrpc = 4096,	/* common protocol phases; proto-specific phases start at 0 */	Notstarted = -3,	Broken = -2,	Established = -1,	/* rpc read/write return values */	RpcFailure = 0,	RpcNeedkey,	RpcOk,	RpcErrstr,	RpcToosmall,	RpcPhase,	RpcConfirm,};typedef struct Domain Domain;typedef struct Fsstate Fsstate;typedef struct Key Key;typedef struct Keyinfo Keyinfo;typedef struct Keyring Keyring;typedef struct Logbuf Logbuf;typedef struct Proto Proto;typedef struct State State;#pragma incomplete Statestruct Fsstate{	char *sysuser;	/* user according to system */	/* keylist, protolist */	int listoff;	/* per-rpc transient information */	int pending;	struct {		char *arg, buf[Maxrpc], *verb;		int iverb, narg, nbuf, nwant;	} rpc;		/* persistent (cross-rpc) information */	char err[ERRMAX];	char keyinfo[3*Maxname];	/* key request */	char **phasename;	int haveai, maxphase, phase, seqnum, started;	Attr *attr;	AuthInfo ai;	Proto *proto;	State *ps;	struct {		/* pending or finished key confirmations */		Key *key;		int canuse;		ulong tag;	} *conf;	int nconf;};struct Key{	int ref;	Attr *attr;	Attr *privattr;	/* private attributes, like *data */	Proto *proto;	void *priv;	/* protocol-specific; a parsed key, perhaps */};struct Keyinfo	/* for findkey */{	Fsstate *fss;	char *user;	int noconf;	int skip;	int usedisabled;	Attr *attr;};struct Keyring{	Key **key;	int nkey;};struct Logbuf{	Req *wait;	Req **waitlast;	int rp;	int wp;	char *msg[128];};struct Proto{	char *name;	int (*init)(Proto*, Fsstate*);	int (*addkey)(Key*, int);	void (*closekey)(Key*);	int (*write)(Fsstate*, void*, uint);	int (*read)(Fsstate*, void*, uint*);	void (*close)(Fsstate*);	char *keyprompt;};extern char *invoker;extern char *owner;extern char *authdom;extern char Easproto[];extern char Ebadarg[];extern char Ebadkey[];extern char Enegotiation[];extern char Etoolarge[];/* confirm.c */void confirmread(Req*);void confirmflush(Req*);int confirmwrite(char*);void confirmqueue(Req*, Fsstate*);void needkeyread(Req*);void needkeyflush(Req*);int needkeywrite(char*);int needkeyqueue(Req*, Fsstate*);/* fs.c */extern	int		askforkeys;extern	char		*authaddr;extern	int		*confirminuse;extern	int		debug;extern	int		gflag;extern	int		kflag;extern	int		*needkeyinuse;extern	int		sflag;extern	int		uflag;extern	char		*mtpt;extern	char		*service;extern	Proto 	*prototab[];extern	Keyring	*ring;/* log.c */void flog(char*, ...);#pragma varargck argpos flog 1void logread(Req*);void logflush(Req*);void logbufflush(Logbuf*, Req*);void logbufread(Logbuf*, Req*);void logbufproc(Logbuf*);void logbufappend(Logbuf*, char*);void needkeyread(Req*);void needkeyflush(Req*);int needkeywrite(char*);int needkeyqueue(Req*, Fsstate*);/* rpc.c */int ctlwrite(char*, int);void rpcrdwrlog(Fsstate*, char*, uint, int, int);void rpcstartlog(Attr*, Fsstate*, int);void rpcread(Req*);void rpcwrite(Req*);/* secstore.c */int havesecstore(void);int secstorefetch(char*);/* util.c */#define emalloc emalloc9p#define estrdup estrdup9p#define erealloc erealloc9p#pragma varargck argpos failure 2#pragma varargck argpos findkey 3#pragma varargck argpos setattr 2int		_authdial(char*, char*);void		askuser(char*);int		attrnamefmt(Fmt *fmt);int		canusekey(Fsstate*, Key*);void		closekey(Key*);uchar	*convAI2M(AuthInfo*, uchar*, int);void		disablekey(Key*);char		*estrappend(char*, char*, ...);#pragma varargck argpos estrappend 2int		failure(Fsstate*, char*, ...);Keyinfo*	mkkeyinfo(Keyinfo*, Fsstate*, Attr*);int		findkey(Key**, Keyinfo*, char*, ...);int		findp9authkey(Key**, Fsstate*);Proto	*findproto(char*);char		*getnvramkey(int, char**);void		initcap(void);int		isclient(char*);int		matchattr(Attr*, Attr*, Attr*);void 		memrandom(void*, int);char 		*mkcap(char*, char*);int 		phaseerror(Fsstate*, char*);char		*phasename(Fsstate*, int, char*);void 		promptforhostowner(void);char		*readcons(char*, char*, int);int		replacekey(Key*, int before);char		*safecpy(char*, char*, int);int		secdial(void);Attr		*setattr(Attr*, char*, ...);Attr		*setattrs(Attr*, Attr*);void		sethostowner(void);void		setmalloctaghere(void*);int		smatch(char*, char*);Attr		*sortattr(Attr*);int		toosmall(Fsstate*, uint);void		writehostowner(char*);/* protocols */extern Proto apop, cram;		/* apop.c */extern Proto p9any, p9sk1, p9sk2;	/* p9sk.c */extern Proto chap, mschap;		/* chap.c */extern Proto p9cr, vnc;			/* p9cr.c */extern Proto pass;			/* pass.c */extern Proto rsa;			/* rsa.c */extern Proto wep;			/* wep.c *//* extern Proto srs;			/* srs.c */extern Proto httpdigest;		/* httpdigest.c */

⌨️ 快捷键说明

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