1 be7cbb4e 2005-07-12 devnull .TH VENTI-PACKET 3
4 3aec33fe 2005-07-18 devnull packetalloc,
5 3aec33fe 2005-07-18 devnull packetappend,
6 3aec33fe 2005-07-18 devnull packetasize,
7 3aec33fe 2005-07-18 devnull packetcmp,
8 3aec33fe 2005-07-18 devnull packetconcat,
9 3aec33fe 2005-07-18 devnull packetconsume,
10 3aec33fe 2005-07-18 devnull packetcopy,
11 3aec33fe 2005-07-18 devnull packetdup,
12 3aec33fe 2005-07-18 devnull packetforeign,
13 3aec33fe 2005-07-18 devnull packetfragments,
14 3aec33fe 2005-07-18 devnull packetfree,
15 3aec33fe 2005-07-18 devnull packetheader,
16 3aec33fe 2005-07-18 devnull packetpeek,
17 3aec33fe 2005-07-18 devnull packetprefix,
18 3aec33fe 2005-07-18 devnull packetsha1,
19 3aec33fe 2005-07-18 devnull packetsize,
20 3aec33fe 2005-07-18 devnull packetsplit,
21 3aec33fe 2005-07-18 devnull packetstats,
22 3aec33fe 2005-07-18 devnull packettrailer,
23 3aec33fe 2005-07-18 devnull packettrim \- zero-copy network buffers
24 be7cbb4e 2005-07-12 devnull .SH SYNOPSIS
26 be7cbb4e 2005-07-12 devnull #include <u.h>
28 be7cbb4e 2005-07-12 devnull #include <libc.h>
30 be7cbb4e 2005-07-12 devnull #include <venti.h>
31 be7cbb4e 2005-07-12 devnull .ta +\w'\fLPacket* 'u +\w'\fLxxxx'u
36 be7cbb4e 2005-07-12 devnull Packet* packetalloc(void);
39 3aec33fe 2005-07-18 devnull void packetappend(Packet *p, uchar *buf, int n)
42 3aec33fe 2005-07-18 devnull uint packetasize(Packet *p)
45 3aec33fe 2005-07-18 devnull int packetcmp(Packet *p, Packet *q)
48 3aec33fe 2005-07-18 devnull void packetconcat(Packet *p, Packet *q)
51 be7cbb4e 2005-07-12 devnull int packetconsume(Packet *p, uchar *buf, int n)
54 3aec33fe 2005-07-18 devnull int packetcopy(Packet *p, uchar *buf, int offset, int n)
57 3aec33fe 2005-07-18 devnull Packet* packetdup(Packet *p, int offset, int n)
60 3aec33fe 2005-07-18 devnull Packet* packetforeign(uchar *buf, int n,
63 3aec33fe 2005-07-18 devnull void (*free)(void *a), void *a)
66 3aec33fe 2005-07-18 devnull int packetfragments(Packet *p, IOchunk *io, int nio,
69 3aec33fe 2005-07-18 devnull int offset)
72 3aec33fe 2005-07-18 devnull void packetfree(Packet *p)
75 3aec33fe 2005-07-18 devnull uchar* packetheader(Packet *p, int n)
78 be7cbb4e 2005-07-12 devnull uchar* packetpeek(Packet *p, uchar *buf, int offset, int n)
81 3aec33fe 2005-07-18 devnull void packetprefix(Packet *p, uchar *buf, int n)
84 3aec33fe 2005-07-18 devnull void packetsha1(Packet *p, uchar sha1[20])
87 be7cbb4e 2005-07-12 devnull uint packetsize(Packet *p)
90 3aec33fe 2005-07-18 devnull Packet* packetsplit(Packet *p, int n)
93 3aec33fe 2005-07-18 devnull void packetstats(void)
96 3aec33fe 2005-07-18 devnull uchar* packettrailer(Packet *p, int n)
99 3aec33fe 2005-07-18 devnull int packettrim(Packet *p, int offset, int n)
100 be7cbb4e 2005-07-12 devnull .SH DESCRIPTION
102 be7cbb4e 2005-07-12 devnull .B Packet
103 3aec33fe 2005-07-18 devnull is a chain of blocks of data.
104 3aec33fe 2005-07-18 devnull Each block, called a fragment,
105 3aec33fe 2005-07-18 devnull is contiguous in memory, but the entire packet
106 be7cbb4e 2005-07-12 devnull may not be.
107 be7cbb4e 2005-07-12 devnull This representation helps avoid unnecessary memory copies.
109 be7cbb4e 2005-07-12 devnull .I Packetalloc
110 be7cbb4e 2005-07-12 devnull allocates an empty packet.
112 be7cbb4e 2005-07-12 devnull .I Packetappend
113 be7cbb4e 2005-07-12 devnull appends the
115 be7cbb4e 2005-07-12 devnull bytes at
117 be7cbb4e 2005-07-12 devnull to the end of
120 be7cbb4e 2005-07-12 devnull .I Packetasize
121 be7cbb4e 2005-07-12 devnull returns the number of data bytes allocated to
123 be7cbb4e 2005-07-12 devnull This may be larger than the number of bytes stored
126 3aec33fe 2005-07-18 devnull because fragments may not be filled completely.
128 be7cbb4e 2005-07-12 devnull .I Packetcmp
129 be7cbb4e 2005-07-12 devnull compares the data sections of two packets as
130 be7cbb4e 2005-07-12 devnull .I memcmp
132 be7cbb4e 2005-07-12 devnull .IR memory (3))
135 be7cbb4e 2005-07-12 devnull .I Packetconcat
136 be7cbb4e 2005-07-12 devnull removes all data from
138 be7cbb4e 2005-07-12 devnull appending it to
141 be7cbb4e 2005-07-12 devnull .I Packetconsume
144 be7cbb4e 2005-07-12 devnull bytes from the beginning of
146 be7cbb4e 2005-07-12 devnull storing them into
147 be7cbb4e 2005-07-12 devnull .IR buf .
149 be7cbb4e 2005-07-12 devnull .I Packetcopy
152 be7cbb4e 2005-07-12 devnull bytes at
153 be7cbb4e 2005-07-12 devnull .I offset
157 be7cbb4e 2005-07-12 devnull .IR buf .
159 be7cbb4e 2005-07-12 devnull .I Packetdup
160 be7cbb4e 2005-07-12 devnull creates a new packet initialized with
162 be7cbb4e 2005-07-12 devnull bytes from
163 be7cbb4e 2005-07-12 devnull .I offset
167 be7cbb4e 2005-07-12 devnull .I Packetforeign
168 be7cbb4e 2005-07-12 devnull allocates a packet containing `foreign' data: the
170 be7cbb4e 2005-07-12 devnull bytes pointed to by
171 be7cbb4e 2005-07-12 devnull .IR buf .
172 be7cbb4e 2005-07-12 devnull Once the bytes are no longer needed, they are freed by calling
173 be7cbb4e 2005-07-12 devnull .IB free ( a )\fR.
175 be7cbb4e 2005-07-12 devnull .I Packetfragments
176 be7cbb4e 2005-07-12 devnull initializes up to
180 be7cbb4e 2005-07-12 devnull structures with pointers to the data in
182 be7cbb4e 2005-07-12 devnull starting at
183 be7cbb4e 2005-07-12 devnull .IR offset .
184 be7cbb4e 2005-07-12 devnull It returns the total number of bytes represented
185 be7cbb4e 2005-07-12 devnull by the returned structures.
186 be7cbb4e 2005-07-12 devnull .I Packetfragments
187 be7cbb4e 2005-07-12 devnull initializes any unused
189 be7cbb4e 2005-07-12 devnull structures with nil pointer and zero length.
191 be7cbb4e 2005-07-12 devnull .I Packetfree
192 be7cbb4e 2005-07-12 devnull frees the packet
195 be7cbb4e 2005-07-12 devnull .I Packetheader
196 be7cbb4e 2005-07-12 devnull returns a pointer to the first
198 be7cbb4e 2005-07-12 devnull bytes of
200 be7cbb4e 2005-07-12 devnull making them contiguous in memory
201 be7cbb4e 2005-07-12 devnull if necessary.
203 be7cbb4e 2005-07-12 devnull .I Packetpeek
204 be7cbb4e 2005-07-12 devnull returns a pointer to the
206 be7cbb4e 2005-07-12 devnull bytes at
207 be7cbb4e 2005-07-12 devnull .I offset
210 be7cbb4e 2005-07-12 devnull If the requested bytes are already stored contiguously in memory,
211 be7cbb4e 2005-07-12 devnull the returned pointer points at the internal data storage for
213 be7cbb4e 2005-07-12 devnull Otherwise, the bytes are copied into
214 be7cbb4e 2005-07-12 devnull .IR buf ,
216 be7cbb4e 2005-07-12 devnull .I packetpeek
218 be7cbb4e 2005-07-12 devnull .IR buf .
220 be7cbb4e 2005-07-12 devnull .I Packetprefix
221 be7cbb4e 2005-07-12 devnull inserts a copy of the
223 be7cbb4e 2005-07-12 devnull bytes at
225 be7cbb4e 2005-07-12 devnull at the beginning of
228 be7cbb4e 2005-07-12 devnull .I Packetsha1
229 be7cbb4e 2005-07-12 devnull computes the SHA1 hash of the data contained in
232 be7cbb4e 2005-07-12 devnull .I Packetsize
233 3aec33fe 2005-07-18 devnull returns the length, in bytes, of the data contained in
236 be7cbb4e 2005-07-12 devnull .I Packetsplit
237 be7cbb4e 2005-07-12 devnull returns a new packet initialized with
239 be7cbb4e 2005-07-12 devnull bytes removed from the beginning of
242 be7cbb4e 2005-07-12 devnull .I Packetstats
243 be7cbb4e 2005-07-12 devnull prints run-time statistics to standard output.
245 be7cbb4e 2005-07-12 devnull .I Packettrailer
246 be7cbb4e 2005-07-12 devnull returns a pointer to the last
248 be7cbb4e 2005-07-12 devnull bytes of
250 be7cbb4e 2005-07-12 devnull making them contiguous in memory
251 be7cbb4e 2005-07-12 devnull if necessary.
253 be7cbb4e 2005-07-12 devnull .I Packettrim
254 b3d3a068 2006-06-26 devnull deletes all bytes from the packet
256 b3d3a068 2006-06-26 devnull except the
258 be7cbb4e 2005-07-12 devnull bytes at offset
259 b3d3a068 2006-06-26 devnull .IR offset .
260 be7cbb4e 2005-07-12 devnull .SH SOURCE
261 be7cbb4e 2005-07-12 devnull .B \*9/src/libventi
262 be7cbb4e 2005-07-12 devnull .SH SEE ALSO
263 be7cbb4e 2005-07-12 devnull .IR venti (3)
264 be7cbb4e 2005-07-12 devnull .SH DIAGNOSTICS
265 be7cbb4e 2005-07-12 devnull These functions return errors only when passed
266 be7cbb4e 2005-07-12 devnull invalid inputs,
267 be7cbb4e 2005-07-12 devnull .IR e.g. ,
268 be7cbb4e 2005-07-12 devnull requests for data at negative offsets or beyond the end of a packet.
270 be7cbb4e 2005-07-12 devnull Functions returning pointers return nil on error;
271 be7cbb4e 2005-07-12 devnull functions returning integers return \-1 on error.
272 be7cbb4e 2005-07-12 devnull Most functions returning integers return 0 on success.
273 be7cbb4e 2005-07-12 devnull The exceptions are
274 be7cbb4e 2005-07-12 devnull .I packetfragments
276 be7cbb4e 2005-07-12 devnull .IR packetcmp ,
277 be7cbb4e 2005-07-12 devnull whose return values are described above.
279 be7cbb4e 2005-07-12 devnull When these functions run out of memory, they
280 be7cbb4e 2005-07-12 devnull print error messages and call
281 be7cbb4e 2005-07-12 devnull .IR sysfatal .