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
       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 into a packet.  Vtfcallunpack does the reverse conversion.

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

       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 differs
       from the	one used on disk and in	the network protocol.	The  disk  and
       network	representation	uses  different	constants and does not distin-
       guish between VtDataType+n and VtDirType+n blocks.   Vttodisktype  con-
       verts  a	 <venti.h> enumeration value to	the disk value;	vtfromdisktype
       converts	a disk value to	the enumeration	value, always  using  the  Vt-
       DirType	pointers.  The VtFcall field blocktype is an enumeration value
       (vtfcallpack and	vtfcallunpack convert to and from the disk values used
       in packets automatically), so most programs will	not need to call these

       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	formatters to print VtFcall structures
       and scores.  Vtfcallfmt assumes that vtscorefmt is installed as %V.


       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