lwpacket.h

来自「非常好的dns解析软件」· C头文件 代码 · 共 160 行

H
160
字号
/* * Copyright (C) 2004, 2005  Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-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: lwpacket.h,v 1.18.18.2 2005/04/29 00:17:22 marka Exp $ */#ifndef LWRES_LWPACKET_H#define LWRES_LWPACKET_H 1#include <lwres/lang.h>#include <lwres/lwbuffer.h>#include <lwres/result.h>/*% lwres_lwpacket_t */typedef struct lwres_lwpacket lwres_lwpacket_t;/*% lwres_lwpacket structure */struct lwres_lwpacket {	/*! The overall packet length, including the 	 *  entire packet header.	 *  This field is filled in by the	 *  \link lwres_gabn.c lwres_gabn_*()\endlink 	 *  and \link lwres_gnba.c lwres_gnba_*()\endlink calls.	 */	lwres_uint32_t		length;	/*! Specifies the header format.  Currently, 	 *  there is only one format, #LWRES_LWPACKETVERSION_0.	 *  This field is filled in by the	 *  \link lwres_gabn.c lwres_gabn_*()\endlink 	 *  and \link lwres_gnba.c lwres_gnba_*()\endlink calls.         */	lwres_uint16_t		version; 	/*! Specifies library-defined flags for this packet, such as	 *  whether the packet is a request or a reply.  None of 	 *  these are definable by the caller, but library-defined values 	 *  can be set by the caller.  For example, one bit in this field 	 *  indicates if the packet is a request or a response.	 *  This field is filled in by	 *  the application wits the exception of the	 *  #LWRES_LWPACKETFLAG_RESPONSE bit, which is set by the library	 *  in the	 *  \link lwres_gabn.c lwres_gabn_*()\endlink 	 *  and \link lwres_gnba.c lwres_gnba_*()\endlink calls.         */	lwres_uint16_t		pktflags; 	/*! Set by the requestor and is returned in all replies.  	 *  If two packets from the same source have the same serial 	 *  number and are from the same source, they are assumed to 	 *  be duplicates and the latter ones may be dropped.  	 *  (The library does not do this by default on replies, but 	 * does so on requests.)         */	lwres_uint32_t		serial; 	/*! Opcodes between 0x04000000 and 0xffffffff 	 *  are application defined.  Opcodes between 	 *  0x00000000 and 0x03ffffff are 	 * reserved for library use.	 *  This field is filled in by the	 *  \link lwres_gabn.c lwres_gabn_*()\endlink 	 *  and \link lwres_gnba.c lwres_gnba_*()\endlink calls.	 */	lwres_uint32_t		opcode; 	/*! Only valid for results.  	 *  Results between 0x04000000 and 0xffffffff are application 	 *  defined. 	 * Results between 0x00000000 and 0x03ffffff are reserved for 	 * library use. 	 * (This is the same reserved range defined in <isc/resultclass.h>, 	 * so it 	 * would be trivial to map ISC_R_* result codes into packet result 	 * codes when appropriate.)	 *  This field is filled in by the	 *  \link lwres_gabn.c lwres_gabn_*()\endlink 	 *  and \link lwres_gnba.c lwres_gnba_*()\endlink calls.	 */	lwres_uint32_t		result; 	/*! Set to the maximum buffer size that the receiver can 	 *  handle on requests, and the size of the buffer needed to 	 *  satisfy a request 	 *  when the buffer is too large for replies.	 *  This field is supplied by the application.	 */	lwres_uint32_t		recvlength; 	/*! The packet level auth type used. 	 *  Authtypes between 0x1000 and 0xffff are application defined.  	 *  Authtypes 	 *  between 0x0000 and 0x0fff are reserved for library use.  	 *  This is currently 	 *  unused and MUST be set to zero.	 */	lwres_uint16_t		authtype; 	/*! The length of the authentication data.  	 *  See the specific 	 * authtypes for more information on what is contained 	 * in this field.  This is currently unused, and 	 * MUST be set to zero.	 */	lwres_uint16_t		authlength;};#define LWRES_LWPACKET_LENGTH		(4 * 5 + 2 * 4) /*%< Overall length. */#define LWRES_LWPACKETFLAG_RESPONSE	0x0001U	/*%< If set, pkt is a response. */#define LWRES_LWPACKETVERSION_0		0	/*%< Header format. *//*! \file lwpacket.h * * * The remainder of the packet consists of two regions, one described by * "authlen" and one of "length - authlen - sizeof(lwres_lwpacket_t)". * * That is: * * \code *	pkt header *	authlen bytes of auth information *	data bytes * \endcode * * Currently defined opcodes: * *\li	#LWRES_OPCODE_NOOP.  Success is always returned, with the packet contents echoed. * *\li	#LWRES_OPCODE_GETADDRSBYNAME.  Return all known addresses for a given name. *		This may return NIS or /etc/hosts info as well as DNS *		information.  Flags will be provided to indicate ip4/ip6 *		addresses are desired. * *\li	#LWRES_OPCODE_GETNAMEBYADDR.	Return the hostname for the given address.  Once *		again, it will return data from multiple sources. */LWRES_LANG_BEGINDECLS/* XXXMLG document */lwres_result_tlwres_lwpacket_renderheader(lwres_buffer_t *b, lwres_lwpacket_t *pkt);lwres_result_tlwres_lwpacket_parseheader(lwres_buffer_t *b, lwres_lwpacket_t *pkt);LWRES_LANG_ENDDECLS#endif /* LWRES_LWPACKET_H */

⌨️ 快捷键说明

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