~ubuntu-branches/ubuntu/vivid/emscripten/vivid

« back to all changes in this revision

Viewing changes to system/include/net/resolv.h

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2013-05-02 13:11:51 UTC
  • Revision ID: package-import@ubuntu.com-20130502131151-q8dvteqr1ef2x7xz
Tags: upstream-1.4.1~20130504~adb56cb
ImportĀ upstreamĀ versionĀ 1.4.1~20130504~adb56cb

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright (c) 1983, 1987, 1989
 
3
 *    The Regents of the University of California.  All rights reserved.
 
4
 *
 
5
 * Redistribution and use in source and binary forms, with or without
 
6
 * modification, are permitted provided that the following conditions
 
7
 * are met:
 
8
 * 1. Redistributions of source code must retain the above copyright
 
9
 *    notice, this list of conditions and the following disclaimer.
 
10
 * 2. Redistributions in binary form must reproduce the above copyright
 
11
 *    notice, this list of conditions and the following disclaimer in the
 
12
 *    documentation and/or other materials provided with the distribution.
 
13
 * 4. Neither the name of the University nor the names of its contributors
 
14
 *    may be used to endorse or promote products derived from this software
 
15
 *    without specific prior written permission.
 
16
 *
 
17
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 
18
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 
19
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 
20
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 
21
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 
22
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 
23
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 
24
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 
25
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 
26
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 
27
 * SUCH DAMAGE.
 
28
 */
 
29
 
 
30
/*
 
31
 * Portions Copyright (c) 1996-1999 by Internet Software Consortium.
 
32
 *
 
33
 * Permission to use, copy, modify, and distribute this software for any
 
34
 * purpose with or without fee is hereby granted, provided that the above
 
35
 * copyright notice and this permission notice appear in all copies.
 
36
 *
 
37
 * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
 
38
 * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
 
39
 * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
 
40
 * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
 
41
 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
 
42
 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
 
43
 * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 
44
 * SOFTWARE.
 
45
 */
 
46
 
 
47
/*
 
48
 *      @(#)resolv.h    8.1 (Berkeley) 6/2/93
 
49
 *      $BINDId: resolv.h,v 8.31 2000/03/30 20:16:50 vixie Exp $
 
50
 */
 
51
 
 
52
#ifndef _RESOLV_H_
 
53
 
 
54
/* These headers are needed for types used in the `struct res_state'
 
55
   declaration.  */
 
56
#include <sys/types.h>
 
57
#include <netinet/in.h>
 
58
 
 
59
#ifndef __need_res_state
 
60
# define _RESOLV_H_
 
61
 
 
62
# include <sys/param.h>
 
63
# include <sys/cdefs.h>
 
64
# include <stdio.h>
 
65
# include <arpa/nameser.h>
 
66
#endif
 
67
 
 
68
#ifndef __res_state_defined
 
69
# define __res_state_defined
 
70
 
 
71
typedef enum { res_goahead, res_nextns, res_modified, res_done, res_error }
 
72
        res_sendhookact;
 
73
 
 
74
typedef res_sendhookact (*res_send_qhook) (struct sockaddr_in * const *__ns,
 
75
                                           const u_char **__query,
 
76
                                           int *__querylen,
 
77
                                           u_char *__ans,
 
78
                                           int __anssiz,
 
79
                                           int *__resplen);
 
80
 
 
81
typedef res_sendhookact (*res_send_rhook) (const struct sockaddr_in *__ns,
 
82
                                           const u_char *__query,
 
83
                                           int __querylen,
 
84
                                           u_char *__ans,
 
85
                                           int __anssiz,
 
86
                                           int *__resplen);
 
87
 
 
88
/*
 
89
 * Global defines and variables for resolver stub.
 
90
 */
 
91
# define MAXNS                  3       /* max # name servers we'll track */
 
92
# define MAXDFLSRCH             3       /* # default domain levels to try */
 
93
# define MAXDNSRCH              6       /* max # domains in search path */
 
94
# define LOCALDOMAINPARTS       2       /* min levels in name that is "local" */
 
95
 
 
96
# define RES_TIMEOUT            5       /* min. seconds between retries */
 
