Mark ENOLINK and EMULTIHOP as optional
[iolib.git] / src / sockets / pkgdcl.lisp
blob1eb5876e7fea92cf3badaff2a07923ad3457cae4
1 ;;;; -*- Mode: Lisp; indent-tabs-mode: nil -*-
2 ;;;
3 ;;; --- Package definition.
4 ;;;
6 (in-package :iolib/common-lisp-user)
8 (defpackage :iolib/sockets
9 (:nicknames :sockets :iolib.sockets)
10 (:use :iolib/base :iolib/streams :cffi)
11 (:import-from :swap-bytes
12 #:htons #:ntohs #:htonl #:ntohl)
13 (:import-from :iolib/syscalls
14 #:defsyscall
15 #:size-t #:ssize-t #:pid-t #:uid-t #:gid-t
16 #:timeval #:sec #:usec)
17 (:import-from :iolib/multiplex
18 #:decode-timeout)
19 (:export
20 ;; Conditions
21 #:socket-error
22 #:socket-address-in-use-error
23 #:socket-address-family-not-supported-error
24 #:socket-address-not-available-error
25 #:socket-already-connected-error
26 #:socket-connection-aborted-error
27 #:socket-connection-refused-error
28 #:socket-connection-reset-error
29 #:socket-connection-timeout-error
30 #:socket-endpoint-shutdown-error
31 #:socket-host-down-error
32 #:socket-host-unreachable-error
33 #:socket-network-down-error
34 #:socket-network-reset-error
35 #:socket-network-unreachable-error
36 #:socket-no-buffer-space-error
37 #:socket-no-network-error
38 #:socket-not-connected-error
39 #:socket-operation-not-supported-error
40 #:socket-option-not-supported-error
41 #:resolver-error
42 #:resolver-again-error
43 #:resolver-fail-error
44 #:resolver-no-name-error
45 #:resolver-unknown-error
46 #:unknown-interface
47 #:unknown-protocol
48 #:unknown-service
50 ;; Restarts
51 #:ignore-syscall-error
52 #:retry-syscall
54 ;; Condition Accessors
55 #:error-code
56 #:error-identifier
57 #:error-message
58 #:resolver-error-datum
59 #:unknown-protocol-datum
60 #:unknown-service-datum
61 #:unknown-interface-datum
63 ;; Address Classes
64 #:address
65 #:inet-address
66 #:named-address
67 #:ipv4-address
68 #:ipv6-address
69 #:local-address
70 #+linux #:netlink-address
72 ;; Address Functions
73 #:address-name
74 #:address-type
75 #:address-to-string
76 #:address-to-vector
77 #:copy-address
78 #:ensure-address
79 #:make-address
80 #+linux #:netlink-address-multicast-groups
82 ;; Well-known Addresses
83 #:+ipv4-loopback+
84 #:+ipv4-unspecified+
85 #:+ipv6-interface-local-all-nodes+
86 #:+ipv6-interface-local-all-routers+
87 #:+ipv6-link-local-all-nodes+
88 #:+ipv6-link-local-all-routers+
89 #:+ipv6-loopback+
90 #:+ipv6-site-local-all-routers+
91 #:+ipv6-unspecified+
92 #:+max-ipv4-value+
93 #:+any-host+
94 #:+loopback+
96 ;; Address Predicates
97 #:abstract-address-p
98 #:address=
99 #:address-equal-p
100 #:addressp
101 #:inet-address-loopback-p
102 #:inet-address-multicast-p
103 #:inet-address-p
104 #:inet-address-type
105 #:inet-address-unicast-p
106 #:inet-address-unspecified-p
107 #:ipv4-address-p
108 #:ipv6-address-p
109 #:ipv6-admin-local-multicast-p
110 #:ipv6-global-multicast-p
111 #:ipv6-global-unicast-p
112 #:ipv6-interface-local-multicast-p
113 #:ipv6-ipv4-mapped-p
114 #:ipv6-link-local-multicast-p
115 #:ipv6-link-local-unicast-p
116 #:ipv6-multicast-type
117 #:ipv6-organization-local-multicast-p
118 #:ipv6-reserved-multicast-p
119 #:ipv6-site-local-multicast-p
120 #:ipv6-site-local-unicast-p
121 #:ipv6-solicited-node-multicast-p
122 #:ipv6-transient-multicast-p
123 #:ipv6-unassigned-multicast-p
124 #:ipv6-unicast-type
125 #:local-address-p
127 ;; Network masks and subnets
128 #:make-netmask
129 #:ensure-netmask
130 #:ipv4-network
131 #:ipv4-network=
132 #:inet-address-private-p
133 #:inet-address-network-portion
134 #:inet-address-host-portion
135 #:inet-address-in-network-p
136 #:inet-addresses-in-same-network-p
137 #:inet-address-network-class
139 ;; Low-level Address Conversion
140 #:colon-separated-to-vector
141 #:dotted-to-integer
142 #:dotted-to-vector
143 #:integer-to-dotted
144 #:integer-to-vector
145 #:string-address-to-vector
146 #:vector-to-colon-separated
147 #:vector-to-dotted
148 #:vector-to-integer
149 #:map-ipv4-address-to-ipv6
150 #:map-ipv6-address-to-ipv4
152 ;; Hostname, Service, and Protocol Lookups
153 #:ensure-hostname
154 #:lookup-hostname
155 #:lookup-host ; DEPRECATED
156 #:lookup-protocol
157 #:lookup-service
159 ;; Network Interface Lookup
160 #:list-network-interfaces
161 #:interface-index
162 #:interface-name
163 #:lookup-interface
164 #:make-interface
166 ;; Socket Classes
167 #:active-socket
168 #:datagram-socket
169 #:internet-socket
170 #:local-socket
171 #:passive-socket
172 #:socket
173 #:socket-datagram-internet-active
174 #:socket-datagram-local-active
175 #:socket-stream-internet-active
176 #:socket-stream-internet-passive
177 #:socket-stream-local-active
178 #:socket-stream-local-passive
179 #:stream-socket
181 ;; Socket Methods
182 #:accept-connection
183 #:bind-address
184 #:connect
185 #:disconnect
186 #:listen-on
187 #:local-filename
188 #:local-host
189 #:local-name
190 #:local-port
191 #:make-socket
192 #:make-socket-from-fd
193 #:make-socket-pair
194 #:receive-file-descriptor
195 #:receive-from
196 #:remote-filename
197 #:remote-host
198 #:remote-name
199 #:remote-port
200 #:send-file-descriptor
201 #:send-to
202 #:shutdown
203 #:socket-connected-p
204 #:socket-address-family
205 #:socket-ipv6-p
206 #:ipv6-socket-p ; DEPRECATED
207 #:socket-open-p
208 #:socket-option
209 #:socket-os-fd
210 #:socket-protocol
211 #:socket-type
212 #:with-open-socket
213 #:with-accept-connection
215 #:dns-query
216 #:dns-message
217 #:dns-message-id
218 #:dns-message-flags
219 #:dns-message-decoded-flags
220 #:dns-message-question
221 #:dns-message-answer
222 #:dns-message-authority
223 #:dns-message-additional
225 ;; Specials
226 #:*default-backlog-size*
227 #:*default-linger-seconds*
228 #:*ipv6*
229 #:*dns-nameservers*
230 #:*dns-domain*
231 #:*dns-search-domain*
233 ;; Miscellaneous
234 #:ip #:net)
235 #+linux
236 (:export
237 ;; IP protocols
238 #:ipproto-ip
239 #:ipproto-ipv6
240 #:ipproto-icmp
241 #:ipproto-icmpv6
242 #:ipproto-tcp
243 #:ipproto-udp
244 #:ipproto-sctp
245 #:ipproto-raw
247 ;; CFFI enum ICMP Types
248 #:icmp-types
249 #:icmp-echo-request
250 #:icmp-echo-reply
251 #:icmp-dest-unreach
252 #:icmp-source-quench
253 #:icmp-redirect
254 #:icmp-time-exceeded
255 #:icmp-parameter-prob
256 #:icmp-timestamp-request
257 #:icmp-timestamp-reply
258 #:icmp-info-request
259 #:icmp-info-reply
260 #:icmp-address-request
261 #:icmp-address-reply
263 ;; CFFI enum ICMP-Unreach Types
264 #:icmp-unreach
265 #:icmp-net-unreach
266 #:icmp-host-unreach
267 #:icmp-prot-unreach
268 #:icmp-port-unreach
269 #:icmp-frag-needed
270 #:icmp-sr-failed
271 #:icmp-net-unknown
272 #:icmp-host-unknown
273 #:icmp-host-isolated
274 #:icmp-net-ano
275 #:icmp-host-ano
276 #:icmp-net-unr-tos
277 #:icmp-host-unr-tos
278 #:icmp-pkt-filtered
279 #:icmp-prec-violation
280 #:icmp-prec-cutoff
282 ;; CFFI enum ICMP-Redirect Types
283 #:icmp-redirect
284 #:icmp-redir-net
285 #:icmp-redir-host
286 #:icmp-redir-nettos
287 #:icmp-redir-hosttos
289 ;; CFFI enum ICMP-Time-Exceeded Types
290 #:icmp-redirect
291 #:icmp-exc-ttl
292 #:icmp-exc-fragtime))