struct HEADER {
  unsigned short id;

#ifndef BIT_CODE
  unsigned char b1;
  unsigned char b2;
#else
  unsigned char rd:1;       /* recursion? */
  unsigned char tc:1;       /* truncated? */
  unsigned char aa:1;       /* authoritative?  - response only */
  unsigned char opcode:4;   /* 0 norm 1 inverse 2 server stats 3->15 reserverd */
  unsigned char query:1;    /* query = 0 -> query else response */

  unsigned char rcode:4;    /* response code:
                             0 (good)
                             1 (format error)
                             2 (server failure)
                             3 (for authoritative responses: no domain exists
                             4 (query type not implemented)
                             5 (request refused)
                             6-15 reserverd for future use
                        */
  unsigned char z:3;        /* reserved for future use - must be 0 */
  unsigned char ra:1;       /* recursion available - response available */
#endif

  unsigned short qdcount; /* Number of questions */
  unsigned short ancount; /* Number of answers */
  unsigned short nscount; /* number of name server resouse records in ae */
  unsigned short arcount; /* Number of resource records in additional section */
};

#define T_A	1
#define T_NS	2
#define T_MD	3
#define T_MF	4
#define T_CNAME	5
#define T_SOA	6
#define T_MB	7
#define T_MG	8
#define T_MR	9
#define T_NULL	10
#define T_WKS	11
#define T_PTR	12
#define T_HINFO	13
#define T_MINFO	14
#define T_MX	15
#define T_TXT	16
#define T_ANY   255

#define MAXIP	5
typedef unsigned char DOMAIN[MAXIP];   /* signed  8 bit int */