97
# define MAXRESOLVSORT          10      /* number of net to sort on */
 
98
# define RES_MAXNDOTS           15      /* should reflect bit field size */
 
99
# define RES_MAXRETRANS         30      /* only for resolv.conf/RES_OPTIONS */
 
100
# define RES_MAXRETRY           5       /* only for resolv.conf/RES_OPTIONS */
 
101
# define RES_DFLRETRY           2       /* Default #/tries. */
 
102
# define RES_MAXTIME            65535   /* Infinity, in milliseconds. */
 
103
 
 
104
struct __res_state {
 
105
        int     retrans;                /* retransmition time interval */
 
106
        int     retry;                  /* number of times to retransmit */
 
107
        u_long  options;                /* option flags - see below. */
 
108
        int     nscount;                /* number of name servers */
 
109
        struct sockaddr_in
 
110
                nsaddr_list[MAXNS];     /* address of name server */
 
111
# define nsaddr nsaddr_list[0]          /* for backward compatibility */
 
112
        u_short id;                     /* current message id */
 
113
        /* 2 byte hole here.  */
 
114
        char    *dnsrch[MAXDNSRCH+1];   /* components of domain to search */
 
115
        char    defdname[256];          /* default domain (deprecated) */
 
116
        u_long  pfcode;                 /* RES_PRF_ flags - see below. */
 
117
        unsigned ndots:4;               /* threshold for initial abs. query */
 
118
        unsigned nsort:4;               /* number of elements in sort_list[] */
 
119
        unsigned ipv6_unavail:1;        /* connecting to IPv6 server failed */
 
120
        unsigned unused:23;
 
121
        struct {
 
122
                struct in_addr  addr;
 
123
                u_int32_t       mask;
 
124
        } sort_list[MAXRESOLVSORT];
 
125
        /* 4 byte hole here on 64-bit architectures.  */
 
126
        res_send_qhook qhook;           /* query hook */
 
127
        res_send_rhook rhook;           /* response hook */
 
128
        int     res_h_errno;            /* last one set for this context */
 
129
        int     _vcsock;                /* PRIVATE: for res_send VC i/o */
 
130
        u_int   _flags;                 /* PRIVATE: see below */
 
131
        /* 4 byte hole here on 64-bit architectures.  */
 
132
        union {
 
133
                char    pad[52];        /* On an i386 this means 512b total. */
 
134
                struct {
 
135
                        u_int16_t               nscount;
 
136
                        u_int16_t               nsmap[MAXNS];
 
137
                        int                     nssocks[MAXNS];
 
138
                        u_int16_t               nscount6;
 
139
                        u_int16_t               nsinit;
 
140
                        struct sockaddr_in6     *nsaddrs[MAXNS];
 
141
#ifdef _LIBC
 
142
                        unsigned long long int  initstamp
 
143
                          __attribute__((packed));
 
144
#else
 
145
                        unsigned int            _initstamp[2];
 
146
#endif
 
147
                } _ext;
 
148
        } _u;
 
149
};
 
150
 
 
151
typedef struct __res_state *res_state;
 
152
# undef __need_res_state
 
153
#endif
 
154
 
 
155
#ifdef _RESOLV_H_
 
156
/*
 
157
 * Revision information.  This is the release date in YYYYMMDD format.
 
158
 * It can change every day so the right thing to do with it is use it
 
159
 * in preprocessor commands such as "#if (__RES > 19931104)".  Do not
 
160
 * compare for equality; rather, use it to determine whether your resolver
 
161
 * is new enough to contain a certain feature.
 
162
 */
 
163
 
 
164
#define __RES   19991006
 
165
 
 
166
/*
 
167
 * Resolver configuration file.
 
168
 * Normally not present, but may contain the address of the
 
169
 * inital name server(s) to query and the domain search list.
 
170
 */
 
171
 
 
172
#ifndef _PATH_RESCONF
 
173
#define _PATH_RESCONF        "/etc/resolv.conf"
 
174
#endif
 
