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

📄 domain.h

📁 基于东南大学开发的SEP3203的ARM7中的所有驱动
💻 H
字号:
#ifndef	_DOMAIN_H

#define	_DOMAIN_H



#define KFILE		void

#define MAXINT16	32767



#define	INITRTT		2000L	/* Initial smoothed response time */

#define	MAXCNAME	10	/* Maximum amount of cname recursion */



#define	TYPE_A		1	/* Host address */

#define	TYPE_NS		2	/* Name server */

#define	TYPE_MD		3	/* Mail destination (obsolete) */

#define	TYPE_MF		4	/* Mail forwarder (obsolete) */

#define	TYPE_CNAME	5	/* Canonical name */

#define	TYPE_SOA	6	/* Start of Authority */

#define	TYPE_MB		7	/* Mailbox name (experimental) */

#define	TYPE_MG		8	/* Mail group member (experimental) */

#define	TYPE_MR		9	/* Mail rename name (experimental) */

#define	TYPE_NULL	10	/* Null (experimental) */

#define	TYPE_WKS	11	/* Well-known sockets */

#define	TYPE_PTR	12	/* Pointer record */

#define	TYPE_HINFO	13	/* Host information */

#define	TYPE_MINFO	14	/* Mailbox information (experimental)*/

#define	TYPE_MX		15	/* Mail exchanger */

#define	TYPE_TXT	16	/* Text strings */

#define	TYPE_ANY	255	/* Matches any type */



#define	CLASS_IN	1	/* The ARPA Internet */



struct dserver {

	struct dserver *prev;	/* Linked list pointers */

	struct dserver *next;



	int32 address;		/* IP address of server */

	int32 timeout;		/* Current timeout, ticks */

	int32 srtt;		/* Smoothed round trip time, ticks */

	int32 mdev;		/* Mean deviation, ticks */

	int32 queries;		/* Query packets sent to this server */

	int32 responses;	/* Response packets received from this server */

};

//extern struct dserver *Dlist;

//extern int Dsocket;		/* Socket to use for domain queries */



/* Round trip timing parameters */

#define	AGAIN	8	/* Average RTT gain = 1/8 */

#define	LAGAIN	3	/* Log2(AGAIN) */

#define	DGAIN	4	/* Mean deviation gain = 1/4 */

#define	LDGAIN	2	/* log2(DGAIN) */



/* Header for all domain messages */

struct dhdr {

	u_int16 id;		/* Identification */

	u_int8 qr;		/* Query/Response */

#define	QUERY		0

#define	RESPONSE	1

	u_int8 opcode;

#define	IQUERY		1

	u_int8 aa;		/* Authoratative answer */

	u_int8 tc;		/* Truncation */

	u_int8 rd;		/* Recursion desired */

	u_int8 ra;		/* Recursion available */

	u_int8 rcode;		/* Response code */

#define	NO_ERROR	0

#define	FORMAT_ERROR	1

#define	SERVER_FAIL	2

#define	NAME_ERROR	3

#define	NOT_IMPL	4

#define	REFUSED		5

	//u_int8 pad[3];		/* Keep dhdr struct size 4 alignment */

	u_int16 qdcount;		/* Question count */

	u_int16 ancount;		/* Answer count */

	u_int16 nscount;		/* Authority (name server) count */

	u_int16 arcount;		/* Additional record count */

	struct rr *questions;	/* List of questions */

	struct rr *answers;	/* List of answers */

	struct rr *authority;	/* List of name servers */

	struct rr *additional;	/* List of additional records */

};



struct mx {

	u_int16 pref;

	char *exch;

};



struct hinfo {

	char *cpu;

	char *os;

};



struct soa {

	char *mname;

	char *rname;

	int32 serial;

	int32 refresh;

	int32 retry;

	int32 expire;

	int32 minimum;

};



struct rr {

	struct rr *last;

	struct rr *next;

	u_int8 source;

#define RR_NONE		0

#define RR_FILE		1	/* from file */

#define RR_QUESTION	4	/* from server reply */

#define RR_ANSWER	5	/* from server reply */

#define RR_AUTHORITY	6	/* from server reply */

#define RR_ADDITIONAL	7	/* from server reply */

#define RR_QUERY	8	/* test name (see QUERY)*/

#define RR_INQUERY	9	/* test resource (see IQUERY)*/

	//u_int8 pad;	//keep alignment



	char *comment;		/* optional comment */

	char *name;		/* Domain name, ascii form */

	int32 ttl;		/* Time-to-live */

#define TTL_MISSING	0x80000000L

	u_int16 class;		/* IN, etc */

#define CLASS_MISSING	0

	u_int16 type;		/* A, MX, etc */

#define TYPE_MISSING	0

	u_int16 rdlength;		/* Length of data field */

	union {

		int32 addr;		/* Used for type == A */

		struct soa soa;		/* Used for type == SOA */

		struct mx mx;		/* Used for type == MX */

		struct hinfo hinfo;	/* Used for type == HINFO */

		char *name;		/* for domain names */

		char *data;		/* for anything else */

	} rdata;

};





/* We declare these vars as extern so that we can initialize them in kmain.c 11/20/1999*/

extern struct rr *Dcache ;		/* Cache of resource records */

extern int Dcache_size ;		/* size limit */

extern int Dfile_clean ; 		/* discard expired records (flag) */

extern int Dfile_reading;		/* read interlock (count) */

extern int Dfile_writing;		/* write interlock (count) */



extern struct proc *Dfile_updater;

extern int32 Dfile_wait_absolute;	/* timeout Clock time */

extern int Dfile_wait_relative;		/* timeout file activity (seconds) */



extern struct dserver *Dservers; 	/* List of potential servers */

extern int Dserver_retries ;		/* Attempts to reach servers */



extern char *Dsuffix ;			/* Default suffix for names without periods */

extern int Dtrace;



extern int32 resolve(char *name);

extern int add_nameserver(int32 address);

extern int getdnshdr(struct dhdr *dhdr, u_char *buf);




#endif	/* _DOMAIN_H */

⌨️ 快捷键说明

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