Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
PREFIX_ATTACH(3)	   libdill Library Functions	      PREFIX_ATTACH(3)

NAME
       prefix_attach - creates PREFIX protocol on top of underlying socket

SYNOPSIS
	      #include <libdill.h>

	      int prefix_attach(
		  int s,
		  size_t hdrlen,
		  int flags);

DESCRIPTION
       PREFIX  is a message-based protocol to send binary messages prefixed by
       size.  The protocol has no initial handshake.   Terminal	 handshake  is
       accomplished by each peer sending size field filled by 0xff bytes.

       This  function  instantiates  PREFIX  protocol on top of	the underlying
       protocol.

       s: Handle of the	underlying socket.  It must be a bytestream protocol.

       hdrlen: Size of the length field, in bytes.

       flags: If set to	PREFIX_BIG_ENDIAN (also	known as network  byte	order,
       the  default option) the	most significant byte of the size will be sent
       first on	the wire.  If set to PREFIX_LITTLE_ENDIAN the  least  signiti-
       cant byte will come first.

       The socket can be cleanly shut down using prefix_detach function.

       This  function  is  not	available  if  libdill is compiled with	--dis-
       able-sockets option.

RETURN VALUE
       In case of success the function returns newly  created  socket  handle.
       In  case	of error it returns -1 and sets	errno to one of	the values be-
       low.

ERRORS
        EBADF:	Invalid	handle.

        EINVAL: Invalid argument.

        EMFILE: The maximum number of file descriptors	in the process are al-
	 ready open.

        ENFILE: The maximum number of file descriptors	in the system are  al-
	 ready open.

        ENOMEM: Not enough memory.

        ENOTSUP: The handle does not support this operation.

        EPROTO: Underlying socket is not a bytestream socket.

EXAMPLE
	      int s = tcp_connect(&addr, -1);
	      s	= prefix_attach(s, 2, 0);
	      msend(s, "ABC", 3, -1);
	      char buf[256];
	      ssize_t sz = mrecv(s, buf, sizeof(buf), -1);
	      s	= prefix_detach(s, -1);
	      tcp_close(s);

SEE ALSO
       hclose(3)  mrecv(3)  mrecvl(3)  msend(3)	msendl(3) prefix_attach_mem(3)
       prefix_detach(3)

libdill							      PREFIX_ATTACH(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=prefix_attach&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help