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

FreeBSD Manual Pages

  
 
  

home | help
VENTI-SERVER(3)		   Library Functions Manual	       VENTI-SERVER(3)

NAME
       vtsrvhello, vtlisten, vtgetreq, vtrespond - Venti server

SYNOPSIS
       #include	<u.h>
       #include	<libc.h>
       #include	<venti.h>

       typedef struct VtReq
       {
	      VtFcall tx;
	      VtFcall rx;
	      ...
       } VtReq;

       int    vtsrvhello(VtConn	*z)

       VtSrv* vtlisten(char *addr)

       VtReq* vtgetreq(VtSrv *srv)

       void   vtrespond(VtReq *req)

DESCRIPTION
       These routines execute the server side of the venti(7) protocol.

       Vtsrvhello  executes  the server	side of	the initial hello transaction.
       It sets z->uid with the user name claimed by the	other side.  Each  new
       connection  must	 be  initialized  by  running  vtversion  and then vt-
       srvhello.  The framework	below takes care of this detail	automatically;
       vtsrvhello  is  provided	for programs that do not use the functions be-
       low.

       Vtlisten, vtgetreq, and vtrespond provide a simple framework for	 writ-
       ing Venti servers.

       Vtlisten	announces at the network address addr, returning a fresh VtSrv
       structure representing the service.

       Vtgetreq	waits for and returns the next read, write, sync, or ping  re-
       quest  from any client connected	to the service srv.  Hello and goodbye
       messages	are handled internally and not returned	to  the	 client.   The
       interface  does	not distinguish	between	the different clients that may
       be connected at any given time.	The request can	be  found  in  the  tx
       field of	the returned VtReq.

       Once  a	request	 has  been  served and a response stored in r->rx, the
       server should call vtrespond to send the	response to the	client.	 Vtre-
       spond  frees  the  structure  r	as  well as the	packets	r->tx.data and
       r->rx.data.

EXAMPLE
       /usr/local/plan9/src/venti/cmd contains two simple Venti	 servers  ro.c
       and  devnull.c  written	using these routines.  Ro is a read-only Venti
       proxy (it rejects write requests).  Devnull is a	 dangerous  write-only
       Venti server: it	discards all blocks written to it and returns error on
       all reads.

SOURCE
       /usr/local/plan9/src/libventi

SEE ALSO
       venti(3), venti-conn(3),	venti-packet(3), venti(7), venti(8)

							       VENTI-SERVER(3)

NAME | SYNOPSIS | DESCRIPTION | EXAMPLE | SOURCE | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=venti-server&sektion=3&manpath=FreeBSD+12.0-RELEASE+and+Ports>

home | help