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

📄 mydns.h

📁 此dns服务器是在mydns基础上改写
💻 H
📖 第 1 页 / 共 2 页
字号:
	DNS_QTYPE_ANY			= 255,			/* Any */#if ALIAS_ENABLED	DNS_QTYPE_ALIAS		= 500,			/* Extension - David Phillips, alias patch */#endif} dns_qtype_t;typedef enum									/* DNS opcode types */{	DNS_OPCODE_UNKNOWN	= -1,				/* Unknown */	DNS_OPCODE_QUERY		= 0,				/* Query (RFC 1035) */	DNS_OPCODE_IQUERY		= 1,				/* Inverse query (RFC 1035) */	DNS_OPCODE_STATUS		= 2,				/* Status request (RFC 1035) */	DNS_OPCODE_NOTIFY		= 4,				/* Notify request (RFC 1996) */	DNS_OPCODE_UPDATE		= 5,				/* Update request (RFC 2136) */} dns_opcode_t;/* Return codes */typedef enum{	DNS_RCODE_UNKNOWN		= -1,				/* Unknown */	DNS_RCODE_NOERROR		= 0,				/* No error (RFC 1035) */	DNS_RCODE_FORMERR		= 1,				/* Format error (RFC 1035) */	DNS_RCODE_SERVFAIL	= 2,				/* Server failure (RFC 1035) */	DNS_RCODE_NXDOMAIN	= 3,				/* Nonexistent domain (RFC 1035) */	DNS_RCODE_NOTIMP		= 4,				/* Not implemented (RFC 1035) */	DNS_RCODE_REFUSED		= 5,				/* Query refused (RFC 1035) */	DNS_RCODE_YXDOMAIN	= 6,				/* Name exists when it should not (RFC 2136) */	DNS_RCODE_YXRRSET		= 7,				/* RR set exists when it should not (RFC 2136) */	DNS_RCODE_NXRRSET		= 8,				/* RR set that should exist does not (RFC 2136) */	DNS_RCODE_NOTAUTH		= 9,				/* Server not authoritative for zone (RFC 2136) */	DNS_RCODE_NOTZONE		= 10,				/* Name not contained in zone (RFC 2136) */	/* Codes that can't fit in 4 bits are found in OPT (RFC 2671), TSIG (RFC 2845), and		TKEY (RFC 2930) RRs */ 	/* RFC 2671 says that rcode 16 is BADVERS ("Bad OPT version").  This conlicts with		RFC 2845.  RFC 2845 seems like best current practice. */	DNS_RCODE_BADSIG		= 16,				/* TSIG signature failure (RFC 2845) */	DNS_RCODE_BADKEY		= 17,				/* Key not recognized (RFC 2845) */	DNS_RCODE_BADTIME		= 18,				/* Signature out of time window (RFC 2845) */	DNS_RCODE_BADMODE		= 19,				/* Bad TKEY mode (RFC 2930) */	DNS_RCODE_BADNAME		= 20,				/* Duplicate key name (RFC 2930) */	DNS_RCODE_BADALG		= 21,				/* Algorithm not supported (RFC 2930) */} dns_rcode_t;/* The record types */typedef enum _dns_rrtype_t					/* DNS record types (for MyDNS) */{	DNS_RRTYPE_SOA,	DNS_RRTYPE_RR} dns_rrtype_t;typedef enum _datasection_t				/* Sections in reply */{	QUESTION = 0,	ANSWER,	AUTHORITY,	ADDITIONAL} datasection_t;/***  Structures describing each record type*/typedef struct _mydns_soa							/* `soa' table data (zones of authority) */{	uint32_t		id;	char			origin[DNS_MAXNAMELEN + 1];	char			ns[DNS_MAXNAMELEN + 1];	char			mbox[DNS_MAXNAMELEN + 1];	uint32_t		serial;	uint32_t		refresh;	uint32_t		retry;	uint32_t		expire;	uint32_t		minimum;	uint32_t		ttl;	struct _mydns_soa *next;} MYDNS_SOA;typedef struct _mydns_rr							/* `rr' table data (resource records) */{	uint32_t		id;	uint32_t		zone;	char			name[DNS_MAXNAMELEN + 1];	dns_qtype_t	type;	dns_class_t	class;	char			data[DNS_MAXNAMELEN * 2 + 2];	uint32_t		aux;	uint32_t		ttl;#if ALIAS_ENABLED	int			alias;#endif	/* This data used by SRV records only - parsed (and removed) from "data" */	uint16_t		srv_weight, srv_port;	/* For RP records, this points to the "txt" part of the data, which is preceded by a NUL */	char			rp_txt[DNS_MAXNAMELEN + 1];	/* Data for NAPTR records: */	/* This is potentially a lot of data.  I'm a little unclear from the RFC on what the		maximum length of some of these fields are, so I'm just making them big for now.		Hopefully these extra fields won't take up too much extra memory in the cache, slowing		down the mere mortals who don't use NAPTR -- these fields add over 700 bytes to this		structure */	uint16_t		naptr_order;	uint16_t		naptr_pref;	char			naptr_flags[8];	char			naptr_service[DNS_MAXNAMELEN + 1];	char			naptr_regex[DNS_MAXNAMELEN + 1];	char			naptr_replacement[DNS_MAXNAMELEN + 1];	struct _mydns_rr *next;} MYDNS_RR;/* sql.c */#if USE_PGSQLtypedef PGconn SQL;typedef unsigned char ** SQL_ROW;typedef struct _sql_res {	PGresult *result;	int		tuples;	int		fields;	int		current_tuple;	SQL_ROW	current_row;} SQL_RES;#elsetypedef MYSQL SQL;typedef MYSQL_RES SQL_RES;typedef MYSQL_ROW SQL_ROW;#endif/* ip.c */extern uint32_t	mydns_revstr_ip4(char *);extern int			mydns_extract_arpa(char *, uint8_t ip[]);/* question.c */extern char			*dns_make_question(uint16_t id, dns_qtype_t qtype, char *name, int rd, size_t *length);/* rr.c */extern long			mydns_rr_count(SQL *);extern void			mydns_set_rr_table_name(char *);extern void			mydns_set_rr_where_clause(char *);extern dns_qtype_t mydns_rr_get_type(char *);extern MYDNS_RR	*mydns_rr_parse(SQL_ROW, const char *);extern int			mydns_rr_load(SQL *, MYDNS_RR **, uint32_t, dns_qtype_t, char *, char *, const char*);extern MYDNS_RR	*mydns_rr_dup(MYDNS_RR *, int);extern size_t		mydns_rr_size(MYDNS_RR *);extern void			_mydns_rr_free(MYDNS_RR *);#define				mydns_rr_free(p)	if ((p)) _mydns_rr_free((p)), (p) = NULL/* soa.c */extern long			mydns_soa_count(SQL *);extern void			mydns_set_soa_table_name(char *);extern void			mydns_set_soa_where_clause(char *);extern MYDNS_SOA	*mydns_soa_parse(SQL_ROW);extern int			mydns_soa_load(SQL *, MYDNS_SOA **, char *,int);extern int			mydns_soa_make(SQL *, MYDNS_SOA **, unsigned char *, unsigned char *);extern MYDNS_SOA	*mydns_soa_dup(MYDNS_SOA *, int);extern size_t		mydns_soa_size(MYDNS_SOA *);extern void			_mydns_soa_free(MYDNS_SOA *);#define				mydns_soa_free(p)	if ((p)) _mydns_soa_free((p)), (p) = NULL/* sql.c */extern SQL		*sql;extern void		sql_open(char *user, char *password, char *host, char *database);extern void		sql_reopen(void);extern void		_sql_close(SQL *);#define			sql_close(p) if ((p)) _sql_close((p)), (p) = NULLextern int		sql_nrquery(SQL *, const char *query, size_t querylen);extern SQL_RES	*sql_query(SQL *, const char *query, size_t querylen);extern SQL_RES	*sql_queryf(SQL *, const char *, ...) __printflike(2,3);extern long		sql_count(SQL *, const char *, ...) __printflike(2,3);extern SQL_ROW	sql_getrow(SQL_RES *res);extern void		sql_escstr(SQL *, char *, char *, size_t);extern void		_sql_free(SQL_RES *res);extern long		sql_num_rows(SQL_RES *res);extern int		sql_istable(SQL *, const char *);extern int		sql_iscolumn(SQL *, const char *, const char *);#define			sql_free(p) if ((p)) _sql_free((p)), (p) = NULL/* str.c */extern char		*mydns_qtype_str(dns_qtype_t);extern char		*mydns_class_str(dns_class_t);extern char		*mydns_opcode_str(dns_opcode_t);extern char		*mydns_rcode_str(dns_rcode_t);extern char		*mydns_section_str(datasection_t);extern int		hinfo_parse(char *, char *, char *, size_t);/* unencode.c */extern char		*name_unencode(char *, size_t, char *, char *, size_t);#endif /* !_MYDNS_H *//* vi:set ts=3: */

⌨️ 快捷键说明

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