Files
Arquivotheca.SunOS-4.1.4/usr.lib/libns/stdns.h
seta75D ff309bfe1c Init
2021-10-11 18:37:13 -03:00

116 lines
3.6 KiB
C

/* @(#)stdns.h 1.1 94/10/31 SMI */
/* Copyright (c) 1984 AT&T */
/* All Rights Reserved */
/* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T */
/* The copyright notice above does not evidence any */
/* actual or intended publication of such source code. */
#ident "@(#)libns:stdns.h 1.4.1.1"
/*
*
* stdns.h contains formats, etc for domain name server queries,
* replies and resource records. The terminology is reminiscent
* of some of ARPA's name server work (e.g., RFC 883), however,
* since this name server's functions are not at all the same
* as ARPA's, there is no resemblance beyond terminology.
*
*/
#ifndef RFS_SUCCESS
#define RFS_FAILURE 0
#define RFS_SUCCESS 1
#endif
#define SEPARATOR '.'
#define WILDCARD '*' /* wildcard char for string compares */
/*
* each record in the name server has one of the types defined below
*/
#define MASKNS ~0x7F /* mask out ns order bits */
#define NSTYPE 0x80 /* bit set for all ns records */
#define PNS (NSTYPE|0x01) /* primary name server */
#define SNS (NSTYPE|0x02) /* secondary name server */
#define SOA PNS
#define NS SNS
/* all types, except NS types, must have the lowest 8 bits clear */
#define A 0x100 /* host address */
#define NULLREC 0x200 /* empty record */
#define RN 0x300 /* shared resource record */
#define DOM 0x400 /* "internal" type for domain */
#define ANYTYPE 0xFFFF /* request for any record type */
/* RCODE values, response codes */
extern int ns_errno;
#define R_NOERR 0 /* no error */
#define R_FORMAT 1 /* format error */
#define R_NSFAIL 2 /* name server failure */
#define R_NONAME 3 /* name does not exist */
#define R_IMP 4 /* request type not implemented (or bad type) */
#define R_PERM 5 /* no permission for this operation */
#define R_DUP 6 /* name not unique (for advertise) */
#define R_SYS 7 /* a system call failed in name server */
#define R_EPASS 8 /* error in accessing passwd file on primary */
#define R_INVPW 9 /* invalid password */
#define R_NOPW 10 /* no password entry in primary passwd file */
#define R_SETUP 11 /* error in ns_setup() */
#define R_SEND 12 /* error in ns_send() */
#define R_RCV 13 /* error in ns_rcv() */
#define R_INREC 14 /* in recovery, try again */
#define R_FAIL 15 /* unknown failure */
/* miscellaneous defines */
/* values for h_qr field */
#define QUERY 1 /* this request is a query */
#define RESPONSE 0 /* this request is a response */
/* values for h_aa field (or-able with h_qr) */
#define AUTHORITY 2
#define NOT_AUTHORITY 0
#define DBLKSIZ 512 /* default block size (start small) */
#define MAX_RETRY 5 /* maximum # of name servers to try on query */
/*
* The place structure keeps track of progress reading or
* writing a block in canonical format.
*/
typedef struct place {
char *p_start; /* beginning of block */
char *p_ptr; /* current place in block */
char *p_end; /* end of block */
int p_extra; /* location in bits from p_ptr */
} place_t, *place_p;
#define ALIGN 4 /* canonical form alignment in bytes */
#define L_SIZE 4 /* size of a canonical long */
#if ALIGN == 4
#define align(p) (((unsigned int)(p)+3) & ~3)
#else
#define align(x) (((unsigned int)(x) % ALIGN)?\
(unsigned int)(x) + (ALIGN - ((unsigned int)(x) % ALIGN)): (x))
#endif
#define c_sizeof(s) align(L_SIZE + ((s)?strlen(s)+1:1))
/* miscellaneous defines */
/* WARNING: overbyte references the parameter p twice. Don't use expressions
with side effects (e.g. ++s) */
#define overbyte(p,b) (p->p_ptr+b > p->p_end)
/* functions in ind_data.c */
char *compress();
char *expand();
char *reqtob();
struct request *btoreq();
place_p setplace();
char *getstr();
long getlong();
int putlong();