nameser.h

来自「vxworks 6.x 的全部头文件」· C头文件 代码 · 共 301 行

H
301 行
字号
/* nameser.h - Domain Name Server protocol header file *//* Copyright 2001-2005 Wind River Systems, Inc. *//* $NetBSD: nameser.h,v 1.7 1994/10/26 00:56:45 cgd Exp $	*//* * Copyright (c) 1983, 1989 Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software *    must display the following acknowledgement: *    This product includes software developed by the University of *    California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * *	@(#)nameser.h	5.25 (Berkeley) 4/3/91 *//*modification history--------------------01n,14jan05,vvv  osdep.h cleanup01m,23aug04,rp   merged from COMP_WN_IPV6_BASE6_ITER5_TO_UNIFIED_PRE_MERGE01l,28may04,niq  Merging from base6 label POST_ITER5_FRZ16_REBASE (ver                 /main/vdt/base6_itn5_networking-int/1)01k,20nov03,niq  Remove copyright_wrs.h file inclusion01j,05nov03,cdw  Removal of unnecessary _KERNEL guards.01i,04nov03,rlm  Ran batch header path update for header re-org.01h,03nov03,rlm  Removed wrn/coreip/ prefix from #includes for header re-org.01g,06aug03,nee  Accordion Base6 merge from ACCORDION_BASE6_MERGE_BASELINE                 label01f,10jun03,vvv  include netVersion.h01e,01aug02,hsh  add diab support for ppc01d,19sep01,vlk  Added the definitions of type values for resources and queries,                  added the definitions HFIXEDSZ and NS_MAXCDNAME01c,29apr97,jag  Changed T_NULL to T_NULL_RR to fix conflict with loadCoffLib.h01b,02apr97,jag  Change types from u_int*_t to uint*_t.01a,11dec96,jag  created from BSD4.4. Corrected bitfields to meet ANSI spec.                 changed STATUS to DNS_STATUS.*/#ifndef __INCnameserh#define	__INCnameserh#ifdef __cplusplusextern "C" {#endif#include <netVersion.h>/* * Define constants based on rfc883 */#define PACKETSZ    512	/* maximum packet size */#define MAXDNAME    256	/* maximum domain name */#define MAXCDNAME   255	/* maximum compressed domain name */#define HFIXEDSZ    12  /* bytes of fixed data in header */#define NS_MAXCDNAME    255 /* maximum domain name */#define NS_INADDRSZ     4   /* IPv4 T_A */#define NS_IN6ADDRSZ    16  /* IPv6 T_AAAA */#define NS_INT16SZ      2   /* bytes of data in a uint16_t */#define NS_INT32SZ      4   /* bytes of data in a uint32_t */#define MAXLABEL	63  /* maximum length of domain label *//* Number of bytes of fixed size data in query structure */#define QFIXEDSZ	4/* number of bytes of fixed size data in resource record */#define RRFIXEDSZ	10/* * Internet nameserver port number */#define NAMESERVER_PORT	53/* * Currently defined opcodes */#define QUERY		0x0	/* standard query */#define IQUERY		0x1	/* inverse query */#define DNS_STATUS	0x2     /* nameserver status query*//* #define xxx		0x3        0x3 reserved *//* non standard */#define UPDATEA		0x9	/* add resource record */#define UPDATED		0xa	/* delete a specific resource record */#define UPDATEDA	0xb	/* delete all named resource record */#define UPDATEM		0xc	/* modify a specific resource record */#define UPDATEMA	0xd	/* modify all named resource record */#define ZONEINIT	0xe	/* initial zone transfer */#define ZONEREF		0xf	/* incremental zone referesh *//* * Currently defined response codes */#define NOERROR		0	/* no error */#define FORMERR		1	/* format error */#define SERVFAIL	2	/* server failure */#define NXDOMAIN	3	/* non existent domain */#define NOTIMP		4	/* not implemented */#define REFUSED		5	/* query refused *//* non standard */#define NOCHANGE	0xf	/* update failed to change db *//* * Type values for resources and queries */#define T_A		1	/* host address */#define T_NS		2	/* authoritative server */#define T_MD		3	/* mail destination */#define T_MF		4	/* mail forwarder */#define T_CNAME		5	/* connonical name */#define T_SOA		6	/* start of authority zone */#define T_MB		7	/* mailbox domain name */#define T_MG		8	/* mail group member */#define T_MR		9	/* mail rename name */#define T_NULL_RR	10	/* null resource record */#define T_WKS		11	/* well known service */#define T_PTR		12	/* domain name pointer */#define T_HINFO		13	/* host information */#define T_MINFO		14	/* mailbox information */#define T_MX		15	/* mail routing information */#define T_TXT		16	/* text strings */#define T_RP		17	/* responsible person */#define T_AFSDB		18	/* AFS cell database */#define T_X25           19      /* X25 address */#define T_ISDN          20      /* ISDN address */   #define T_RT            21      /* router */#define T_NSAP		22	/* NSAP address */#define T_NSAP_PTR	23	/* reverse lookup for NSAP */#define T_SIG           24      /* Security signature */#define T_KEY           25      /* Security key */#define T_PX            26      /* X 400 mail mapping information */#define T_GPOS          27      /* geographical position (withdrawn) */#define T_AAAA          28      /* IPv6 host address */#define T_LOC           29      /* location information */#define T_NXT           30      /* next valid name (next domain) */#define T_EID           31      /* endpoint identifier (unimplemented) */#define T_NIMLOC        32      /* NIMROD locator */#define T_SRV           33      /* server selection */#define T_ATMA          34      /* ATM address */#define T_NAPTR         35      /* URN Naming authority pointer *//* non standard */#define T_UINFO		100	/* user (finger) information */#define T_UID		101	/* user ID */#define T_GID		102	/* group ID */#define T_UNSPEC	103	/* Unspecified format (binary data) */#define T_SA		200	/* shuffle address *//* Query type values which do not appear in resource records */#define T_IXFR          251     /* incremental zone transfer */#define T_AXFR		252	/* transfer zone of authority */#define T_MAILB		253	/* transfer mailbox records */#define T_MAILA		254	/* transfer mail agent records */#define T_ANY		255	/* wildcard match *//* * Values for class field */#define C_IN		1	/* the arpa internet */#define C_CHAOS		3	/* for chaos net at MIT */#define C_HS		4	/* for Hesiod name server at MIT */    /* Query class values which do not appear in resource records */#define C_ANY		255	/* wildcard match *//* * Status return codes for T_UNSPEC conversion routines */#define CONV_SUCCESS     0#define CONV_OVERFLOW   -1#define CONV_BADFMT     -2#define CONV_BADCKSUM   -3#define CONV_BADBUFLEN  -4/* * Structure for query header, the order of the fields is machine and * compiler dependent, in our case, the bits within a byte are assignd  * least significant first, while the order of transmition is most  * significant first.  This requires a somewhat confusing rearrangement. */ typedef struct         {        u_int   id:16;  /* fields (Bytes 1-2) query identification number */#if _BYTE_ORDER == _BIG_ENDIAN        /* fields in third byte */        u_int   qr:1,  /* response flag */        opcode:4,      /* purpose of message */        aa:1,          /* authoritive answer */        tc:1,          /* truncated message */        rd:1,          /* recursion desired */        /* fields in fourth byte */        ra:1,           /* recursion available */        pr:1,           /* primary server required (non standard) */        /*unused:0,*/   /* unused bits */        ad:1,           /* authentic data from named */        cd:1,           /* checking disabled by resolver */        rcode:4;        /* response code */#endif#if _BYTE_ORDER == _LITTLE_ENDIAN        /* fields in third byte */        u_int   rd:1,   /* recursion desired */        tc:1,           /* truncated message */        aa:1,           /* authoritive answer */        opcode:4,       /* purpose of message */        qr:1,           /* response flag */        /* fields in fourth byte */        rcode:4,        /* response code */        cd:1,           /* authentic data from named */        ad:1,           /* checking disabled by resolver */        /*unused:0,*/   /* unused bits */        pr:1,           /* primary server required (non standard) */        ra:1;           /* recursion available */#endif        /* remaining bytes */        u_short qdcount;    /* number of question entries */        u_short ancount;    /* number of answer entries */        u_short nscount;    /* number of authority entries */        u_short arcount;    /* number of resource entries */        } HEADER;/* * Defines for handling compressed domain names */#define INDIR_MASK	0xc0/* * Structure for passing resource records around. */    struct rrec        {        int16_t     r_zone;    /* zone number */        int16_t     r_class;   /* class number */        int16_t     r_type;    /* type number */        uint32_t    r_ttl;     /* time to live */        int     r_size;        /* size of data area */        char        *r_data;   /* pointer to data */        };IMPORT  uint16_t    _getshort(register const u_char *);IMPORT  uint32_t    _getlong(register const u_char *);/* * Inline versions of get/put short/long. * Pointer is advanced; we assume that both arguments * are lvalues and will already be in registers. * cp MUST be u_char *. */#define GETSHORT(s, cp) { \	register u_char *t_cp = (u_char *)(cp); \	(s) = ((uint16_t)t_cp[0] << 8) \	    | ((uint16_t)t_cp[1]) ;\	(cp) += sizeof(uint16_t); \}#define GETLONG(l, cp) { \	register u_char *t_cp = (u_char *)(cp); \	(l) = ((uint32_t)t_cp[0] << 24) \	    | ((uint32_t)t_cp[1] << 16) \	    | ((uint32_t)t_cp[2] << 8) \	    | ((uint32_t)t_cp[3]) ;\	(cp) += sizeof(uint32_t); \}#define PUTSHORT(s, cp) { \	register uint16_t t_s = (uint16_t)(s); \	register u_char *t_cp = (u_char *)(cp); \	*t_cp++ = t_s >> 8; \	*t_cp   = t_s; \	(cp) += sizeof(uint16_t); \}/* * Warning: PUTLONG --no-longer-- destroys its first argument. * if you were depending on this "feature", you will lose. */#define PUTLONG(l, cp) { \	register uint32_t t_l = (uint32_t)(l); \	register u_char *t_cp = (u_char *)(cp); \	*t_cp++ = t_l >> 24; \	*t_cp++ = t_l >> 16; \	*t_cp++ = t_l >> 8; \	*t_cp   = t_l; \	(cp) += sizeof(uint32_t); \}#ifdef __cplusplus}#endif#endif /* __INCnameserh */

⌨️ 快捷键说明

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