[Ecls-list] Pseudo UNIX socket for WIN32

Julian Stecklina der_julian at web.de
Fri Feb 11 13:10:32 UTC 2005

On Fri, 11 Feb 2005 18:19:55 +0100
Juan Jose Garcia Ripoll <lisp at arrakis.es> wrote:

> Goffioul Michael wrote:
> >Attached is a further hacked version of sockets.lisp, which
> >implements pseudo UNIX socket for WIN32 using named pipes. Have fun.
> >
> Hehe, now that I had almost integrated the old file sockets.lisp...
> :-)
> BTW, a question for the unix hackers here. Julian's code had this
>         sockaddr.sun_len = sizeof(struct sockaddr_un);
>         sockaddr.sun_family = "some/path/to/socket";
>         strncpy(&sockaddr.sun_path,#2,sizeof(sockaddr.sun_path));
>         bind(#0,&sockaddr, sizeof(struct sockaddr_un));
> But in many other linux-related places I find only the last two lines.
> The field sun_len is gone and it only matters the  size argument that
> we  pass to bind(). Is the "sun_len" really required? Is it a BSD
> thing?

Seems so. struct sockaddr_un seems to differ on FreeBSD and Linux.

FreeBSD says:
     UNIX-domain addresses are variable-length file system pathnames of
at     most 104 characters.  The include file <sys/un.h> defines this

           struct sockaddr_un {
           u_char  sun_len;
           u_char  sun_family;
           char    sun_path[104];

Debian says:
              #define UNIX_PATH_MAX    108

              struct sockaddr_un {
                  sa_family_t  sun_family;              /* AF_UNIX */
                  char         sun_path[UNIX_PATH_MAX]; /* pathname */

Note that UNIX_PATH_MAX does not exist on FreeBSD. :) But I still
believe that is "nice" to actually fill sun_len with useful information
on *BSD.

Does Linux get anything right? ;)

 Julian Stecklina  /  _________________________/
  ________________/  /
  \_________________/  LISP - truly beautiful

More information about the ecl-devel mailing list