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

📄 lwres.h

📁 bind 9.3结合mysql数据库
💻 H
📖 第 1 页 / 共 2 页
字号:
/* * Copyright (C) 2004  Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000, 2001  Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. *//* $Id: lwres.h,v 1.49.12.3 2004/03/08 09:05:11 marka Exp $ */#ifndef LWRES_LWRES_H#define LWRES_LWRES_H 1#include <stdio.h>#include <lwres/context.h>#include <lwres/lang.h>#include <lwres/list.h>#include <lwres/lwpacket.h>#include <lwres/platform.h>/* * Design notes: * * Each opcode has two structures and three functions which operate on each * structure.  For example, using the "no operation/ping" opcode as an * example: * *	lwres_nooprequest_t: * *		lwres_nooprequest_render() takes a lwres_nooprequest_t and *		and renders it into wire format, storing the allocated *		buffer information in a passed-in buffer.  When this buffer *		is no longer needed, it must be freed by *		lwres_context_freemem().  All other memory used by the *		caller must be freed manually, including the *		lwres_nooprequest_t passed in. * *		lwres_nooprequest_parse() takes a wire format message and *		breaks it out into a lwres_nooprequest_t.  The structure *		must be freed via lwres_nooprequest_free() when it is no longer *		needed. * *		lwres_nooprequest_free() releases into the lwres_context_t *		any space allocated during parsing. * *	lwres_noopresponse_t: * *		The functions used are similar to the three used for *		requests, just with different names. * * Typically, the client will use request_render, response_parse, and * response_free, while the daemon will use request_parse, response_render, * and request_free. * * The basic flow of a typical client is: * *	fill in a request_t, and call the render function. * *	Transmit the buffer returned to the daemon. * *	Wait for a response. * *	When a response is received, parse it into a response_t. * *	free the request buffer using lwres_context_freemem(). * *	free the response structure and its associated buffer using *	response_free(). */#define LWRES_UDP_PORT		921#define LWRES_RECVLENGTH	16384#define LWRES_ADDR_MAXLEN	16	/* changing this breaks ABI */#define LWRES_RESOLV_CONF	"/etc/resolv.conf"/* * Flags. * * 	These flags are only relevant to rrset queries. * *	TRUSTNOTREQUIRED:  DNSSEC is not required (input) *	SECUREDATA: The data was crypto-verified with DNSSEC (output) * */#define LWRES_FLAG_TRUSTNOTREQUIRED	0x00000001U#define LWRES_FLAG_SECUREDATA		0x00000002U/* * no-op */#define LWRES_OPCODE_NOOP		0x00000000Utypedef struct {	/* public */	lwres_uint16_t			datalength;	unsigned char		       *data;} lwres_nooprequest_t;typedef struct {	/* public */	lwres_uint16_t			datalength;	unsigned char		       *data;} lwres_noopresponse_t;/* * get addresses by name */#define LWRES_OPCODE_GETADDRSBYNAME	0x00010001Utypedef struct lwres_addr lwres_addr_t;typedef LWRES_LIST(lwres_addr_t) lwres_addrlist_t;struct lwres_addr {	lwres_uint32_t			family;	lwres_uint16_t			length;	unsigned char			address[LWRES_ADDR_MAXLEN];	LWRES_LINK(lwres_addr_t)	link;};typedef struct {	/* public */	lwres_uint32_t			flags;	lwres_uint32_t			addrtypes;	lwres_uint16_t			namelen;	char			       *name;} lwres_gabnrequest_t;typedef struct {	/* public */	lwres_uint32_t			flags;	lwres_uint16_t			naliases;	lwres_uint16_t			naddrs;	char			       *realname;	char			      **aliases;	lwres_uint16_t			realnamelen;	lwres_uint16_t		       *aliaslen;	lwres_addrlist_t		addrs;	/* if base != NULL, it will be freed when this structure is freed. */	void			       *base;	size_t				baselen;} lwres_gabnresponse_t;/* * get name by address */#define LWRES_OPCODE_GETNAMEBYADDR	0x00010002Utypedef struct {	/* public */	lwres_uint32_t			flags;	lwres_addr_t			addr;} lwres_gnbarequest_t;typedef struct {	/* public */	lwres_uint32_t			flags;	lwres_uint16_t			naliases;	char			       *realname;	char			      **aliases;	lwres_uint16_t			realnamelen;	lwres_uint16_t		       *aliaslen;	/* if base != NULL, it will be freed when this structure is freed. */	void			       *base;	size_t				baselen;} lwres_gnbaresponse_t;/* * get rdata by name */#define LWRES_OPCODE_GETRDATABYNAME	0x00010003Utypedef struct {	/* public */	lwres_uint32_t			flags;	lwres_uint16_t			rdclass;	lwres_uint16_t			rdtype;	lwres_uint16_t			namelen;	char			       *name;} lwres_grbnrequest_t;typedef struct {	/* public */	lwres_uint32_t			flags;	lwres_uint16_t			rdclass;	lwres_uint16_t			rdtype;	lwres_uint32_t			ttl;	lwres_uint16_t			nrdatas;	lwres_uint16_t			nsigs;	char			       *realname;	lwres_uint16_t			realnamelen;	unsigned char		      **rdatas;	lwres_uint16_t		       *rdatalen;	unsigned char		      **sigs;	lwres_uint16_t		       *siglen;	/* if base != NULL, it will be freed when this structure is freed. */	void			       *base;	size_t				baselen;} lwres_grbnresponse_t;#define LWRDATA_VALIDATED	0x00000001/* * resolv.conf data */#define LWRES_CONFMAXNAMESERVERS 3	/* max 3 "nameserver" entries */#define LWRES_CONFMAXLWSERVERS 1	/* max 1 "lwserver" entry */#define LWRES_CONFMAXSEARCH 8		/* max 8 domains in "search" entry */#define LWRES_CONFMAXLINELEN 256	/* max size of a line */#define LWRES_CONFMAXSORTLIST 10typedef struct {	lwres_context_t *lwctx;	lwres_addr_t    nameservers[LWRES_CONFMAXNAMESERVERS];	lwres_uint8_t	nsnext;		/* index for next free slot */	lwres_addr_t	lwservers[LWRES_CONFMAXLWSERVERS];	lwres_uint8_t	lwnext;		/* index for next free slot */	char	       *domainname;	char 	       *search[LWRES_CONFMAXSEARCH];	lwres_uint8_t	searchnxt;	/* index for next free slot */	struct {		lwres_addr_t addr;		/* mask has a non-zero 'family' and 'length' if set */		lwres_addr_t mask;	} sortlist[LWRES_CONFMAXSORTLIST];	lwres_uint8_t	sortlistnxt;	lwres_uint8_t	resdebug;      /* non-zero if 'options debug' set */	lwres_uint8_t	ndots;	       /* set to n in 'options ndots:n' */	lwres_uint8_t	no_tld_query;  /* non-zero if 'options no_tld_query' */} lwres_conf_t;#define LWRES_ADDRTYPE_V4		0x00000001U	/* ipv4 */#define LWRES_ADDRTYPE_V6		0x00000002U	/* ipv6 */#define LWRES_MAX_ALIASES		16		/* max # of aliases */#define LWRES_MAX_ADDRS			64		/* max # of addrs */LWRES_LANG_BEGINDECLS/* * This is in host byte order. */LIBLWRES_EXTERNAL_DATA extern lwres_uint16_t lwres_udp_port;LIBLWRES_EXTERNAL_DATA extern const char *lwres_resolv_conf;lwres_result_tlwres_gabnrequest_render(lwres_context_t *ctx, lwres_gabnrequest_t *req,			 lwres_lwpacket_t *pkt, lwres_buffer_t *b);lwres_result_tlwres_gabnresponse_render(lwres_context_t *ctx, lwres_gabnresponse_t *req,			  lwres_lwpacket_t *pkt, lwres_buffer_t *b);lwres_result_tlwres_gabnrequest_parse(lwres_context_t *ctx, lwres_buffer_t *b,			lwres_lwpacket_t *pkt, lwres_gabnrequest_t **structp);lwres_result_tlwres_gabnresponse_parse(lwres_context_t *ctx, lwres_buffer_t *b,			 lwres_lwpacket_t *pkt,			 lwres_gabnresponse_t **structp);voidlwres_gabnrequest_free(lwres_context_t *ctx, lwres_gabnrequest_t **structp);/* * Frees any dynamically allocated memory for this structure. * * Requires: * *	ctx != NULL, and be a context returned via lwres_contextcreate(). * *	structp != NULL && *structp != NULL. * * Ensures: * *	*structp == NULL.

⌨️ 快捷键说明

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