1use std::ffi::c_void;
2
3use crate::{define_opts, os};
4
5pub type Sock = i32;
6
7#[repr(transparent)]
8pub struct Service(c_void);
9
10#[repr(transparent)]
11pub struct Record(c_void);
12
13#[repr(transparent)]
14pub struct ServiceAttribute(c_void);
15
16impl Service {
17 pub const MAX_SERVICE_NAME: usize = 64;
20
21 pub const MAX_DOMAIN_NAME: usize = 1009;
24
25 #[doc(alias = "DNSServiceRefSockFD")]
27 pub fn sock_fd(&self) -> Sock {
28 unsafe { DNSServiceRefSockFD(self) }
29 }
30
31 #[doc(alias = "DNSServiceProcessResult")]
32 pub fn process_result(&self) -> os::Result {
33 unsafe { DNSServiceProcessResult(self).result() }
34 }
35
36 #[doc(alias = "DNSServiceRefDeallocate")]
37 pub fn deallocate(self) {
38 unsafe { DNSServiceRefDeallocate(&self) }
39 }
40}
41
42#[derive(Debug, Eq, PartialEq)]
43#[repr(i32)]
44pub enum ServiceAaaaPolicyName {
45 #[doc(alias = "kDNSServiceAAAAPolicyNone")]
46 None = 0,
47 #[doc(alias = "kDNSServiceAAAAPolicyFallback")]
49 Fallback = 1,
50}
51
52define_opts!(pub ServiceFlags(u32));
53
54define_opts!(pub ServiceProtocol(u32));
55
56#[doc(alias = "DNSServiceErrorType")]
57pub type ServiceErrorType = os::Status;
58
59pub mod err {
61 use crate::os::Error;
62
63 #[doc(alias = "kDNSServiceErr_Unknown")]
64 pub const UKNOWN: Error = Error::new_unchecked(-65537);
65
66 #[doc(alias = "kDNSServiceErr_NoSuchName")]
67 pub const NO_SUCH_NAME: Error = Error::new_unchecked(-65538);
68
69 #[doc(alias = "kDNSServiceErr_NoMemory")]
70 pub const NO_MEMORY: Error = Error::new_unchecked(-65539);
71
72 #[doc(alias = "kDNSServiceErr_BadParam")]
73 pub const BAD_PARAM: Error = Error::new_unchecked(-65540);
74
75 #[doc(alias = "kDNSServiceErr_BadReference")]
76 pub const BAD_REFERENCE: Error = Error::new_unchecked(-65541);
77
78 #[doc(alias = "kDNSServiceErr_BadState")]
79 pub const BAD_STATE: Error = Error::new_unchecked(-65542);
80
81 #[doc(alias = "kDNSServiceErr_BadFlags")]
82 pub const BAD_FLAGS: Error = Error::new_unchecked(-65543);
83
84 #[doc(alias = "kDNSServiceErr_Unsupported")]
85 pub const UNSUPPORTED: Error = Error::new_unchecked(-65544);
86
87 #[doc(alias = "kDNSServiceErr_NotInitialized")]
88 pub const NOT_INITIALIZED: Error = Error::new_unchecked(-65545);
89
90 #[doc(alias = "kDNSServiceErr_AlreadyRegistered")]
91 pub const ALREADY_REGISTERED: Error = Error::new_unchecked(-65547);
92
93 #[doc(alias = "kDNSServiceErr_NameConflict")]
94 pub const NAME_CONFLICT: Error = Error::new_unchecked(-65548);
95
96 #[doc(alias = "kDNSServiceErr_Invalid")]
97 pub const INVALID: Error = Error::new_unchecked(-65549);
98
99 #[doc(alias = "kDNSServiceErr_Firewall")]
100 pub const FIREWALL: Error = Error::new_unchecked(-65550);
101
102 #[doc(alias = "kDNSServiceErr_Incompatible")]
104 pub const INCOMPATIBLE: Error = Error::new_unchecked(-65551);
105
106 #[doc(alias = "kDNSServiceErr_BadInterfaceIndex")]
107 pub const BAD_INTERFACE_INDEX: Error = Error::new_unchecked(-65552);
108
109 #[doc(alias = "kDNSServiceErr_Refused")]
110 pub const REFUSED: Error = Error::new_unchecked(-65553);
111
112 #[doc(alias = "kDNSServiceErr_NoSuchRecord")]
113 pub const NO_SUCH_RECORD: Error = Error::new_unchecked(-65554);
114
115 #[doc(alias = "kDNSServiceErr_NoAuth")]
116 pub const NO_AUTH: Error = Error::new_unchecked(-65555);
117
118 #[doc(alias = "kDNSServiceErr_NoSuchKey")]
119 pub const NO_SUCH_KEY: Error = Error::new_unchecked(-65556);
120
121 #[doc(alias = "kDNSServiceErr_NATTraversal")]
122 pub const NAT_TRAVERSAL: Error = Error::new_unchecked(-65557);
123
124 #[doc(alias = "kDNSServiceErr_DoubleNAT")]
125 pub const DOUBLE_NAT: Error = Error::new_unchecked(-65558);
126
127 #[doc(alias = "kDNSServiceErr_BadTime")]
128 pub const BAD_TIME: Error = Error::new_unchecked(-65559);
129
130 #[doc(alias = "kDNSServiceErr_BadSig")]
131 pub const BAD_SIG: Error = Error::new_unchecked(-65560);
132
133 #[doc(alias = "kDNSServiceErr_BadKey")]
134 pub const BAD_KEY: Error = Error::new_unchecked(-65561);
135
136 #[doc(alias = "kDNSServiceErr_Transient")]
137 pub const TRANSIENT: Error = Error::new_unchecked(-65562);
138
139 #[doc(alias = "kDNSServiceErr_ServiceNotRunning")]
141 pub const SERVICE_NOT_RUNNING: Error = Error::new_unchecked(-65563);
142
143 #[doc(alias = "kDNSServiceErr_NATPortMappingUnsupported")]
145 pub const NAT_PORT_MAPPING_UNSUPPORTED: Error = Error::new_unchecked(-65564);
146
147 #[doc(alias = "kDNSServiceErr_NATPortMappingDisabled")]
149 pub const NAT_PORT_MAPPING_DISABLED: Error = Error::new_unchecked(-65565);
150
151 #[doc(alias = "kDNSServiceErr_NoRouter")]
153 pub const NO_ROUTER: Error = Error::new_unchecked(-65566);
154
155 #[doc(alias = "kDNSServiceErr_PollingMode")]
156 pub const POLLING_MODE: Error = Error::new_unchecked(-65567);
157
158 #[doc(alias = "kDNSServiceErr_Timeout")]
159 pub const TIMEOUT: Error = Error::new_unchecked(-65568);
160
161 #[doc(alias = "kDNSServiceErr_DefunctConnection")]
163 pub const DEFUNCT_CONNECTION: Error = Error::new_unchecked(-65569);
164
165 #[doc(alias = "kDNSServiceErr_PolicyDenied")]
166 pub const POLICY_DENIED: Error = Error::new_unchecked(-65570);
167
168 #[doc(alias = "kDNSServiceErr_NotPermitted")]
169 pub const NOT_PERMITTED: Error = Error::new_unchecked(-65571);
170
171 #[doc(alias = "kDNSServiceErr_StaleData")]
172 pub const STALE_DATA: Error = Error::new_unchecked(-65572);
173}
174
175unsafe extern "C-unwind" {
176 fn DNSServiceRefSockFD(service: &Service) -> Sock;
177 fn DNSServiceProcessResult(service: &Service) -> ServiceErrorType;
178 fn DNSServiceRefDeallocate(service: &Service);
179}