175
 
 
176
struct res_sym {
 
177
        int     number;         /* Identifying number, like T_MX */
 
178
        char *  name;           /* Its symbolic name, like "MX" */
 
179
        char *  humanname;      /* Its fun name, like "mail exchanger" */
 
180
};
 
181
 
 
182
/*
 
183
 * Resolver flags (used to be discrete per-module statics ints).
 
184
 */
 
185
#define RES_F_VC        0x00000001      /* socket is TCP */
 
186
#define RES_F_CONN      0x00000002      /* socket is connected */
 
187
#define RES_F_EDNS0ERR  0x00000004      /* EDNS0 caused errors */
 
188
 
 
189
/* res_findzonecut() options */
 
190
#define RES_EXHAUSTIVE  0x00000001      /* always do all queries */
 
191
 
 
192
/*
 
193
 * Resolver options (keep these in synch with res_debug.c, please)
 
194
 */
 
195
#define RES_INIT        0x00000001      /* address initialized */
 
196
#define RES_DEBUG       0x00000002      /* print debug messages */
 
197
#define RES_AAONLY      0x00000004      /* authoritative answers only (!IMPL)*/
 
198
#define RES_USEVC       0x00000008      /* use virtual circuit */
 
199
#define RES_PRIMARY     0x00000010      /* query primary server only (!IMPL) */
 
200
#define RES_IGNTC       0x00000020      /* ignore trucation errors */
 
201
#define RES_RECURSE     0x00000040      /* recursion desired */
 
202
#define RES_DEFNAMES    0x00000080      /* use default domain name */
 
203
#define RES_STAYOPEN    0x00000100      /* Keep TCP socket open */
 
204
#define RES_DNSRCH      0x00000200      /* search up local domain tree */
 
205
#define RES_INSECURE1   0x00000400      /* type 1 security disabled */
 
206
#define RES_INSECURE2   0x00000800      /* type 2 security disabled */
 
207
#define RES_NOALIASES   0x00001000      /* shuts off HOSTALIASES feature */
 
208
#define RES_USE_INET6   0x00002000      /* use/map IPv6 in gethostbyname() */
 
209
#define RES_ROTATE      0x00004000      /* rotate ns list after each query */
 
210
#define RES_NOCHECKNAME 0x00008000      /* do not check names for sanity. */
 
211
#define RES_KEEPTSIG    0x00010000      /* do not strip TSIG records */
 
212
#define RES_BLAST       0x00020000      /* blast all recursive servers */
 
213
#define RES_USEBSTRING  0x00040000      /* IPv6 reverse lookup with byte
 
214
                                           strings */
 
215
#define RES_NOIP6DOTINT 0x00080000      /* Do not use .ip6.int in IPv6
 
216
                                           reverse lookup */
 
217
#define RES_USE_EDNS0   0x00100000      /* Use EDNS0.  */
 
218
#define RES_SNGLKUP     0x00200000      /* one outstanding request at a time */
 
219
#define RES_SNGLKUPREOP 0x00400000      /* -"-, but open new socket for each
 
220
                                           request */
 
221
#define RES_USE_DNSSEC  0x00800000      /* use DNSSEC using OK bit in OPT */
 
222
#define RES_NOTLDQUERY  0x01000000      /* Do not look up unqualified name
 
223
                                           as a TLD.  */
 
224
 
 
225
#define RES_DEFAULT     (RES_RECURSE|RES_DEFNAMES|RES_DNSRCH|RES_NOIP6DOTINT)
 
226
 
 
227
/*
 
228
 * Resolver "pfcode" values.  Used by dig.
 
229
 */
 
230
#define RES_PRF_STATS   0x00000001
 
231
#define RES_PRF_UPDATE  0x00000002
 
232
#define RES_PRF_CLASS   0x00000004
 
233
#define RES_PRF_CMD     0x00000008
 
234
#define RES_PRF_QUES    0x00000010
 
235
#define RES_PRF_ANS     0x00000020
 
236
#define RES_PRF_AUTH    0x00000040
 
237
#define RES_PRF_ADD     0x00000080
 
238
#define RES_PRF_HEAD1   0x00000100
 
239
#define RES_PRF_HEAD2   0x00000200
 
