]> git.proxmox.com Git - ceph.git/blob - ceph/src/c-ares/ares_data.h
update sources to ceph Nautilus 14.2.1
[ceph.git] / ceph / src / c-ares / ares_data.h
1
2 /* Copyright (C) 2009-2013 by Daniel Stenberg
3 *
4 * Permission to use, copy, modify, and distribute this
5 * software and its documentation for any purpose and without
6 * fee is hereby granted, provided that the above copyright
7 * notice appear in all copies and that both that copyright
8 * notice and this permission notice appear in supporting
9 * documentation, and that the name of M.I.T. not be used in
10 * advertising or publicity pertaining to distribution of the
11 * software without specific, written prior permission.
12 * M.I.T. makes no representations about the suitability of
13 * this software for any purpose. It is provided "as is"
14 * without express or implied warranty.
15 */
16
17 typedef enum {
18 ARES_DATATYPE_UNKNOWN = 1, /* unknown data type - introduced in 1.7.0 */
19 ARES_DATATYPE_SRV_REPLY, /* struct ares_srv_reply - introduced in 1.7.0 */
20 ARES_DATATYPE_TXT_REPLY, /* struct ares_txt_reply - introduced in 1.7.0 */
21 ARES_DATATYPE_TXT_EXT, /* struct ares_txt_ext - introduced in 1.11.0 */
22 ARES_DATATYPE_ADDR_NODE, /* struct ares_addr_node - introduced in 1.7.1 */
23 ARES_DATATYPE_MX_REPLY, /* struct ares_mx_reply - introduced in 1.7.2 */
24 ARES_DATATYPE_NAPTR_REPLY,/* struct ares_naptr_reply - introduced in 1.7.6 */
25 ARES_DATATYPE_SOA_REPLY, /* struct ares_soa_reply - introduced in 1.9.0 */
26 #if 0
27 ARES_DATATYPE_ADDR6TTL, /* struct ares_addrttl */
28 ARES_DATATYPE_ADDRTTL, /* struct ares_addr6ttl */
29 ARES_DATATYPE_HOSTENT, /* struct hostent */
30 ARES_DATATYPE_OPTIONS, /* struct ares_options */
31 #endif
32 ARES_DATATYPE_ADDR_PORT_NODE, /* struct ares_addr_port_node - introduced in 1.11.0 */
33 ARES_DATATYPE_LAST /* not used - introduced in 1.7.0 */
34 } ares_datatype;
35
36 #define ARES_DATATYPE_MARK 0xbead
37
38 /*
39 * ares_data struct definition is internal to c-ares and shall not
40 * be exposed by the public API in order to allow future changes
41 * and extensions to it without breaking ABI. This will be used
42 * internally by c-ares as the container of multiple types of data
43 * dynamically allocated for which a reference will be returned
44 * to the calling application.
45 *
46 * c-ares API functions returning a pointer to c-ares internally
47 * allocated data will actually be returning an interior pointer
48 * into this ares_data struct.
49 *
50 * All this is 'invisible' to the calling application, the only
51 * requirement is that this kind of data must be free'ed by the
52 * calling application using ares_free_data() with the pointer
53 * it has received from a previous c-ares function call.
54 */
55
56 struct ares_data {
57 ares_datatype type; /* Actual data type identifier. */
58 unsigned int mark; /* Private ares_data signature. */
59 union {
60 struct ares_txt_reply txt_reply;
61 struct ares_txt_ext txt_ext;
62 struct ares_srv_reply srv_reply;
63 struct ares_addr_node addr_node;
64 struct ares_addr_port_node addr_port_node;
65 struct ares_mx_reply mx_reply;
66 struct ares_naptr_reply naptr_reply;
67 struct ares_soa_reply soa_reply;
68 } data;
69 };
70
71 void *ares_malloc_data(ares_datatype type);
72