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

FreeBSD Manual Pages


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

       VtConn, vtconn, vtdial, vtfreeconn, vtsend, vtrecv, vtversion, vtdebug,
       vthangup	- Venti	network	connections

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

       typedef struct VtConn {
	   int	debug;
	   char	*version;
	   char	*uid;
	   char	*sid;
	   char	addr[256];
       } VtConn;

       VtConn*	  vtconn(int infd, int outfd)

       int	  vtreconn(VtConn *z, int infd,	int outfd)

       VtConn*	  vtdial(char *addr)

       int	  vtredial(VtConn *z, char *addr)

       int	  vtversion(VtConn *z)

       int	  vtsend(VtConn	*z, Packet *p)

       Packet*	  vtrecv(VtConn	*z)

       void	  vtrecvproc(void *z)

       void	  vtsendproc(void *z)

       void	  vtdebug(VtConn *z, char *fmt,	...)

       void	  vthangup(VtConn *z)

       void	  vtfreeconn(VtConn *z)

       extern int chattyventi;/* default 0 */

       A VtConn	structure represents a connection to a Venti server (when used
       by  a  client) or to a client (when used	by a server).  It contains the
       following user-visible fields: debug, a flag enabling debugging prints;
       version,	the protocol version in	use; uid, the (unverified) name	of the
       client; sid, the	(unverified) name of the server; and addr, the network
       address of the remote side.

       Vtconn  initializes  a  new connection structure	using file descriptors
       infd and	outfd (which may be the	same) for reading and writing.	Vtdial
       dials the given network address (see dial(3)) and returns a correspond-
       ing connection.	It returns nil if  the	connection  cannot  be	estab-

       Vtversion  exchanges  version  information  with	the remote side	as de-
       scribed in venti(7).  The negotiated version is stored in z->version.

       Vtsend writes a packet (see venti-packet(3)) on the connection z.   The
       packet  p  should  be a formatted Venti message as might	be returned by
       vtfcallpack; vtsend will	add the	two-byte length	field  (see  venti(7))
       at the begnning.	 Vtsend	frees p, even on error.

       Vtrecv  reads a packet from the connection z.  Analogous	to vtsend, the
       data read from the connection must start	with a	two-byte  length,  but
       the returned packet will	omit them.

       By  default, vtsend and vtrecv block until the packet can be written or
       read from the network.  In a threaded program (see thread(3)), this may
       not be desirable.  If the caller	arranges for vtsendproc	and vtrecvproc
       to run in their own procs (typically by calling proccreate),  then  vt-
       send  and  vtrecv  will	yield  the proc	in which they are run to other
       threads when waiting on the network.  The void* argument	to  vtsendproc
       and vtrecvproc must be the connection structure z.

       Vtdebug prints the formatted message to standard	error when z->debug is
       set.  Otherwise it is a no-op.

       Vthangup	hangs up a connection.	It closes the associated file descrip-
       tors  and  shuts	down send and receive procs if they have been started.
       Future calls to vtrecv or vtsend	will return errors.  Additional	 calls
       to vthangup will	have no	effect.

       Vtfreeconn  frees the connection	structure, hanging it up first if nec-

       If the global variable chattyventi is set, the library prints all Venti
       RPCs to standard	error as they are sent or received.


       venti(1),  venti(3), venti-client(3), venti-packet(3), venti-server(3),

       Routines	that return pointers return nil	on error.  Routines  returning
       integers	 return	0 on success, -1 on error.  All	routines set errstr on



Want to link to this manual page? Use this URL:

home | help