Add and export utility functions for IPv4 networks: MAKE-SUBNET-MASK, ADDRESS-NETWORK...
[iolib.git] / net.sockets / pkgdcl.lisp
blob686c0d541c37e1f93ce67423992a44d69bb69f96
1 ;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Indent-tabs-mode: NIL -*-
2 ;;;
3 ;;; pkgdcl.lisp --- Package definition.
4 ;;;
5 ;;; Copyright (C) 2006-2008, Stelian Ionescu <sionescu@common-lisp.net>
6 ;;;
7 ;;; This code is free software; you can redistribute it and/or
8 ;;; modify it under the terms of the version 2.1 of
9 ;;; the GNU Lesser General Public License as published by
10 ;;; the Free Software Foundation, as clarified by the
11 ;;; preamble found here:
12 ;;; http://opensource.franz.com/preamble.html
13 ;;;
14 ;;; This program is distributed in the hope that it will be useful,
15 ;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
16 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 ;;; GNU General Public License for more details.
18 ;;;
19 ;;; You should have received a copy of the GNU Lesser General
20 ;;; Public License along with this library; if not, write to the
21 ;;; Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
22 ;;; Boston, MA 02110-1301, USA
24 (in-package :common-lisp-user)
26 (defpackage :net.sockets
27 (:nicknames #:sockets)
28 (:use #:common-lisp :cffi :alexandria :split-sequence :io.streams :series)
29 (:import-from #:osicat-posix #:system-error #:posix-error
30 #:system-error-message #:errno-wrapper
31 #:pid #:gid #:uid #:size #:ssize #:bzero
32 #:timeval #:size-of-timeval #:sec #:usec)
33 (:import-from #:osicat-sys #:size-of-int)
34 (:shadow #:let #:let* #:multiple-value-bind #:funcall #:defun)
35 (:export
36 ;; Conditions
37 #:posix-error
38 #:possible-bug
39 #:resolver-error
40 #:resolver-again-error
41 #:resolver-fail-error
42 #:resolver-no-name-error
43 #:resolver-unknown-error
44 #:socket-address-in-use-error
45 #:socket-address-not-available-error
46 #:socket-already-connected-error
47 #:socket-connection-aborted-error
48 #:socket-connection-refused-error
49 #:socket-connection-reset-error
50 #:socket-connection-timeout-error
51 #:socket-endpoint-shutdown-error
52 #:socket-error
53 #:socket-host-down-error
54 #:socket-host-unreachable-error
55 #:socket-network-down-error
56 #:socket-network-reset-error
57 #:socket-network-unreachable-error
58 #:socket-no-buffer-space-error
59 #:socket-no-network-error
60 #:socket-not-connected-error
61 #:socket-operation-not-supported-error
62 #:socket-option-not-supported-error
63 #:system-error
64 #:unknown-interface
65 #:unknown-protocol
66 #:unknown-service
68 ;; Condition Accessors
69 #:address-type
70 #:bug-data
71 #:error-code
72 #:error-identifier
73 #:error-message
74 #:resolver-error-data
75 #:unknown-protocol-name
76 #:unknown-service-name
78 ;; Low-level Address Conversion
79 #:address-to-vector
80 #:colon-separated-to-vector
81 #:dotted-to-integer
82 #:dotted-to-vector
83 #:integer-to-dotted
84 #:integer-to-vector
85 #:string-address-to-vector
86 #:vector-to-colon-separated
87 #:vector-to-dotted
88 #:vector-to-integer
89 #:map-ipv4-address-to-ipv6
90 #:map-ipv6-address-to-ipv4
92 ;; Address Classes
93 #:address
94 #:inet-address
95 #:ipv4-address
96 #:ipv6-address
97 #:local-address
99 ;; Address Functions
100 #:address-equal-p
101 #:address-name
102 #:address-to-string
103 #:address=
104 #:copy-address
105 #:ensure-address
106 #:make-address
108 ;; Well-known Addresses
109 #:+ipv4-loopback+
110 #:+ipv4-unspecified+
111 #:+ipv6-interface-local-all-nodes+
112 #:+ipv6-interface-local-all-routers+
113 #:+ipv6-link-local-all-nodes+
114 #:+ipv6-link-local-all-routers+
115 #:+ipv6-loopback+
116 #:+ipv6-site-local-all-routers+
117 #:+ipv6-unspecified+
118 #:+max-ipv4-value+
119 #:+any-host+
120 #:+loopback+
122 ;; Address Predicates
123 #:abstract-address-p
124 #:addressp
125 #:inet-address-loopback-p
126 #:inet-address-multicast-p
127 #:inet-address-p
128 #:inet-address-type
129 #:inet-address-unicast-p
130 #:inet-address-unspecified-p
131 #:inet-address-private-p
132 #:ipv4-address-p
133 #:ipv6-address-p
134 #:ipv6-admin-local-multicast-p
135 #:ipv6-global-multicast-p
136 #:ipv6-global-unicast-p
137 #:ipv6-interface-local-multicast-p
138 #:ipv6-ipv4-mapped-p
139 #:ipv6-link-local-multicast-p
140 #:ipv6-link-local-unicast-p
141 #:ipv6-multicast-type
142 #:ipv6-organization-local-multicast-p
143 #:ipv6-reserved-multicast-p
144 #:ipv6-site-local-multicast-p
145 #:ipv6-site-local-unicast-p
146 #:ipv6-solicited-node-multicast-p
147 #:ipv6-transient-multicast-p
148 #:ipv6-unassigned-multicast-p
149 #:ipv6-unicast-type
150 #:local-address-p
152 ;; Network masks and subnets
153 #:make-subnet-mask
154 #:address-network-portion
155 #:address-host-portion
156 #:address-in-network-p
157 #:addresses-in-same-network-p
159 ;; Hostname, Service, and Protocol Lookups
160 #:ensure-hostname
161 #:lookup-host
162 #:lookup-protocol
163 #:lookup-service
165 ;; Network Interface Lookup
166 #:list-network-interfaces
167 #:interface
168 #:interface-index
169 #:interface-name
170 #:lookup-interface
171 #:make-interface
172 #:unknown-interface-datum
174 ;; Socket Classes
175 #:active-socket
176 #:datagram-socket
177 #:internet-socket
178 #:local-socket
179 #:passive-socket
180 #:socket
181 #:socket-datagram-internet-active
182 #:socket-datagram-local-active
183 #:socket-stream-internet-active
184 #:socket-stream-internet-passive
185 #:socket-stream-local-active
186 #:socket-stream-local-passive
187 #:stream-socket
189 ;; Socket Methods
190 #:accept-connection
191 #:bind-address
192 #:connect
193 #:disconnect
194 #:listen-on
195 #:local-filename
196 #:local-host
197 #:local-name
198 #:local-port
199 #:make-socket
200 #:make-socket-stream
201 #:receive-from
202 #:remote-filename
203 #:remote-host
204 #:remote-name
205 #:remote-port
206 #:send-to
207 #:shutdown
208 #:socket-connected-p
209 #:socket-family
210 #:socket-open-p
211 #:socket-option
212 #:socket-os-fd
213 #:socket-protocol
214 #:socket-type
215 #:with-open-socket
216 #:with-accept-connection
218 ;; Specials
219 #:*default-backlog-size*
220 #:*default-linger-seconds*
221 #:*ipv6*
222 #:*dns-nameservers*
223 #:*dns-domain*
224 #:*dns-search-domain*
227 (in-package :net.sockets)
229 (series::install)
230 (setf series:*suppress-series-warnings* t)