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