#ifndef __RESOLV_32H
#define __RESOLV_32H

/*
 * Copyright (c) 1983, 1987 The Regents of the University of California.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms are permitted
 * provided that the above copyright notice and this paragraph are
 * duplicated in all such forms and that any documentation,
 * advertising materials, and other materials related to such
 * distribution and use acknowledge that the software was developed
 * by the University of California, Berkeley.  The name of the
 * University may not be used to endorse or promote products derived
 * from this software without specific prior written permission.
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 *
 *      @(#)resolv.h    5.6 (Berkeley) 9/20/88
 */

/*
 * Global defines and variables for resolver stub.
 */
#define MAXNS           3               /* max # name servers we'll track */
#define MAXDNSRCH       3               /* max # default domain levels to try */
#define LOCALDOMAINPARTS 2              /* min levels in name that is "local" */

#define RES_TIMEOUT     4               /* seconds between retries */

#pragma pack(4) /* force on doubleword boundary */
struct state {
        int     retrans;                /* retransmition time interval */
        int     retry;                  /* number of times to retransmit */
        long    options;                /* option flags - see below. */
        int     nscount;                /* number of name servers */
        struct  sockaddr_in nsaddr_list[MAXNS]; /* address of name server */
#define nsaddr  nsaddr_list[0]          /* for backward compatibility */
        unsigned short id;              /* current packet id */
        char    defdname[MAXDNAME];     /* default domain */
        char    *dnsrch[MAXDNSRCH+1];   /* components of domain to search */
};
#pragma pack()   /* reset to default packing */

/*
 * Resolver options
 */
#define RES_INIT        0x0001          /* address initialized */
#define RES_DEBUG       0x0002          /* print debug messages */
#define RES_AAONLY      0x0004          /* authoritative answers only */
#define RES_USEVC       0x0008          /* use virtual circuit */
#define RES_PRIMARY     0x0010          /* query primary server only */
#define RES_IGNTC       0x0020          /* ignore trucation errors */
#define RES_RECURSE     0x0040          /* recursion desired */
#define RES_DEFNAMES    0x0080          /* use default domain name */
#define RES_STAYOPEN    0x0100          /* Keep TCP socket open */
#define RES_DNSRCH      0x0200          /* search up local domain tree */

#define RES_DEFAULT     (RES_RECURSE | RES_DEFNAMES | RES_DNSRCH)

extern struct state _res;

#endif /*__RESOLV_32H */