240
#define RES_PRF_TTLID   0x00000400
 
241
#define RES_PRF_HEADX   0x00000800
 
242
#define RES_PRF_QUERY   0x00001000
 
243
#define RES_PRF_REPLY   0x00002000
 
244
#define RES_PRF_INIT    0x00004000
 
245
/*                      0x00008000      */
 
246
 
 
247
/* Things involving an internal (static) resolver context. */
 
248
__BEGIN_DECLS
 
249
extern struct __res_state *__res_state(void) __attribute__ ((__const__));
 
250
__END_DECLS
 
251
#define _res (*__res_state())
 
252
 
 
253
#ifndef __BIND_NOSTATIC
 
254
#define fp_nquery               __fp_nquery
 
255
#define fp_query                __fp_query
 
256
#define hostalias               __hostalias
 
257
#define p_query                 __p_query
 
258
#define res_close               __res_close
 
259
#define res_init                __res_init
 
260
#define res_isourserver         __res_isourserver
 
261
#define res_mkquery             __res_mkquery
 
262
#define res_query               __res_query
 
263
#define res_querydomain         __res_querydomain
 
264
#define res_search              __res_search
 
265
#define res_send                __res_send
 
266
 
 
267
__BEGIN_DECLS
 
268
void            fp_nquery (const u_char *, int, FILE *) __THROW;
 
269
void            fp_query (const u_char *, FILE *) __THROW;
 
270
const char *    hostalias (const char *) __THROW;
 
271
void            p_query (const u_char *) __THROW;
 
272
void            res_close (void) __THROW;
 
273
int             res_init (void) __THROW;
 
274
int             res_isourserver (const struct sockaddr_in *) __THROW;
 
275
int             res_mkquery (int, const char *, int, int, const u_char *,
 
276
                             int, const u_char *, u_char *, int) __THROW;
 
277
int             res_query (const char *, int, int, u_char *, int) __THROW;
 
278
int             res_querydomain (const char *, const char *, int, int,
 
279
                                 u_char *, int) __THROW;
 
280
int             res_search (const char *, int, int, u_char *, int) __THROW;
 
281
int             res_send (const u_char *, int, u_char *, int) __THROW;
 
282
__END_DECLS
 
283
#endif
 
284
 
 
285
#define b64_ntop                __b64_ntop
 
286
#define b64_pton                __b64_pton
 
287
#define dn_comp                 __dn_comp
 
288
#define dn_count_labels         __dn_count_labels
 
289
#define dn_expand               __dn_expand
 
290
#define dn_skipname             __dn_skipname
 
291
#define fp_resstat              __fp_resstat
 
292
#define loc_aton                __loc_aton
 
293
#define loc_ntoa                __loc_ntoa
 
294
#define p_cdname                __p_cdname
 
295
#define p_cdnname               __p_cdnname
 
296
#define p_class                 __p_class
 
297
#define p_fqname                __p_fqname
 
298
#define p_fqnname               __p_fqnname
 
299
#define p_option                __p_option
 
300
#define p_secstodate            __p_secstodate
 
301
#define p_section               __p_section
 
302
#define p_time                  __p_time
 
303
#define p_type                  __p_type
 
304
#define p_rcode                 __p_rcode
 
305
#define putlong                 __putlong
 
306
#define putshort                __putshort
 
307
#define res_dnok                __res_dnok
 
308
#define res_hnok                __res_hnok
 
309
#define res_hostalias           __res_hostalias
 
310
#define res_mailok              __res_mailok
 
311
#define res_nameinquery         __res_nameinquery
 
312
#define res_nclose              __res_nclose
 
313
#define res_ninit               __res_ninit
 
314
#define res_nmkquery            __res_nmkquery
 
315
#define res_npquery             __res_npquery
 
316
#define res_nquery              __res_nquery
 
317
#define res_nquerydomain        __res_nquerydomain
 
318
#define res_nsearch             __res_nsearch
 
319
#define res_nsend               __res_nsend
 
320
#define res_nisourserver        __res_nisourserver
 
321
#define res_ownok               __res_ownok
 
