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

FreeBSD Manual Pages


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

       VtEntry,	VtFcall, VtRoot, vtentrypack, vtentryunpack, vtfcallclear, vt-
       fcallfmt, vtfcallpack, vtfcallunpack, vtfromdisktype, vttodisktype, vt-
       getstring,   vtputstring,   vtrootpack,	 vtrootunpack,	 vtparsescore,
       vtscorefmt - venti data formats

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

	   VtEntrySize = 40,
	   VtRootSize =	300,
	   VtScoreSize = 20,

       typedef struct VtEntry
	   ulong gen;	 /* generation number */
	   ushort psize;   /* pointer block size */
	   ushort dsize;   /* data block size */
	   uchar type;
	   uchar flags;
	   uvlong size;
	   uchar score[VtScoreSize];
       } VtEntry;

       typedef struct VtRoot
	   char	name[128];
	   char	type[128];
	   uchar score[VtScoreSize];  /* to a Dir block	*/
	   ushort blocksize;	      /* maximum block size */
	   uchar prev[VtScoreSize];   /* previous root block */
       } VtRoot;

       void    vtentrypack(VtEntry *e, uchar *buf, int index)
       int     vtentryunpack(VtEntry *e, uchar *buf, int index)

       Packet* vtfcallpack(VtFcall *f)
       int     vtfcallunpack(VtFcall *f, Packet	*p)

       void vtfcallclear(VtFcall *f)

       uint    vttodisktype(uint type)
       uint    vtfromdisktype(uint type)

       int     vtputstring(Packet *p, char *s)
       int     vtgetstring(Packet *p, char **s)

       void    vtrootpack(VtRoot *r, uchar *buf)
       int     vtrootunpack(VtRoot *r, uchar *buf)

       int     vtparsescore(char *s, char **prefix, uchar score[VtScoreSize])

       int     vtfcallfmt(Fmt *fmt)
       int     vtscorefmt(Fmt *fmt)

       These routines convert between C	representations	 of  Venti  structures
       and serialized representations used on disk and on the network.

       Vtentrypack  converts  a	VtEntry	structure describing a Venti file (see
       venti(7)) into  a  40-byte  (VtEntrySize)  structure  at	 buf+index*40.
       Vtentryunpack does the reverse conversion.

       Vtfcallpack  converts  a	 VtFcall structure describing a	Venti protocol
       message (see venti(7)) into a packet.  Vtfcallunpack does  the  reverse

       The  fields  in a VtFcall are named after the protocol fields described
       in venti(7), except that	the type field is renamed blocktype.  The msg-
       type  field holds the one-byte message type: VtThello, VtRhello,	and so

       Vtfcallclear frees the strings f->error,	 f->version,  f->uid,  f->sid,
       the buffers f->crypto and f->codec, and the packet f->data.

       The block type enumeration defined in <venti.h> (presented in venti(7))
       differs from the	one used on disk and in	 the  network  protocol.   The
       disk  and  network representation uses different	constants and does not
       distinguish between VtDataType+n	and VtDirType+n	blocks.	  Vttodisktype
       converts	 a  <venti.h> enumeration value	to the disk value; vtfromdisk-
       type converts a disk value to the enumeration value, always  using  the
       VtDirType  pointers.   The  VtFcall  field  blocktype is	an enumeration
       value (vtfcallpack and vtfcallunpack convert to and from	the disk  val-
       ues  used  in packets automatically), so	most programs will not need to
       call these functions.

       Vtputstring appends the Venti protocol representation of	the  string  s
       to the packet p.	 Vtgetstring reads a string from the packet, returning
       a pointer to a copy of the string in *s.	 The copy must be freed	by the
       caller.	 These	functions  are	used by	vtfcallpack and	vtfcallunpack;
       most programs will not need to call them	directly.

       Vtrootpack converts a VtRoot structure describing  a  Venti  file  tree
       into  the 300-byte (VtRootSize) buffer pointed to by buf.  Vtrootunpack
       does the	reverse	conversion.

       Vtparsescore parses the 40-digit	 hexadecimal  string  s,  writing  its
       value  into  score.   If	the hexadecimal	string is prefixed with	a text
       label followed by a colon, a copy of that label is returned in *prefix.
       If prefix is nil, the label is ignored.

       Vtfcallfmt  and	vtscorefmt  are	 print(3)  formatters to print VtFcall
       structures and scores.  Vtfcallfmt assumes that vtscorefmt is installed
       as %V.


       venti(1), venti(3), venti(7)

       Vtentrypack, vtfcallpack, vtrootpack, and vtfcallclear cannot fail.

       Vtentryunpack, vtrootunpack, vtputstring, vtgetstring, and vtparsescore
       return 0	on success, -1 on error.

       Vtfcallpack returns a packet on success,	nil on error.

       Vttodisktype and	vtfromdisktype return VtCorruptType  (255)  when  pre-
       sented with invalid input.



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

home | help