Merge branch 'vendor/FILE'
[dragonfly.git] / contrib / bind / lib / isc / include / isc / types.h
1 /*
2  * Copyright (C) 2004-2009  Internet Systems Consortium, Inc. ("ISC")
3  * Copyright (C) 1999-2003  Internet Software Consortium.
4  *
5  * Permission to use, copy, modify, and/or distribute this software for any
6  * purpose with or without fee is hereby granted, provided that the above
7  * copyright notice and this permission notice appear in all copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
10  * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11  * AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
12  * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13  * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
14  * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15  * PERFORMANCE OF THIS SOFTWARE.
16  */
17
18 /* $Id: types.h,v 1.43.128.5 2009/01/29 23:47:14 tbox Exp $ */
19
20 #ifndef ISC_TYPES_H
21 #define ISC_TYPES_H 1
22
23 /*! \file isc/types.h
24  * \brief
25  * OS-specific types, from the OS-specific include directories.
26  */
27 #include <isc/int.h>
28 #include <isc/offset.h>
29
30 /*
31  * XXXDCL should isc_boolean_t be moved here, requiring an explicit include
32  * of <isc/boolean.h> when ISC_TRUE/ISC_FALSE/ISC_TF() are desired?
33  */
34 #include <isc/boolean.h>
35 /*
36  * XXXDCL This is just for ISC_LIST and ISC_LINK, but gets all of the other
37  * list macros too.
38  */
39 #include <isc/list.h>
40
41 /* Core Types.  Alphabetized by defined type. */
42
43 typedef struct isc_bitstring            isc_bitstring_t;        /*%< Bitstring */
44 typedef struct isc_buffer               isc_buffer_t;           /*%< Buffer */
45 typedef ISC_LIST(isc_buffer_t)          isc_bufferlist_t;       /*%< Buffer List */
46 typedef struct isc_constregion          isc_constregion_t;      /*%< Const region */
47 typedef struct isc_consttextregion      isc_consttextregion_t;  /*%< Const Text Region */
48 typedef struct isc_entropy              isc_entropy_t;          /*%< Entropy */
49 typedef struct isc_entropysource        isc_entropysource_t;    /*%< Entropy Source */
50 typedef struct isc_event                isc_event_t;            /*%< Event */
51 typedef ISC_LIST(isc_event_t)           isc_eventlist_t;        /*%< Event List */
52 typedef unsigned int                    isc_eventtype_t;        /*%< Event Type */
53 typedef isc_uint32_t                    isc_fsaccess_t;         /*%< FS Access */
54 typedef struct isc_hash                 isc_hash_t;             /*%< Hash */
55 typedef struct isc_httpd                isc_httpd_t;            /*%< HTTP client */
56 typedef void (isc_httpdfree_t)(isc_buffer_t *, void *);         /*%< HTTP free function */
57 typedef struct isc_httpdmgr             isc_httpdmgr_t;         /*%< HTTP manager */
58 typedef struct isc_httpdurl             isc_httpdurl_t;         /*%< HTTP URL */
59 typedef void (isc_httpdondestroy_t)(void *);                    /*%< Callback on destroying httpd */
60 typedef struct isc_interface            isc_interface_t;        /*%< Interface */
61 typedef struct isc_interfaceiter        isc_interfaceiter_t;    /*%< Interface Iterator */
62 typedef struct isc_interval             isc_interval_t;         /*%< Interval */
63 typedef struct isc_lex                  isc_lex_t;              /*%< Lex */
64 typedef struct isc_log                  isc_log_t;              /*%< Log */
65 typedef struct isc_logcategory          isc_logcategory_t;      /*%< Log Category */
66 typedef struct isc_logconfig            isc_logconfig_t;        /*%< Log Configuration */
67 typedef struct isc_logmodule            isc_logmodule_t;        /*%< Log Module */
68 typedef struct isc_mem                  isc_mem_t;              /*%< Memory */
69 typedef struct isc_mempool              isc_mempool_t;          /*%< Memory Pool */
70 typedef struct isc_msgcat               isc_msgcat_t;           /*%< Message Catalog */
71 typedef struct isc_ondestroy            isc_ondestroy_t;        /*%< On Destroy */
72 typedef struct isc_netaddr              isc_netaddr_t;          /*%< Net Address */
73 typedef struct isc_portset              isc_portset_t;          /*%< Port Set */
74 typedef struct isc_quota                isc_quota_t;            /*%< Quota */
75 typedef struct isc_random               isc_random_t;           /*%< Random */
76 typedef struct isc_ratelimiter          isc_ratelimiter_t;      /*%< Rate Limiter */
77 typedef struct isc_region               isc_region_t;           /*%< Region */
78 typedef isc_uint64_t                    isc_resourcevalue_t;    /*%< Resource Value */
79 typedef unsigned int                    isc_result_t;           /*%< Result */
80 typedef struct isc_rwlock               isc_rwlock_t;           /*%< Read Write Lock */
81 typedef struct isc_sockaddr             isc_sockaddr_t;         /*%< Socket Address */
82 typedef struct isc_socket               isc_socket_t;           /*%< Socket */
83 typedef struct isc_socketevent          isc_socketevent_t;      /*%< Socket Event */
84 typedef struct isc_socketmgr            isc_socketmgr_t;        /*%< Socket Manager */
85 typedef struct isc_stats                isc_stats_t;            /*%< Statistics */
86 typedef int                             isc_statscounter_t;     /*%< Statistics Counter */
87 typedef struct isc_symtab               isc_symtab_t;           /*%< Symbol Table */
88 typedef struct isc_task                 isc_task_t;             /*%< Task */
89 typedef ISC_LIST(isc_task_t)            isc_tasklist_t;         /*%< Task List */
90 typedef struct isc_taskmgr              isc_taskmgr_t;          /*%< Task Manager */
91 typedef struct isc_textregion           isc_textregion_t;       /*%< Text Region */
92 typedef struct isc_time                 isc_time_t;             /*%< Time */
93 typedef struct isc_timer                isc_timer_t;            /*%< Timer */
94 typedef struct isc_timermgr             isc_timermgr_t;         /*%< Timer Manager */
95
96 typedef void (*isc_taskaction_t)(isc_task_t *, isc_event_t *);
97 typedef int (*isc_sockfdwatch_t)(isc_task_t *, isc_socket_t *, void *);
98
99 /* The following cannot be listed alphabetically due to forward reference */
100 typedef isc_result_t (isc_httpdaction_t)(const char *url,
101                                          const char *querystring,
102                                          void *arg,
103                                          unsigned int *retcode,
104                                          const char **retmsg,
105                                          const char **mimetype,
106                                          isc_buffer_t *body,
107                                          isc_httpdfree_t **freecb,
108                                          void **freecb_args);
109 typedef isc_boolean_t (isc_httpdclientok_t)(const isc_sockaddr_t *, void *);
110
111 /*% Resource */
112 typedef enum {
113         isc_resource_coresize = 1,
114         isc_resource_cputime,
115         isc_resource_datasize,
116         isc_resource_filesize,
117         isc_resource_lockedmemory,
118         isc_resource_openfiles,
119         isc_resource_processes,
120         isc_resource_residentsize,
121         isc_resource_stacksize
122 } isc_resource_t;
123
124 #endif /* ISC_TYPES_H */