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

  
 
  

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 accom-
     plished by each peer sending size field filled by 0xff bytes.

     This function instantiates PREFIX protocol on top of the underlying  proto-
     col.

     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 signiticant  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 --disable-sock-
     ets 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 below.

ERRORS
     * EBADF: Invalid handle.

     * EINVAL: Invalid argument.

     * EMFILE: The maximum number of file descriptors in the process are already
       open.

     * ENFILE:	The maximum number of file descriptors in the system are already
       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)  pre-
     fix_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.1.quarterly>

home | help