4 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-a" />
5 <meta http-equiv="Content-Language" content="en" />
6 <meta name="description" content="SILC Secure Internet Live Conferencing" />
7 <meta name="keywords" content="SILC, secure, chat, protocol, cipher, encrypt, SKE" />
8 <meta content="INDEX, FOLLOW" name="ROBOTS" />
9 <style type="text/css">
11 body { color: #000000; background: #f0f0f0; font-family: Helvetica, Arial, Sans-serif; }
12 a:link { text-decoration: none; color: #2f488f; }
13 a:visited { text-decoration: none;color: #2f488f; }
14 a:active { text-decoration: none; color: #2f488f; }
19 <body topmargin="0" leftmargin="0" marginheight="0" marginwidth="0">
21 <table border="0" cellspacing="0" cellpadding="6" width="100%">
22 <tr valign="top" bgcolor="#dddddd">
23 <td><small>Copyright © 2001 - 2007 SILC Project<br />
24 <a href="http://silcnet.org">SILC Project Website</a></small></td>
25 <td align="right"><small>
26 <a href="index.html">SILC Toolkit Reference Manual</a><br />
27 <a href="toolkit_index.html">Index</a></small></td>
31 <table border="0" cellspacing="0" cellpadding="0" width="100%">
32 <tr bgcolor="#444444"><td><img src="space.gif" width="1" height="1"border="0" alt="" ></td></tr>
35 <table cellpadding="0" cellspacing="0" border="0">
38 <td width="200" bgcolor="#f0f0f0">
39 <img src="space.gif" width="1" height="1" border="0" alt="">
40 <table width="100%" cellpadding="2" cellspacing="2" border="0">
44 <!-- Template file for the big index that appears in the Toolkit reference
45 manual on the left side. With this file it is possible to add other than
46 automatically generated links to that list. -->
48 <a href="index.html"><img src="box.gif" border="0" alt="">SILC Toolkit Reference Manual</a><br />
51 <a href=silccryptlib.html><img src=box.gif border=0 alt=>SILC Crypto Library</a><br />
52 <a href=silcrng_intro.html><img src=box2.gif border=0 alt=>Introduction to SILC RNG</a><br />
53 <a href=silcrng.html><img src=box2.gif border=0 alt=>SILC RNG Interface</a><br />
54 <a href=silccipher.html><img src=box2.gif border=0 alt=>SILC Cipher API</a><br />
55 <a href=silcpkcs.html><img src=box2.gif border=0 alt=>SILC PKCS API</a><br />
56 <a href=silcpk.html><img src=box2.gif border=0 alt=>SILC Public Key API</a><br />
57 <a href=silcpkcs1.html><img src=box2.gif border=0 alt=>SILC PKCS #1 API</a><br />
58 <a href=silchash.html><img src=box2.gif border=0 alt=>SILC Hash Interface</a><br />
59 <a href=silchmac.html><img src=box2.gif border=0 alt=>SILC HMAC Interface</a><br />
60 <a href=silccorelib.html><img src=box.gif border=0 alt=>SILC Core Library</a><br />
61 <a href=silcauth.html><img src=box2.gif border=0 alt=>SILC Authentication Interface</a><br />
62 <a href=silcmessage.html><img src=box2.gif border=0 alt=>SILC Message Interface</a><br />
63 <a href=silcchannel.html><img src=box2.gif border=0 alt=>SILC Channel Interface</a><br />
64 <a href=silccommand.html><img src=box2.gif border=0 alt=>SILC Command Interface</a><br />
65 <a href=silcnotify.html><img src=box2.gif border=0 alt=>SILC Notify Interface</a><br />
66 <a href=silcstatus.html><img src=box2.gif border=0 alt=>SILC Status Types</a><br />
67 <a href=silcmode.html><img src=box2.gif border=0 alt=>SILC Modes</a><br />
68 <a href=silcid.html><img src=box2.gif border=0 alt=>SILC ID Interface</a><br />
69 <a href=silcargument.html><img src=box2.gif border=0 alt=>SILC Argument Interface</a><br />
70 <a href=silcattrs.html><img src=box2.gif border=0 alt=>SILC Attributes Interface</a><br />
71 <a href=silcpacket.html><img src=box2.gif border=0 alt=>Packet Engine Interface</a><br />
72 <a href=silcpubkey.html><img src=box2.gif border=0 alt=>SILC Public Key Payload Interface</a><br />
73 <a href=silcskelib.html><img src=box.gif border=0 alt=>SILC Key Exchange Library</a><br />
74 <a href=silcske.html><img src=box2.gif border=0 alt=>SILC SKE Interface</a><br />
75 <a href=silcconnauth.html><img src=box2.gif border=0 alt=>SILC Connection Authentication Interface</a><br />
76 <a href=silcvcardlib.html><img src=box.gif border=0 alt=>SILC VCard Library</a><br />
77 <a href=silcvcard.html><img src=box2.gif border=0 alt=>SILC VCard Interface</a><br />
78 <a href=silcmathlib.html><img src=box.gif border=0 alt=>SILC Math Library</a><br />
79 <a href=silcmp.html><img src=box2.gif border=0 alt=>SILC MP Interface</a><br />
80 <a href=silcmath.html><img src=box2.gif border=0 alt=>SILC Math Interface</a><br />
81 <a href=silcclientlib.html><img src=box.gif border=0 alt=>SILC Client Library</a><br />
82 <a href=silcclient_using.html><img src=box2.gif border=0 alt=>Using SILC Client Library Tutorial</a><br />
83 <a href=command_reply_args.html><img src=box2.gif border=0 alt=>Arguments for <b>command_reply</b> Client Operation</a><br />
84 <a href=silcstatus_args.html><img src=box2.gif border=0 alt=>SilcStatus Error Arguments in <b>command_reply</b> Client Operation</a><br />
85 <a href=notifyargs.html><img src=box2.gif border=0 alt=>Arguments for <b>notify</b> Client Operation</a><br />
86 <a href=silcclient_unicode.html><img src=box2.gif border=0 alt=>Unicode and UTF-8 Strings in Client Library</a><br />
87 <a href=silcclient.html><img src=box2.gif border=0 alt=>Client Library Interface Reference</a><br />
88 <a href=silcclient_entry.html><img src=box2.gif border=0 alt=>Client Entry Interface Reference</a><br />
89 <a href=silcasn1lib.html><img src=box.gif border=0 alt=>SILC ASN.1 Library</a><br />
90 <a href=silcasn1.html><img src=box2.gif border=0 alt=>SILC ASN.1 Interface</a><br />
91 <a href=silcber.html><img src=box2.gif border=0 alt=>SILC BER interface</a><br />
92 <a href=silchttplib.html><img src=box.gif border=0 alt=>SILC HTTP Library</a><br />
93 <a href=silchttpserver.html><img src=box2.gif border=0 alt=>SILC HTTP Server Interface</a><br />
94 <a href=silchttpphp.html><img src=box2.gif border=0 alt=>SILC HTTP PHP Translator</a><br />
95 <a href=silcutillib.html><img src=box.gif border=0 alt=>SILC Utility Library</a><br />
96 <a href=silctypes.html><img src=box2.gif border=0 alt=>Basic Types and Definitions</a><br />
97 <a href=silcbuffer.html><img src=box2.gif border=0 alt=>Data Buffer Interface</a><br />
98 <a href=silcbuffmt.html><img src=box2.gif border=0 alt=>Data Buffer Format Interface</a><br />
99 <a href=silchashtable.html><img src=box2.gif border=0 alt=>Hash Table Interface</a><br />
100 <a href=silcmemory.html><img src=box2.gif border=0 alt=>Memory Allocation Interface</a><br />
101 <a href=silcstack.html><img src=box2.gif border=0 alt=>Data Stack (memory pool) Interface</a><br />
102 <a href=silcfsm.html><img src=box2.gif border=0 alt=>Finite State Machine Interface</a><br />
103 <a href=silcthread.html><img src=box2.gif border=0 alt=>Thread Interface</a><br />
104 <a href=silcmutex.html><img src=box2.gif border=0 alt=>Mutual Exclusion Lock Interface</a><br />
105 <a href=silccond.html><img src=box2.gif border=0 alt=>Condition Variable Interface</a><br />
106 <a href=silcatomic.html><img src=box2.gif border=0 alt=>Atomic Operations Interface</a><br />
107 <a href=silcnet.html><img src=box2.gif border=0 alt=>Network (TCP and UDP) Interface</a><br />
108 <a href=silcschedule.html><img src=box2.gif border=0 alt=>Scheduler Interface</a><br />
109 <a href=silcasync.html><img src=box2.gif border=0 alt=>Asynchronous Operation Interface</a><br />
110 <a href=silcstream.html><img src=box2.gif border=0 alt=>Abstract Stream Interface</a><br />
111 <a href=silcsocketstream.html><img src=box2.gif border=0 alt=>Socket Stream Interface</a><br />
112 <a href=silcfdstream.html><img src=box2.gif border=0 alt=>File Descriptor Stream Interface</a><br />
113 <a href=silcfileutil.html><img src=box2.gif border=0 alt=>File Utility Functions</a><br />
114 <a href=silcstrutil.html><img src=box2.gif border=0 alt=>String Utility Interface</a><br />
115 <a href=silcsnprintf.html><img src=box2.gif border=0 alt=>Snprintf Interface</a><br />
116 <a href=silcutf8.html><img src=box2.gif border=0 alt=>UTF-8 String Interface</a><br />
117 <a href=silcstringprep.html><img src=box2.gif border=0 alt=>Stringprep Interface</a><br />
118 <a href=silcutil.html><img src=box2.gif border=0 alt=>Utility Functions</a><br />
119 <a href=silclist.html><img src=box2.gif border=0 alt=>List Interface</a><br />
120 <a href=silcdlist.html><img src=box2.gif border=0 alt=>Dynamic List Interface</a><br />
121 <a href=silcmime.html><img src=box2.gif border=0 alt=>MIME Interface</a><br />
122 <a href=silctime.html><img src=box2.gif border=0 alt=>Time Utility Functions</a><br />
123 <a href=silclog.html><img src=box2.gif border=0 alt=>Logging Interface</a><br />
124 <a href=silcconfig.html><img src=box2.gif border=0 alt=>Config File Interface</a><br />
125 <a href=silcskrlib.html><img src=box.gif border=0 alt=>SILC Key Repository Library</a><br />
126 <a href=silcskr.html><img src=box2.gif border=0 alt=>SILC SKR Interface</a><br />
127 <a href=silcaputillib.html><img src=box.gif border=0 alt=>SILC Application Utility Library</a><br />
128 <a href=silcapputil.html><img src=box2.gif border=0 alt=>SILC Application Utilities</a><br />
129 <a href=silcidcache.html><img src=box2.gif border=0 alt=>SILC ID Cache Interface</a><br />
130 <a href=silcsftplib.html><img src=box.gif border=0 alt=>SILC SFTP Library</a><br />
131 <a href=silcsftp.html><img src=box2.gif border=0 alt=>SILC SFTP Interface</a><br />
132 <a href=silcsftp_fs.html><img src=box2.gif border=0 alt=>SFTP Filesystems Interface</a><br />
135 <b>Resource Links</b>
137 <a href="http://silcnet.org"><img src="box.gif" border="0" alt="">SILC Project Website</a><br />
138 <a href="http://silcnet.org/support/documentation/"><img src="box.gif" border="0" alt="">SILC Protocol Documentation</a><br />
139 <a href="http://silcnet.org/support/documentation/wp/"><img src="box.gif" border="0" alt="">SILC White Paper</a><br />
140 <a href="http://silcnet.org/support/faq/"><img src="box.gif" border="0" alt="">SILC FAQs</a><br />
143 <br /><br /><br /><br />
148 <td bgcolor="#cccccc" background="dot.gif">
149 <img src="space.gif" width="1" height="1" border="0" alt=""></td>
151 <td width="720" bgcolor="#ffffff">
152 <img src="space.gif" width="1" height="1" border="0" alt="">
153 <table cellpadding="2" cellspacing="6" width="100%">
154 <tr><td valign="top">
157 <FONT SIZE="+2" COLOR="#000055"><B>Structure <A NAME="SilcBuffer">SilcBuffer</A></FONT></B><BR><BR>
160 <FONT COLOR="#000055">NAME
162 <PRE><FONT FACE="courier" size="3">
163 typedef struct { ... } *<B>SilcBuffer</B>, SilcBufferStruct;
165 </FONT></PRE><FONT SIZE="+1"><B>
166 <FONT COLOR="#000055">DESCRIPTION
168 <PRE><FONT FACE="Helvetiva,Arial,Sans-serif">
169 SILC Buffer object. Following short description of the fields
172 </FONT></PRE><FONT SIZE="+1"><B>
173 <FONT COLOR="#000055">EXAMPLE
175 <PRE><FONT FACE="courier" size="3">
178 Head of the allocated buffer. This is the start of the allocated
179 data area and remains as same throughout the lifetime of the buffer.
180 However, the end of the head area or the start of the currently valid
181 data area is variable.
183 --------------------------------
184 | head | data | tail |
185 --------------------------------
188 Current head section in the buffer is sb->data - sb->head.
192 Currently valid data area. This is the start of the currently valid
193 main data area. The data area is variable in all directions.
195 --------------------------------
196 | head | data | tail |
197 --------------------------------
200 Current valid data area in the buffer is sb->tail - sb->data.
204 Tail of the buffer. This is the end of the currently valid data area
205 or start of the tail area. The start of the tail area is variable.
207 --------------------------------
208 | head | data | tail |
209 --------------------------------
212 Current tail section in the buffer is sb->end - sb->tail.
216 End of the allocated buffer. This is the end of the allocated data
217 area and remains as same throughout the lifetime of the buffer.
218 Usually this field is not needed except when checking the size
221 --------------------------------
222 | head | data | tail |
223 --------------------------------
226 Length of the entire buffer is (ie. truelen) sb->end - sb->head.
228 Currently valid data area is considered to be the main data area in
229 the buffer. However, the entire buffer is of course valid data and can
230 be used as such. Usually head section of the buffer includes different
231 kind of headers or similar. Data section includes the main data of
232 the buffer. Tail section can be seen as a reserve space of the data
233 section. Tail section can be pulled towards end, and thus the data
234 section becomes larger.
236 SILC Buffer is not thread-safe. If the same <B>SilcBuffer</B> context must be
237 used in multithreaded environment concurrency control must be employed.
239 </FONT></PRE><FONT SIZE="+1"><B>
240 <FONT COLOR="#000055">SOURCE
242 <PRE><FONT FACE="courier" size="3"> typedef struct SilcBufferObject {
247 } *<B>SilcBuffer</B>, SilcBufferStruct;</FONT></PRE>
248 <br /><br /><br /><br />
253 <td bgcolor="#cccccc" background="dot.gif">
254 <img src="space.gif" width="1" height="1" border="0" alt=""></td>
256 <td width="180" bgcolor="#f0f0f0">
257 <img src="space.gif" width="1" height="1" border="0" alt="">
258 <table width="100%" cellpadding="4" cellspacing="0">
259 <tr valign="top"><td>
261 <font face="Helvetica,Arial,Sans-serif" size="1">
262 <A HREF="silcbuffer.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SILC Buffer Interface</A><BR>
263 <A HREF="silcbuffer-SilcBuffer.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcBuffer</A><BR>
264 <A HREF="silcbuffer-silc_buffer_data.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_data</A><BR>
265 <A HREF="silcbuffer-silc_buffer_datalen.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_datalen</A><BR>
266 <A HREF="silcbuffer-silc_buffer_truelen.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_truelen</A><BR>
267 <A HREF="silcbuffer-silc_buffer_len.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_len</A><BR>
268 <A HREF="silcbuffer-silc_buffer_headlen.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_headlen</A><BR>
269 <A HREF="silcbuffer-silc_buffer_taillen.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_taillen</A><BR>
270 <A HREF="silcbuffer-silc_buffer_alloc.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_alloc</A><BR>
271 <A HREF="silcbuffer-silc_buffer_free.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_free</A><BR>
272 <A HREF="silcbuffer-silc_buffer_steal.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_steal</A><BR>
273 <A HREF="silcbuffer-silc_buffer_purge.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_purge</A><BR>
274 <A HREF="silcbuffer-silc_buffer_set.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_set</A><BR>
275 <A HREF="silcbuffer-silc_buffer_pull.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_pull</A><BR>
276 <A HREF="silcbuffer-silc_buffer_push.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_push</A><BR>
277 <A HREF="silcbuffer-silc_buffer_pull_tail.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_pull_tail</A><BR>
278 <A HREF="silcbuffer-silc_buffer_push_tail.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_push_tail</A><BR>
279 <A HREF="silcbuffer-silc_buffer_put_head.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_put_head</A><BR>
280 <A HREF="silcbuffer-silc_buffer_put.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_put</A><BR>
281 <A HREF="silcbuffer-silc_buffer_put_tail.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_put_tail</A><BR>
282 <A HREF="silcbuffer-silc_buffer_alloc_size.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_alloc_size</A><BR>
283 <A HREF="silcbuffer-silc_buffer_reset.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_reset</A><BR>
284 <A HREF="silcbuffer-silc_buffer_clear.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_clear</A><BR>
285 <A HREF="silcbuffer-silc_buffer_start.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_start</A><BR>
286 <A HREF="silcbuffer-silc_buffer_end.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_end</A><BR>
287 <A HREF="silcbuffer-silc_buffer_copy.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_copy</A><BR>
288 <A HREF="silcbuffer-silc_buffer_clone.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_clone</A><BR>
289 <A HREF="silcbuffer-silc_buffer_realloc.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_realloc</A><BR>
290 <A HREF="silcbuffer-silc_buffer_realloc_size.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_realloc_size</A><BR>
291 <A HREF="silcbuffer-silc_buffer_enlarge.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_enlarge</A><BR>
292 <A HREF="silcbuffer-silc_buffer_salloc.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_salloc</A><BR>
293 <A HREF="silcbuffer-silc_buffer_salloc_size.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_salloc_size</A><BR>
294 <A HREF="silcbuffer-silc_buffer_srealloc.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_srealloc</A><BR>
295 <A HREF="silcbuffer-silc_buffer_srealloc_size.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_srealloc_size</A><BR>
296 <A HREF="silcbuffer-silc_buffer_senlarge.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_senlarge</A><BR>
297 <A HREF="silcbuffer-silc_buffer_scopy.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_scopy</A><BR>
298 <A HREF="silcbuffer-silc_buffer_sclone.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_buffer_sclone</A><BR>
301 <br /><br /><br /><br />
308 <table border="0" cellspacing="0" cellpadding="0" width="100%">
309 <tr bgcolor="#444444"><td><img src="space.gif" width="1" height="1"border="0" alt="" ></td></tr>
311 <table border="0" cellspacing="0" cellpadding="6" width="100%">
312 <tr valign="top" bgcolor="#dddddd">
313 <td><small>Copyright © 2001 - 2007 SILC Project<br />
314 <a href="http://silcnet.org">SILC Project Website</a></small></td>
315 <td align="right"><small>
316 <a href="index.html">SILC Toolkit Reference Manual</a><br />
317 <a href="toolkit_index.html">Index</a></small></td>