322
#define res_queriesmatch        __res_queriesmatch
 
323
#define res_randomid            __res_randomid
 
324
#define sym_ntop                __sym_ntop
 
325
#define sym_ntos                __sym_ntos
 
326
#define sym_ston                __sym_ston
 
327
__BEGIN_DECLS
 
328
int             res_hnok (const char *) __THROW;
 
329
int             res_ownok (const char *) __THROW;
 
330
int             res_mailok (const char *) __THROW;
 
331
int             res_dnok (const char *) __THROW;
 
332
int             sym_ston (const struct res_sym *, const char *, int *) __THROW;
 
333
const char *    sym_ntos (const struct res_sym *, int, int *) __THROW;
 
334
const char *    sym_ntop (const struct res_sym *, int, int *) __THROW;
 
335
int             b64_ntop (u_char const *, size_t, char *, size_t) __THROW;
 
336
int             b64_pton (char const *, u_char *, size_t) __THROW;
 
337
int             loc_aton (const char *__ascii, u_char *__binary) __THROW;
 
338
const char *    loc_ntoa (const u_char *__binary, char *__ascii) __THROW;
 
339
int             dn_skipname (const u_char *, const u_char *) __THROW;
 
340
void            putlong (u_int32_t, u_char *) __THROW;
 
341
void            putshort (u_int16_t, u_char *) __THROW;
 
342
const char *    p_class (int) __THROW;
 
343
const char *    p_time (u_int32_t) __THROW;
 
344
const char *    p_type (int) __THROW;
 
345
const char *    p_rcode (int) __THROW;
 
346
const u_char *  p_cdnname (const u_char *, const u_char *, int, FILE *)
 
347
     __THROW;
 
348
const u_char *  p_cdname (const u_char *, const u_char *, FILE *) __THROW;
 
349
const u_char *  p_fqnname (const u_char *__cp, const u_char *__msg,
 
350
                           int, char *, int) __THROW;
 
351
const u_char *  p_fqname (const u_char *, const u_char *, FILE *) __THROW;
 
352
const char *    p_option (u_long __option) __THROW;
 
353
char *          p_secstodate (u_long) __THROW;
 
354
int             dn_count_labels (const char *) __THROW;
 
355
int             dn_comp (const char *, u_char *, int, u_char **, u_char **)
 
356
     __THROW;
 
357
int             dn_expand (const u_char *, const u_char *, const u_char *,
 
358
                           char *, int) __THROW;
 
359
u_int           res_randomid (void) __THROW;
 
360
int             res_nameinquery (const char *, int, int,
 
361
                                 const u_char *, const u_char *) __THROW;
 
362
int             res_queriesmatch (const u_char *, const u_char *,
 
363
                                  const u_char *, const u_char *) __THROW;
 
364
const char *    p_section (int __section, int __opcode) __THROW;
 
365
/* Things involving a resolver context. */
 
366
int             res_ninit (res_state) __THROW;
 
367
int             res_nisourserver (const res_state,
 
368
                                  const struct sockaddr_in *) __THROW;
 
369
void            fp_resstat (const res_state, FILE *) __THROW;
 
370
void            res_npquery (const res_state, const u_char *, int, FILE *)
 
371
     __THROW;
 
372
const char *    res_hostalias (const res_state, const char *, char *, size_t)
 
373
     __THROW;
 
374
int             res_nquery (res_state, const char *, int, int, u_char *, int)
 
375
     __THROW;
 
376
int             res_nsearch (res_state, const char *, int, int, u_char *, int)
 
377
     __THROW;
 
378
int             res_nquerydomain (res_state, const char *, const char *, int,
 
379
                                  int, u_char *, int) __THROW;
 
380
int             res_nmkquery (res_state, int, const char *, int, int,
 
381
                              const u_char *, int, const u_char *, u_char *,
 
382
                              int) __THROW;
 
383
int             res_nsend (res_state, const u_char *, int, u_char *, int)
 
384
     __THROW;
 
385
void            res_nclose (res_state) __THROW;
 
386
__END_DECLS
 
387
#endif
 
388
 
 
389
#endif /* !_RESOLV_H_ */