Changeset 1994


Ignore:
Timestamp:
Jun 5, 2005, 9:25:47 AM (20 years ago)
Author:
bird
Message:

FreeBSD 5.3

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/emx/include/resolv.h

    • Property cvs2svn:cvs-rev changed from 1.6 to 1.7
    r1993 r1994  
    11/* resolv.h,v 1.5 2004/09/14 22:27:35 bird Exp */
    22/** @file
    3  * BSD
    4  * @changed EM: For EMX by hv 1994,1996
     3 * FreeBSD 5.3
    54 * @changed bird: For IGCC.
    65 */
    7 /*
    8  * Copyright (c) 1983, 1987, 1989 The Regents of the University of California.
    9  * All rights reserved.
     6/*-
     7 * Copyright (c) 1983, 1987, 1989, 1993
     8 *      The Regents of the University of California. All rights reserved.
    109 *
    1110 * Redistribution and use in source and binary forms, with or without
     
    3635 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    3736 * SUCH DAMAGE.
     37 */
     38
     39/*
     40 * Portions Copyright (c) 1996 by Internet Software Consortium.
    3841 *
    39  *      from: @(#)resolv.h      5.15 (Berkeley) 4/3/91
    40  *      resolv.h,v 1.5 2004/09/14 22:27:35 bird Exp
     42 * Permission to use, copy, modify, and distribute this software for any
     43 * purpose with or without fee is hereby granted, provided that the above
     44 * copyright notice and this permission notice appear in all copies.
     45 *
     46 * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
     47 * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
     48 * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
     49 * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
     50 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
     51 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
     52 * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
     53 * SOFTWARE.
     54 */
     55
     56/*
     57 *      @(#)resolv.h    8.1 (Berkeley) 6/2/93
     58 *      From Id: resolv.h,v 8.12 1998/04/28 19:36:46 halley Exp $
     59 * $FreeBSD: src/include/resolv.h,v 1.25 2004/03/15 17:08:28 des Exp $
    4160 */
    4261
    4362#ifndef _RESOLV_H_
    4463#define _RESOLV_H_
    45 
    46 
    47 #if defined (__cplusplus)
    48 extern "C" {
    49 #endif
    5064
    5165/* toolkit includes a bunch of headers */
    5266#ifndef TCPV40HDRS
    5367#include <sys/param.h>
    54 #include <types.h>
     68#include <types.h> /* bird - IBM header fancies this one */
     69#include <sys/types.h>
    5570#include <sys/cdefs.h>
     71#include <sys/socket.h>
    5672#include <stdio.h>
    57 
     73#ifdef __USE_LIBC_TCPIP
     74#include <netinet/in.h> /* for the struct __res_state */
     75#endif
    5876
    5977/*
     
    6583 */
    6684
    67 #define __RES   19960801
     85#define __RES   19960801
    6886
    6987/*
     
    83101#define MAXNS                   3       /* max # name servers we'll track */
    84102#define MAXDFLSRCH              3       /* # default domain levels to try */
    85 #define LOCALDOMAINPARTS        2       /* min levels in name that is "local" */
    86 #define RES_TIMEOUT             4       /* min. seconds between retries */
    87103#ifdef TCPV40HDRS
    88104#define MAXDNSRCH               3       /* max # domains in search path */
    89105#else
    90106#define MAXDNSRCH               6       /* max # domains in search path */
     107#endif
     108#define LOCALDOMAINPARTS        2       /* min levels in name that is "local" */
     109
     110#ifdef __USE_LIBC_TCPIP
     111#define RES_TIMEOUT             5       /* min. seconds between retries */
     112#else
     113#define RES_TIMEOUT             4       /* min. seconds between retries */
     114#endif
     115#ifndef TCPV40HDRS
    91116#define MAXRESOLVSORT           10      /* number of net to sort on */
    92117#define RES_MAXNDOTS            15      /* should reflect bit field size */
    93118#endif
    94 
    95 
    96 #ifdef TCPV40HDRS
     119#ifdef __USE_LIBC_TCPIP
     120#define RES_MAXRETRANS          30      /* only for resolv.conf/RES_OPTIONS */
     121#define RES_MAXRETRY            5       /* only for resolv.conf/RES_OPTIONS */
     122#endif
     123
     124#ifndef TCPV40HDRS
     125
     126#pragma pack(4)
     127struct __res_state {
     128        int     retrans;                /* retransmition time interval */
     129        int     retry;                  /* number of times to retransmit */
     130        u_long  options;                /* option flags - see below. */
     131        int     nscount;                /* number of name servers */
     132        struct sockaddr_in
     133                nsaddr_list[MAXNS];     /* address of name server */
     134#define nsaddr  nsaddr_list[0]          /* for backward compatibility */
     135        u_short id;                     /* current message id */
     136        char    defdname[256];          /* default domain (deprecated) */
     137        char    *dnsrch[MAXDNSRCH+1];   /* components of domain to search */
     138        u_long  pfcode;                 /* RES_PRF_ flags - see below. */
     139        unsigned ndots:4;               /* threshold for initial abs. query */
     140        unsigned nsort:4;               /* number of elements in sort_list[] */
     141        char    unused[3];
     142        struct {
     143                struct in_addr  addr;
     144                u_int32_t       mask;
     145        } sort_list[MAXRESOLVSORT];
     146        char    pad[72];                /* on an i386 this means 512b total */
     147};
     148#pragma pack()
     149
     150#if 0 /* OS/2 doesn't implement INET6, yet :-) */
     151/* for INET6 */
     152/*
     153 * replacement of __res_state, separated to keep binary compatibility.
     154 */
     155struct __res_state_ext {
     156        struct sockaddr_storage nsaddr_list[MAXNS];
     157        struct {
     158                int     af;             /* address family for addr, mask */
     159                union {
     160                        struct  in_addr ina;
     161                        struct  in6_addr in6a;
     162                } addr, mask;
     163        } sort_list[MAXRESOLVSORT];
     164};
     165#endif /* Not implemented */
     166
     167#else /* TCPV40HDRS */
    97168
    98169#pragma pack(4)
     
    104175        struct  sockaddr_in nsaddr_list[MAXNS]; /* address of name server */
    105176#define nsaddr  nsaddr_list[0]          /* for backward compatibility */
    106         u_short id;                     /* current packet id */
     177        u_short id;                     /* current package id */
    107178        char    defdname[MAXDNAME];     /* default domain */
    108179        char    *dnsrch[MAXDNSRCH+1];   /* components of domain to search */
     
    110181#pragma pack()
    111182
    112 #else
    113 
    114 #pragma pack(4)
    115 struct __res_state {
    116         int     retrans;                /* retransmition time interval */
    117         int     retry;                  /* number of times to retransmit */
    118         u_long  options;                /* option flags - see below. */
    119         int     nscount;                /* number of name servers */
    120         struct sockaddr_in
    121                 nsaddr_list[MAXNS];     /* address of name server */
    122 #define nsaddr  nsaddr_list[0]          /* for backward compatibility */
    123         u_short id;                     /* current message id */
    124         char    defdname[256];          /* default domain (deprecated) */
    125         char    *dnsrch[MAXDNSRCH+1];   /* components of domain to search */
    126         u_long  pfcode;                 /* RES_PRF_ flags - see below. */
    127         unsigned ndots:4;               /* threshold for initial abs. query */
    128         unsigned nsort:4;               /* number of elements in sort_list[] */
    129         char    unused[3];
    130         struct {
    131                 struct in_addr  addr;
    132                 u_int32_t       mask;
    133         } sort_list[MAXRESOLVSORT];
    134         char    pad[72];                /* on an i386 this means 512b total */
    135 };
    136 #pragma pack()
    137 
    138 #endif
    139 
    140 /*
    141  * Resolver options
    142  */
    143 #define RES_INIT        0x0001          /* address initialized */
    144 #define RES_DEBUG       0x0002          /* print debug messages */
    145 #define RES_AAONLY      0x0004          /* authoritative answers only */
    146 #define RES_USEVC       0x0008          /* use virtual circuit */
    147 #define RES_PRIMARY     0x0010          /* query primary server only */
    148 #define RES_IGNTC       0x0020          /* ignore trucation errors */
    149 #define RES_RECURSE     0x0040          /* recursion desired */
    150 #define RES_DEFNAMES    0x0080          /* use default domain name */
    151 #define RES_STAYOPEN    0x0100          /* Keep TCP socket open */
    152 #define RES_DNSRCH      0x0200          /* search up local domain tree */
    153 #ifndef TCPV40HDRS
     183#endif
     184
     185/*
     186 * Resolver options (keep these in synch with res_debug.c, please)
     187 */
     188#define RES_INIT        0x00000001      /* address initialized */
     189#define RES_DEBUG       0x00000002      /* print debug messages */
     190#define RES_AAONLY      0x00000004      /* authoritative answers only (!IMPL)*/
     191#define RES_USEVC       0x00000008      /* use virtual circuit */
     192#define RES_PRIMARY     0x00000010      /* query primary server only (!IMPL) */
     193#define RES_IGNTC       0x00000020      /* ignore truncation errors */
     194#define RES_RECURSE     0x00000040      /* recursion desired */
     195#define RES_DEFNAMES    0x00000080      /* use default domain name */
     196#define RES_STAYOPEN    0x00000100      /* Keep TCP socket open */
     197#define RES_DNSRCH      0x00000200      /* search up local domain tree */
     198#if !defined(TCPV40HDRS)
    154199#define RES_INSECURE1   0x00000400      /* type 1 security disabled */
    155200#define RES_INSECURE2   0x00000800      /* type 2 security disabled */
    156201#define RES_NOALIASES   0x00001000      /* shuts off HOSTALIASES feature */
    157202#define RES_USE_INET6   0x00002000      /* use/map IPv6 in gethostbyname() */
    158 #endif
     203#endif /* !TCPV40HDRS */
     204/** @todo #define       RES_USE_EDNS0   0x40000000*/    /* use EDNS0 */
    159205
    160206#define RES_DEFAULT     (RES_RECURSE | RES_DEFNAMES | RES_DNSRCH)
    161207
    162 
    163 
    164 #ifdef TCPV40HDRS
    165 
    166 extern  struct state _res;
    167 
    168 #else /* !TCPV40HDRS: */
    169 
     208#ifndef TCPV40HDRS
    170209/*
    171210 * Resolver "pfcode" values.  Used by dig.
    172211 */
    173 #define RES_PRF_STATS   0x00000001
    174 /*                      0x00000002      */
     212#define RES_PRF_STATS   0x00000001
     213/** @todo #define RES_PRF_UPDATE        0x00000002*/
    175214#define RES_PRF_CLASS   0x00000004
    176 #define RES_PRF_CMD     0x00000008
    177 #define RES_PRF_QUES    0x00000010
    178 #define RES_PRF_ANS     0x00000020
    179 #define RES_PRF_AUTH    0x00000040
    180 #define RES_PRF_ADD     0x00000080
    181 #define RES_PRF_HEAD1   0x00000100
    182 #define RES_PRF_HEAD2   0x00000200
    183 #define RES_PRF_TTLID   0x00000400
    184 #define RES_PRF_HEADX   0x00000800
    185 #define RES_PRF_QUERY   0x00001000
    186 #define RES_PRF_REPLY   0x00002000
     215#define RES_PRF_CMD     0x00000008
     216#define RES_PRF_QUES    0x00000010
     217#define RES_PRF_ANS     0x00000020
     218#define RES_PRF_AUTH    0x00000040
     219#define RES_PRF_ADD     0x00000080
     220#define RES_PRF_HEAD1   0x00000100
     221#define RES_PRF_HEAD2   0x00000200
     222#define RES_PRF_TTLID   0x00000400
     223#define RES_PRF_HEADX   0x00000800
     224#define RES_PRF_QUERY   0x00001000
     225#define RES_PRF_REPLY   0x00002000
    187226#define RES_PRF_INIT    0x00004000
    188227/*                      0x00008000      */
    189228
    190 /* hooks are still experimental as of 4.9.2 */
    191229typedef enum { res_goahead, res_nextns, res_modified, res_done, res_error }
    192         res_sendhookact;
     230        res_sendhookact;
    193231
    194232typedef res_sendhookact (* TCPCALL res_send_qhook)(struct sockaddr_in * const *ns,
    195                                               const u_char **query,
    196                                               int *querylen,
    197                                               u_char *ans,
    198                                               int anssiz,
    199                                               int *resplen);
     233                                              const u_char **query,
     234                                              int *querylen,
     235                                              u_char *ans,
     236                                              int anssiz,
     237                                              int *resplen);
    200238
    201239typedef res_sendhookact (* TCPCALL res_send_rhook)(const struct sockaddr_in *ns,
    202                                               const u_char *query,
    203                                               int querylen,
    204                                               u_char *ans,
    205                                               int anssiz,
    206                                               int *resplen);
    207 
    208 #pragma pack(4)
     240                                              const u_char *query,
     241                                              int querylen,
     242                                              u_char *ans,
     243                                              int anssiz,
     244                                              int *resplen);
     245
     246#pragma pack(4) /* not necessary */
    209247struct res_sym {
    210         int     number;         /* Identifying number, like T_MX */
    211         char *  name;           /* Its symbolic name, like "MX" */
    212         char *  humanname;      /* Its fun name, like "mail exchanger" */
     248        int     number;         /* Identifying number, like T_MX */
     249        char *  name;           /* Its symbolic name, like "MX" */
     250        char *  humanname;      /* Its fun name, like "mail exchanger" */
    213251};
    214252#pragma pack()
    215253
     254__BEGIN_DECLS
    216255extern struct __res_state   _ress[2];
     256#define _res (_ress[0])
     257/** @todo threaded stuff.... */
     258__END_DECLS
     259
    217260extern const struct res_sym __p_class_syms[];
    218261extern const struct res_sym __p_type_syms[];
    219 #define _res (_ress[0])
    220262
    221263/* Private routines shared between libc/net, named, nslookup and others. */
     
    231273#define loc_ntoa        __loc_ntoa
    232274#define loc_aton        __loc_aton
     275#define fp_resstat      __fp_resstat
     276#define p_query         __p_query
    233277#define dn_skipname     __dn_skipname
    234 #define fp_resstat      __fp_resstat
     278/* duplicate in FreeBSD 5.3 */
    235279#define fp_query        __fp_query
    236280#define fp_nquery       __fp_nquery
     
    241285#define p_time          __p_time
    242286#define p_type          __p_type
    243 #define p_query         __p_query
     287/* duplicate in FreeBSD 5.3 */
    244288#define p_cdnname       __p_cdnname
     289/*#define       p_section       __p_section*/
    245290#define p_cdname        __p_cdname
    246291#define p_fqnname       __p_fqnname
    247292#define p_fqname        __p_fqname
    248 #define p_rr            __p_rr
    249293#define p_option        __p_option
    250294#define p_secstodate    __p_secstodate
     
    263307#define res_queriesmatch __res_queriesmatch
    264308#define res_close       __res_close
    265 
     309/*#define       res_opt         __res_opt
     310#define res_mkupdate    __res_mkupdate
     311#define res_mkupdrec    __res_mkupdrec
     312#define res_freeupdrec  __res_freeupdrec
     313*/
     314
     315/* not in FreeBSD 5.3 header */
     316#define p_rr            __p_rr
     317
     318
     319__BEGIN_DECLS
    266320int             TCPCALL res_hnok(const char *);
    267321int             TCPCALL res_ownok(const char *);
     
    289343const u_char *  TCPCALL p_cdname(const u_char *, const u_char *, int);
    290344const u_char *  TCPCALL p_fqnname(const u_char *cp, const u_char *msg,
    291                                              int, char *, int);
     345                                             int, char *, int);
    292346const u_char *  TCPCALL p_fqname(const u_char *, const u_char *, int);
    293 const u_char *  TCPCALL p_rr(const u_char *, const u_char *, int);
    294347const char *    TCPCALL p_option(u_long option);
    295348char *          TCPCALL p_secstodate(u_long);
    296349int             TCPCALL dn_count_labels(char *);
    297 int             TCPCALL dn_comp(const char *, u_char *, int,
    298                                 u_char **, u_char **);
     350int             TCPCALL dn_comp(const char *, u_char *, int, u_char **, u_char **);
    299351int             TCPCALL dn_expand(const u_char *, const u_char *, const u_char *,
    300                                   char *, int);
     352                                  char *, int);
    301353int             TCPCALL res_init(void);
    302354u_int           TCPCALL res_randomid(void);
    303355int             TCPCALL res_query(const char *, int, int, u_char *, int);
    304356int             TCPCALL res_search(const char *, int, int, u_char *, int);
    305 int             TCPCALL res_querydomain(const char *, const char *, int, int, u_char *, int);
     357int             TCPCALL res_querydomain(const char *, const char *, int, int,
     358                                        u_char *, int);
    306359int             TCPCALL res_mkquery(int, const char *, int, int, const u_char *, int,
    307                                     const u_char *, u_char *, int);
     360                                    const u_char *, u_char *, int);
    308361int             TCPCALL res_send(const u_char *, int, u_char *, int);
    309362int             TCPCALL res_isourserver(const struct sockaddr_in *);
    310363int             TCPCALL res_nameinquery(const char *, int, int,
    311                                         const u_char *, const u_char *);
     364                                        const u_char *, const u_char *);
    312365int             TCPCALL res_queriesmatch(const u_char *, const u_char *,
    313                                         const u_char *, const u_char *);
     366                                        const u_char *, const u_char *);
    314367void            TCPCALL res_close(void);
     368/** @todo int           res_opt(int, u_char *, int, int); */
     369/** @todo const char *  p_section(int, int); */
     370/* XXX These must be exported for BIND4 compatibility. */
     371/** @todo void          __putlong(u_int32_t, u_char *); */
     372/** @todo void          __putshort(u_int16_t, u_char *); */
     373/** @todo u_int32_t     _getlong(const u_char *); */
     374/** @todo u_int16_t     _getshort(const u_char *); */
     375/* XXX The following depend on the ns_updrec typedef in arpa/nameser.h */
     376#ifdef _ARPA_NAMESER_H_
     377/** @todo int           res_update(ns_updrec *); */
     378/** @todo int           res_mkupdate(ns_updrec *, u_char *, int); */
     379/** @todo ns_updrec *   res_mkupdrec(int, const char *, u_int, u_int, u_long); */
     380/** @todo void          res_freeupdrec(ns_updrec *); */
     381#endif
     382
     383
     384/* not in FreeBSD 5.3 */
     385const u_char *  TCPCALL p_rr(const u_char *, const u_char *, int);
    315386int             TCPCALL dn_find(u_char *exp_dn, u_char *msg,
    316                                u_char **dnptrs, u_char **lastdnptr);
    317 #endif /* !TCPV40HDRS */
    318 
    319 
    320 #if defined (__cplusplus)
    321 }
    322 #endif
     387                               u_char **dnptrs, u_char **lastdnptr);
     388
     389__END_DECLS
     390
     391#else /* TCPV40HDRS */
     392
     393extern  struct state _res;
     394
     395#endif /* TCPV40HDRS */
     396
    323397
    324398#endif /* !_RESOLV_H_ */
Note: See TracChangeset for help on using the changeset viewer.