1 /*
2  *
3  * Copyright 2017 gRPC authors.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  */
18 
19 #ifndef GRPC_CORE_LIB_IOMGR_NAMESER_H
20 #define GRPC_CORE_LIB_IOMGR_NAMESER_H
21 
22 #include <grpc/support/port_platform.h>
23 
24 #include "src/core/lib/iomgr/port.h"
25 
26 #ifdef GRPC_HAVE_ARPA_NAMESER
27 
28 #include <arpa/nameser.h>
29 
30 #else /* GRPC_HAVE_ARPA_NAMESER */
31 
32 typedef enum __ns_class {
33   ns_c_invalid = 0, /* Cookie. */
34   ns_c_in = 1,      /* Internet. */
35   ns_c_2 = 2,       /* unallocated/unsupported. */
36   ns_c_chaos = 3,   /* MIT Chaos-net. */
37   ns_c_hs = 4,      /* MIT Hesiod. */
38   /* Query class values which do not appear in resource records */
39   ns_c_none = 254, /* for prereq. sections in update requests */
40   ns_c_any = 255,  /* Wildcard match. */
41   ns_c_max = 65536
42 } ns_class;
43 
44 typedef enum __ns_type {
45   ns_t_invalid = 0,   /* Cookie. */
46   ns_t_a = 1,         /* Host address. */
47   ns_t_ns = 2,        /* Authoritative server. */
48   ns_t_md = 3,        /* Mail destination. */
49   ns_t_mf = 4,        /* Mail forwarder. */
50   ns_t_cname = 5,     /* Canonical name. */
51   ns_t_soa = 6,       /* Start of authority zone. */
52   ns_t_mb = 7,        /* Mailbox domain name. */
53   ns_t_mg = 8,        /* Mail group member. */
54   ns_t_mr = 9,        /* Mail rename name. */
55   ns_t_null = 10,     /* Null resource record. */
56   ns_t_wks = 11,      /* Well known service. */
57   ns_t_ptr = 12,      /* Domain name pointer. */
58   ns_t_hinfo = 13,    /* Host information. */
59   ns_t_minfo = 14,    /* Mailbox information. */
60   ns_t_mx = 15,       /* Mail routing information. */
61   ns_t_txt = 16,      /* Text strings. */
62   ns_t_rp = 17,       /* Responsible person. */
63   ns_t_afsdb = 18,    /* AFS cell database. */
64   ns_t_x25 = 19,      /* X_25 calling address. */
65   ns_t_isdn = 20,     /* ISDN calling address. */
66   ns_t_rt = 21,       /* Router. */
67   ns_t_nsap = 22,     /* NSAP address. */
68   ns_t_nsap_ptr = 23, /* Reverse NSAP lookup (deprecated). */
69   ns_t_sig = 24,      /* Security signature. */
70   ns_t_key = 25,      /* Security key. */
71   ns_t_px = 26,       /* X.400 mail mapping. */
72   ns_t_gpos = 27,     /* Geographical position (withdrawn). */
73   ns_t_aaaa = 28,     /* Ip6 Address. */
74   ns_t_loc = 29,      /* Location Information. */
75   ns_t_nxt = 30,      /* Next domain (security). */
76   ns_t_eid = 31,      /* Endpoint identifier. */
77   ns_t_nimloc = 32,   /* Nimrod Locator. */
78   ns_t_srv = 33,      /* Server Selection. */
79   ns_t_atma = 34,     /* ATM Address */
80   ns_t_naptr = 35,    /* Naming Authority PoinTeR */
81   ns_t_kx = 36,       /* Key Exchange */
82   ns_t_cert = 37,     /* Certification record */
83   ns_t_a6 = 38,       /* IPv6 address (deprecates AAAA) */
84   ns_t_dname = 39,    /* Non-terminal DNAME (for IPv6) */
85   ns_t_sink = 40,     /* Kitchen sink (experimentatl) */
86   ns_t_opt = 41,      /* EDNS0 option (meta-RR) */
87   ns_t_apl = 42,      /* Address prefix list (RFC3123) */
88   ns_t_ds = 43,       /* Delegation Signer (RFC4034) */
89   ns_t_sshfp = 44,    /* SSH Key Fingerprint (RFC4255) */
90   ns_t_rrsig = 46,    /* Resource Record Signature (RFC4034) */
91   ns_t_nsec = 47,     /* Next Secure (RFC4034) */
92   ns_t_dnskey = 48,   /* DNS Public Key (RFC4034) */
93   ns_t_tkey = 249,    /* Transaction key */
94   ns_t_tsig = 250,    /* Transaction signature. */
95   ns_t_ixfr = 251,    /* Incremental zone transfer. */
96   ns_t_axfr = 252,    /* Transfer zone of authority. */
97   ns_t_mailb = 253,   /* Transfer mailbox records. */
98   ns_t_maila = 254,   /* Transfer mail agent records. */
99   ns_t_any = 255,     /* Wildcard match. */
100   ns_t_zxfr = 256,    /* BIND-specific, nonstandard. */
101   ns_t_max = 65536
102 } ns_type;
103 
104 #endif /* GRPC_HAVE_ARPA_NAMESER */
105 
106 #endif /* GRPC_CORE_LIB_IOMGR_NAMESER_H */
107