1pub type Socket = c_ares_sys::ares_socket_t;
4
5pub const SOCKET_BAD: Socket = c_ares_sys::ARES_SOCKET_BAD;
8
9#[derive(Copy, Clone, Eq, PartialEq, Debug, Hash, PartialOrd, Ord)]
11pub enum AddressFamily {
12 INET = c_types::AF_INET as isize,
14
15 INET6 = c_types::AF_INET6 as isize,
17
18 UNSPEC = c_types::AF_UNSPEC as isize,
20}
21
22#[derive(Copy, Clone, Eq, PartialEq, Debug, Hash, PartialOrd, Ord)]
24#[allow(clippy::upper_case_acronyms)]
25pub enum QueryType {
26 A = 1,
27 NS = 2,
28 CNAME = 5,
29 SOA = 6,
30 PTR = 12,
31 MX = 15,
32 TXT = 16,
33 AAAA = 28,
34 SRV = 33,
35 NAPTR = 35,
36 URI = 256,
37 CAA = 257,
38}
39
40#[derive(Copy, Clone, Eq, PartialEq, Debug, Hash, PartialOrd, Ord)]
42pub enum DnsClass {
43 IN = 1,
44}
45
46#[cfg(cares1_26)]
54#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
55pub enum EventSys {
56 Default,
58 Win32,
60 Epoll,
62 Kqueue,
64 Poll,
66 Select,
68}
69
70#[cfg(cares1_26)]
71impl From<EventSys> for c_ares_sys::ares_evsys_t {
72 fn from(val: EventSys) -> Self {
73 match val {
74 EventSys::Default => c_ares_sys::ares_evsys_t::ARES_EVSYS_DEFAULT,
75 EventSys::Win32 => c_ares_sys::ares_evsys_t::ARES_EVSYS_WIN32,
76 EventSys::Epoll => c_ares_sys::ares_evsys_t::ARES_EVSYS_EPOLL,
77 EventSys::Kqueue => c_ares_sys::ares_evsys_t::ARES_EVSYS_KQUEUE,
78 EventSys::Poll => c_ares_sys::ares_evsys_t::ARES_EVSYS_POLL,
79 EventSys::Select => c_ares_sys::ares_evsys_t::ARES_EVSYS_SELECT,
80 }
81 }
82}
83
84pub const MAX_ADDRTTLS: usize = 32;
85
86#[cfg(test)]
87mod tests {
88 use super::*;
89 use std::collections::HashSet;
90
91 #[test]
92 fn socket_bad_is_defined() {
93 let bad = SOCKET_BAD;
94 assert_eq!(bad, SOCKET_BAD);
96 }
97
98 #[test]
99 fn address_family_values() {
100 assert_ne!(AddressFamily::INET as isize, AddressFamily::INET6 as isize);
101 assert_ne!(AddressFamily::INET as isize, AddressFamily::UNSPEC as isize);
102 assert_ne!(
103 AddressFamily::INET6 as isize,
104 AddressFamily::UNSPEC as isize
105 );
106 }
107
108 #[test]
109 #[allow(clippy::clone_on_copy)]
110 fn address_family_clone_copy() {
111 let af = AddressFamily::INET;
112 let cloned = af.clone();
113 let copied = af;
114 assert_eq!(af, cloned);
115 assert_eq!(af, copied);
116 }
117
118 #[test]
119 fn address_family_debug() {
120 let af = AddressFamily::INET6;
121 let debug = format!("{af:?}");
122 assert!(debug.contains("INET6"));
123 }
124
125 #[test]
126 fn address_family_eq_hash() {
127 let mut set = HashSet::new();
128 set.insert(AddressFamily::INET);
129 set.insert(AddressFamily::INET6);
130 set.insert(AddressFamily::INET);
131 assert_eq!(set.len(), 2);
132 }
133
134 #[test]
135 #[allow(clippy::clone_on_copy)]
136 fn address_family_ord() {
137 let families = [
138 AddressFamily::INET,
139 AddressFamily::INET6,
140 AddressFamily::UNSPEC,
141 ];
142 let mut sorted = families.clone();
143 sorted.sort();
144 assert_eq!(sorted.len(), 3);
145 }
146
147 #[cfg(cares1_26)]
148 #[test]
149 fn event_sys_variants() {
150 let variants = [
152 EventSys::Default,
153 EventSys::Win32,
154 EventSys::Epoll,
155 EventSys::Kqueue,
156 EventSys::Poll,
157 EventSys::Select,
158 ];
159 for variant in variants {
160 let _: c_ares_sys::ares_evsys_t = variant.into();
161 }
162 }
163}