GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
VENTI-SERVER(3) FreeBSD Library Functions Manual VENTI-SERVER(3)

vtsrvhello, vtlisten, vtgetreq, vtrespond - Venti server

#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)

These routines execute the server side of the 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 vtsrvhello. The framework below takes care of this detail automatically; vtsrvhello is provided for programs that do not use the functions below.

Vtlisten, vtgetreq, and vtrespond provide a simple framework for writing 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 request 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. Vtrespond frees the structure r as well as the packets r->tx.data and r->rx.data.

/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.

/src/libventi


Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.