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