1 (in-package :sb-bsd-sockets)
3 #|| <h2>Local (unix) domain sockets</h2>
5 Local domain (AF_LOCAL) sockets are also known as Unix-domain sockets, but were
6 renamed by POSIX presumably on the basis that they may be
7 available on other systems too.
9 A local socket address is a string, which is used to create a node
10 in the local filesystem. This means of course that they cannot be used across
15 (defclass local-socket (socket)
16 ((family :initform sockint::af-local)))
18 (defmethod make-sockaddr-for ((socket local-socket) &optional sockaddr &rest address &aux (filename (first address)))
19 (let ((sockaddr (or sockaddr (sockint::allocate-sockaddr-un))))
20 (setf (sockint::sockaddr-un-family sockaddr) sockint::af-local)
22 (setf (sockint::sockaddr-un-path sockaddr) filename))
25 (defmethod free-sockaddr-for ((socket local-socket) sockaddr)
26 (sockint::free-sockaddr-un sockaddr))
28 (defmethod size-of-sockaddr ((socket local-socket))
29 sockint::size-of-sockaddr-un)
31 (defmethod bits-of-sockaddr ((socket local-socket) sockaddr)
32 "Return the file name of the local socket address SOCKADDR."
33 (let ((name (sockint::sockaddr-un-path sockaddr)))
34 (if (zerop (length name)) nil name)))