updates.
[website.git] / docs / toolkit / manual / silcclient-SilcClientOperations.html
1
2 <html>
3 <head>
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">
10   <!--
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; }
15   -->
16  </style>
17 </head>
18
19 <body topmargin="0" leftmargin="0" marginheight="0" marginwidth="0">
20
21 <table border="0" cellspacing="0" cellpadding="6" width="100%">
22  <tr valign="top" bgcolor="#dddddd">
23   <td><small>Copyright &copy; 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>
28    </small></td>
29  </tr>
30 </table>
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>
33 </table>
34
35 <table cellpadding="0" cellspacing="0" border="0">
36  <tr valign="top">
37
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">
41     <tr valign="top"><td>
42 <br />
43 <small>
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. -->
47
48 <a href="index.html"><img src="box.gif" border="0" alt="">SILC Toolkit Reference Manual</a><br />
49
50
51 <a href=silccryptlib.html><img src=box.gif border=0 alt=>SILC Crypto Library</a><br />
52 &nbsp;&nbsp;&nbsp; <a href=silcrng_intro.html><img src=box2.gif border=0 alt=>Introduction to SILC RNG</a><br />
53 &nbsp;&nbsp;&nbsp; <a href=silcrng.html><img src=box2.gif border=0 alt=>SILC RNG Interface</a><br />
54 &nbsp;&nbsp;&nbsp; <a href=silccipher.html><img src=box2.gif border=0 alt=>SILC Cipher API</a><br />
55 &nbsp;&nbsp;&nbsp; <a href=silcpkcs.html><img src=box2.gif border=0 alt=>SILC PKCS API</a><br />
56 &nbsp;&nbsp;&nbsp; <a href=silcpk.html><img src=box2.gif border=0 alt=>SILC Public Key API</a><br />
57 &nbsp;&nbsp;&nbsp; <a href=silcpkcs1.html><img src=box2.gif border=0 alt=>SILC PKCS #1 API</a><br />
58 &nbsp;&nbsp;&nbsp; <a href=silchash.html><img src=box2.gif border=0 alt=>SILC Hash Interface</a><br />
59 &nbsp;&nbsp;&nbsp; <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 &nbsp;&nbsp;&nbsp; <a href=silcauth.html><img src=box2.gif border=0 alt=>SILC Authentication Interface</a><br />
62 &nbsp;&nbsp;&nbsp; <a href=silcmessage.html><img src=box2.gif border=0 alt=>SILC Message Interface</a><br />
63 &nbsp;&nbsp;&nbsp; <a href=silcchannel.html><img src=box2.gif border=0 alt=>SILC Channel Interface</a><br />
64 &nbsp;&nbsp;&nbsp; <a href=silccommand.html><img src=box2.gif border=0 alt=>SILC Command Interface</a><br />
65 &nbsp;&nbsp;&nbsp; <a href=silcnotify.html><img src=box2.gif border=0 alt=>SILC Notify Interface</a><br />
66 &nbsp;&nbsp;&nbsp; <a href=silcstatus.html><img src=box2.gif border=0 alt=>SILC Status Types</a><br />
67 &nbsp;&nbsp;&nbsp; <a href=silcmode.html><img src=box2.gif border=0 alt=>SILC Modes</a><br />
68 &nbsp;&nbsp;&nbsp; <a href=silcid.html><img src=box2.gif border=0 alt=>SILC ID Interface</a><br />
69 &nbsp;&nbsp;&nbsp; <a href=silcargument.html><img src=box2.gif border=0 alt=>SILC Argument Interface</a><br />
70 &nbsp;&nbsp;&nbsp; <a href=silcattrs.html><img src=box2.gif border=0 alt=>SILC Attributes Interface</a><br />
71 &nbsp;&nbsp;&nbsp; <a href=silcpacket.html><img src=box2.gif border=0 alt=>Packet Engine Interface</a><br />
72 &nbsp;&nbsp;&nbsp; <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 &nbsp;&nbsp;&nbsp; <a href=silcske.html><img src=box2.gif border=0 alt=>SILC SKE Interface</a><br />
75 &nbsp;&nbsp;&nbsp; <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 &nbsp;&nbsp;&nbsp; <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 &nbsp;&nbsp;&nbsp; <a href=silcmp.html><img src=box2.gif border=0 alt=>SILC MP Interface</a><br />
80 &nbsp;&nbsp;&nbsp; <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 &nbsp;&nbsp;&nbsp; <a href=silcclient_using.html><img src=box2.gif border=0 alt=>Using SILC Client Library Tutorial</a><br />
83 &nbsp;&nbsp;&nbsp; <a href=command_reply_args.html><img src=box2.gif border=0 alt=>Arguments for <b>command_reply</b> Client Operation</a><br />
84 &nbsp;&nbsp;&nbsp; <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 &nbsp;&nbsp;&nbsp; <a href=notifyargs.html><img src=box2.gif border=0 alt=>Arguments for <b>notify</b> Client Operation</a><br />
86 &nbsp;&nbsp;&nbsp; <a href=silcclient_unicode.html><img src=box2.gif border=0 alt=>Unicode and UTF-8 Strings in Client Library</a><br />
87 &nbsp;&nbsp;&nbsp; <a href=silcclient.html><img src=box2.gif border=0 alt=>Client Library Interface Reference</a><br />
88 &nbsp;&nbsp;&nbsp; <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 &nbsp;&nbsp;&nbsp; <a href=silcasn1.html><img src=box2.gif border=0 alt=>SILC ASN.1 Interface</a><br />
91 &nbsp;&nbsp;&nbsp; <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 &nbsp;&nbsp;&nbsp; <a href=silchttpserver.html><img src=box2.gif border=0 alt=>SILC HTTP Server Interface</a><br />
94 &nbsp;&nbsp;&nbsp; <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 &nbsp;&nbsp;&nbsp; <a href=silctypes.html><img src=box2.gif border=0 alt=>Basic Types and Definitions</a><br />
97 &nbsp;&nbsp;&nbsp; <a href=silcbuffer.html><img src=box2.gif border=0 alt=>Data Buffer Interface</a><br />
98 &nbsp;&nbsp;&nbsp; <a href=silcbuffmt.html><img src=box2.gif border=0 alt=>Data Buffer Format Interface</a><br />
99 &nbsp;&nbsp;&nbsp; <a href=silchashtable.html><img src=box2.gif border=0 alt=>Hash Table Interface</a><br />
100 &nbsp;&nbsp;&nbsp; <a href=silcmemory.html><img src=box2.gif border=0 alt=>Memory Allocation Interface</a><br />
101 &nbsp;&nbsp;&nbsp; <a href=silcstack.html><img src=box2.gif border=0 alt=>Data Stack (memory pool) Interface</a><br />
102 &nbsp;&nbsp;&nbsp; <a href=silcfsm.html><img src=box2.gif border=0 alt=>Finite State Machine Interface</a><br />
103 &nbsp;&nbsp;&nbsp; <a href=silcthread.html><img src=box2.gif border=0 alt=>Thread Interface</a><br />
104 &nbsp;&nbsp;&nbsp; <a href=silcmutex.html><img src=box2.gif border=0 alt=>Mutual Exclusion Lock Interface</a><br />
105 &nbsp;&nbsp;&nbsp; <a href=silccond.html><img src=box2.gif border=0 alt=>Condition Variable Interface</a><br />
106 &nbsp;&nbsp;&nbsp; <a href=silcatomic.html><img src=box2.gif border=0 alt=>Atomic Operations Interface</a><br />
107 &nbsp;&nbsp;&nbsp; <a href=silcnet.html><img src=box2.gif border=0 alt=>Network (TCP and UDP) Interface</a><br />
108 &nbsp;&nbsp;&nbsp; <a href=silcschedule.html><img src=box2.gif border=0 alt=>Scheduler Interface</a><br />
109 &nbsp;&nbsp;&nbsp; <a href=silcasync.html><img src=box2.gif border=0 alt=>Asynchronous Operation Interface</a><br />
110 &nbsp;&nbsp;&nbsp; <a href=silcstream.html><img src=box2.gif border=0 alt=>Abstract Stream Interface</a><br />
111 &nbsp;&nbsp;&nbsp; <a href=silcsocketstream.html><img src=box2.gif border=0 alt=>Socket Stream Interface</a><br />
112 &nbsp;&nbsp;&nbsp; <a href=silcfdstream.html><img src=box2.gif border=0 alt=>File Descriptor Stream Interface</a><br />
113 &nbsp;&nbsp;&nbsp; <a href=silcfileutil.html><img src=box2.gif border=0 alt=>File Utility Functions</a><br />
114 &nbsp;&nbsp;&nbsp; <a href=silcstrutil.html><img src=box2.gif border=0 alt=>String Utility Interface</a><br />
115 &nbsp;&nbsp;&nbsp; <a href=silcsnprintf.html><img src=box2.gif border=0 alt=>Snprintf Interface</a><br />
116 &nbsp;&nbsp;&nbsp; <a href=silcutf8.html><img src=box2.gif border=0 alt=>UTF-8 String Interface</a><br />
117 &nbsp;&nbsp;&nbsp; <a href=silcstringprep.html><img src=box2.gif border=0 alt=>Stringprep Interface</a><br />
118 &nbsp;&nbsp;&nbsp; <a href=silcutil.html><img src=box2.gif border=0 alt=>Utility Functions</a><br />
119 &nbsp;&nbsp;&nbsp; <a href=silclist.html><img src=box2.gif border=0 alt=>List Interface</a><br />
120 &nbsp;&nbsp;&nbsp; <a href=silcdlist.html><img src=box2.gif border=0 alt=>Dynamic List Interface</a><br />
121 &nbsp;&nbsp;&nbsp; <a href=silcmime.html><img src=box2.gif border=0 alt=>MIME Interface</a><br />
122 &nbsp;&nbsp;&nbsp; <a href=silctime.html><img src=box2.gif border=0 alt=>Time Utility Functions</a><br />
123 &nbsp;&nbsp;&nbsp; <a href=silclog.html><img src=box2.gif border=0 alt=>Logging Interface</a><br />
124 &nbsp;&nbsp;&nbsp; <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 &nbsp;&nbsp;&nbsp; <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 &nbsp;&nbsp;&nbsp; <a href=silcapputil.html><img src=box2.gif border=0 alt=>SILC Application Utilities</a><br />
129 &nbsp;&nbsp;&nbsp; <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 &nbsp;&nbsp;&nbsp; <a href=silcsftp.html><img src=box2.gif border=0 alt=>SILC SFTP Interface</a><br />
132 &nbsp;&nbsp;&nbsp; <a href=silcsftp_fs.html><img src=box2.gif border=0 alt=>SFTP Filesystems Interface</a><br />
133
134 <br />
135 <b>Resource Links</b>
136 <br />
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 />
141
142 </small>
143 <br /><br /><br /><br />
144     </td></tr>
145    </table>
146   </td>
147
148   <td bgcolor="#cccccc" background="dot.gif">
149    <img src="space.gif" width="1" height="1" border="0" alt=""></td>
150
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">
155 <br />
156
157 <FONT SIZE="+2" COLOR="#000055"><B>Structure <A NAME="SilcClientOperations">SilcClientOperations</A></FONT></B><BR><BR>
158
159 <FONT SIZE="+1"><B>
160 <FONT COLOR="#000055">NAME
161 </FONT></B></FONT>
162 <PRE><FONT FACE="courier" size="3">
163     typedef struct { ... } <B>SilcClientOperations</B>;
164
165 </FONT></PRE><FONT SIZE="+1"><B>
166 <FONT COLOR="#000055">DESCRIPTION
167 </FONT></B></FONT>
168 <PRE><FONT FACE="Helvetiva,Arial,Sans-serif">
169     SILC Client Operations. These must be implemented by the application.
170     The Client library may call any of these routines at any time.  The
171     routines are used to deliver certain information to the application
172     or from the application to the client library.
173
174 </FONT></PRE><FONT SIZE="+1"><B>
175 <FONT COLOR="#000055">SOURCE
176 </FONT></B></FONT>
177 <PRE><FONT FACE="courier" size="3">    typedef struct SilcClientOperationsStruct {
178       /* Message sent to the application by library. `conn' associates the
179          message to a specific connection.  `conn', however, may be NULL.
180          The `type' indicates the type of the message sent by the library.
181          The application can for example filter the message according the
182          type.  The variable argument list is arguments to the formatted
183          message `msg'.  A <A HREF="silcclient_entry-SilcClientEntry.html">SilcClientEntry</A>, <A HREF="silcclient_entry-SilcChannelEntry.html">SilcChannelEntry</A> or <A HREF="silcclient_entry-SilcServerEntry.html">SilcServerEntry</A>
184          can be associated with the message inside the `conn' by the library,
185          and application may use it to better target the message. */
186       void (*say)(<A HREF="silcclient-SilcClient.html">SilcClient</A> client, <A HREF="silcclient-SilcClientConnection.html">SilcClientConnection</A> conn,
187                   <A HREF="silcclient-SilcClientMessageType.html">SilcClientMessageType</A> type, char *msg, ...);
188     
189       /* Message for a channel. The `sender' is the sender of the message
190          The `channel' is the channel. The `message' is the message.  Note
191          that `message' maybe NULL.  The `flags' indicates message flags
192          and it is used to determine how the message can be interpreted
193          (like it may tell the message is multimedia message).  The `payload'
194          may be used to retrieve all the details of the message. */
195       void (*channel_message)(<A HREF="silcclient-SilcClient.html">SilcClient</A> client, <A HREF="silcclient-SilcClientConnection.html">SilcClientConnection</A> conn,
196                               <A HREF="silcclient_entry-SilcClientEntry.html">SilcClientEntry</A> sender, <A HREF="silcclient_entry-SilcChannelEntry.html">SilcChannelEntry</A> channel,
197                               <A HREF="silcmessage-SilcMessagePayload.html">SilcMessagePayload</A> payload,
198                               <A HREF="silcclient-SilcChannelPrivateKey.html">SilcChannelPrivateKey</A> key, <A HREF="silcmessage-SilcMessageFlags.html">SilcMessageFlags</A> flags,
199                               const unsigned char *message,
200                               <A HREF="silctypes-SilcUInt32.html">SilcUInt32</A> message_len);
201     
202       /* Private message to the client. The `sender' is the sender of the
203          message. The message is `message'and maybe NULL.  The `flags'
204          indicates message flags  and it is used to determine how the message
205          can be interpreted (like it may tell the message is multimedia
206          message).  The `payload' may be used to retrieve all the details of
207          the message. */
208       void (*private_message)(<A HREF="silcclient-SilcClient.html">SilcClient</A> client, <A HREF="silcclient-SilcClientConnection.html">SilcClientConnection</A> conn,
209                               <A HREF="silcclient_entry-SilcClientEntry.html">SilcClientEntry</A> sender, <A HREF="silcmessage-SilcMessagePayload.html">SilcMessagePayload</A> payload,
210                               <A HREF="silcmessage-SilcMessageFlags.html">SilcMessageFlags</A> flags, const unsigned char *message,
211                               <A HREF="silctypes-SilcUInt32.html">SilcUInt32</A> message_len);
212     
213       /* Notify message to the client.  The arguments are notify `type' specific.
214          See separate documentation in the Toolkit Reference Manual for the notify
215          arguments. */
216       void (*notify)(<A HREF="silcclient-SilcClient.html">SilcClient</A> client, <A HREF="silcclient-SilcClientConnection.html">SilcClientConnection</A> conn,
217                      <A HREF="silcnotify-SilcNotifyType.html">SilcNotifyType</A> type, ...);
218     
219       /* Command handler. This function is called always after application has
220          called a command.  It will be called to indicate that the command
221          was processed.  It will also be called if error occurs while processing
222          the command.  The `success' indicates whether the command was sent
223          or if error occurred.  The `status' indicates the actual error.
224          The `argc' and `argv' are the command line arguments sent to the
225          command by application.  Note that, this is not reply to the command
226          from server, this is merely and indication to application that the
227          command was processed. */
228       void (*command)(<A HREF="silcclient-SilcClient.html">SilcClient</A> client, <A HREF="silcclient-SilcClientConnection.html">SilcClientConnection</A> conn,
229                       <A HREF="silctypes-SilcBool.html">SilcBool</A> success, <A HREF="silccommand-SilcCommand.html">SilcCommand</A> command, <A HREF="silcstatus-SilcStatus.html">SilcStatus</A> status,
230                       <A HREF="silctypes-SilcUInt32.html">SilcUInt32</A> argc, unsigned char **argv);
231     
232       /* Command reply handler.  Delivers a reply to command that was sent
233          earlier.  The `conn' is the associated client connection.  The `command'
234          indicates the command reply type.  If the `status' other than
235          SILC_STATUS_OK an error occurred.  In this case the `error' will indicate
236          the error.  It is possible to receive list of command replies and list
237          of errors.  In this case the `status' will indicate it is an list entry
238          (the `status' is SILC_STATUS_LIST_START, SILC_STATUS_LIST_ITEM and/or
239          SILC_STATUS_LIST_END).
240     
241          The arguments received in `ap' are command specific.  See a separate
242          documentation in the Toolkit Reference Manual for the command reply
243          arguments. */
244       void (*command_reply)(<A HREF="silcclient-SilcClient.html">SilcClient</A> client, <A HREF="silcclient-SilcClientConnection.html">SilcClientConnection</A> conn,
245                             <A HREF="silccommand-SilcCommand.html">SilcCommand</A> command, <A HREF="silcstatus-SilcStatus.html">SilcStatus</A> status,
246                             <A HREF="silcstatus-SilcStatus.html">SilcStatus</A> error, va_list ap);
247     
248       /* Find authentication method and authentication data by hostname and
249          port. The hostname may be IP address as well. The `auth_method' is
250          the authentication method the remote connection requires.  It is
251          however possible that remote accepts also some other authentication
252          method.  Application should use the method that may have been
253          configured for this connection.  If none has been configured it should
254          use the required `auth_method'.  If the `auth_method' is
255          SILC_AUTH_NONE, server does not require any authentication or the
256          required authentication method is not known.  The `completion'
257          callback must be called to deliver the chosen authentication method
258          and data. The `conn' may be NULL. */
259       void (*get_auth_method)(<A HREF="silcclient-SilcClient.html">SilcClient</A> client, <A HREF="silcclient-SilcClientConnection.html">SilcClientConnection</A> conn,
260                               char *hostname, <A HREF="silctypes-SilcUInt16.html">SilcUInt16</A> port,
261                               <A HREF="silcauth-SilcAuthMethod.html">SilcAuthMethod</A> auth_method,
262                               <A HREF="silcclient-SilcGetAuthMeth.html">SilcGetAuthMeth</A> completion, void *context);
263     
264       /* Called to verify received public key. The `conn_type' indicates which
265          entity (server or client) has sent the public key. If user decides to
266          trust the key the application may save the key as trusted public key for
267          later use. The `completion' must be called after the public key has
268          been verified. */
269       void (*verify_public_key)(<A HREF="silcclient-SilcClient.html">SilcClient</A> client, <A HREF="silcclient-SilcClientConnection.html">SilcClientConnection</A> conn,
270                                 <A HREF="silcconnauth-SilcConnectionType.html">SilcConnectionType</A> conn_type,
271                                 <A HREF="silcpkcs-SilcPublicKey.html">SilcPublicKey</A> public_key,
272                                 <A HREF="silcclient-SilcVerifyPublicKey.html">SilcVerifyPublicKey</A> completion, void *context);
273     
274       /* Ask from end user a passphrase or a password. The passphrase is
275          returned to the library by calling the `completion' callback with
276          the `context'. The returned passphrase SHOULD be in UTF-8 encoded,
277          if not then the library will attempt to encode. */
278       void (*ask_passphrase)(<A HREF="silcclient-SilcClient.html">SilcClient</A> client, <A HREF="silcclient-SilcClientConnection.html">SilcClientConnection</A> conn,
279                              <A HREF="silcclient-SilcAskPassphrase.html">SilcAskPassphrase</A> completion, void *context);
280     
281       /* Called to indicate that incoming key agreement request has been
282          received.  If the application wants to perform key agreement it may
283          call <A HREF="silcclient-silc_client_perform_key_agreement.html">silc_client_perform_key_agreement</A> to initiate key agreement or
284          <A HREF="silcclient-silc_client_send_key_agreement.html">silc_client_send_key_agreement</A> to provide connection point to the
285          remote client in case the `hostname' is NULL.  If key agreement is
286          not desired this request can be ignored.  The `protocol' is either
287          value 0 for TCP or value 1 for UDP. */
288       void (*key_agreement)(<A HREF="silcclient-SilcClient.html">SilcClient</A> client, <A HREF="silcclient-SilcClientConnection.html">SilcClientConnection</A> conn,
289                             <A HREF="silcclient_entry-SilcClientEntry.html">SilcClientEntry</A> client_entry,
290                             const char *hostname, <A HREF="silctypes-SilcUInt16.html">SilcUInt16</A> protocol,
291                             <A HREF="silctypes-SilcUInt16.html">SilcUInt16</A> port);
292     
293       /* Notifies application that file transfer protocol session is being
294          requested by the remote client indicated by the `client_entry' from
295          the `hostname' and `port'. The `session_id' is the file transfer
296          session and it can be used to either accept or reject the file
297          transfer request, by calling the <A HREF="silcclient-silc_client_file_receive.html">silc_client_file_receive</A> or
298          <A HREF="silcclient-silc_client_file_close.html">silc_client_file_close</A>, respectively. */
299       void (*ftp)(<A HREF="silcclient-SilcClient.html">SilcClient</A> client, <A HREF="silcclient-SilcClientConnection.html">SilcClientConnection</A> conn,
300                   <A HREF="silcclient_entry-SilcClientEntry.html">SilcClientEntry</A> client_entry, <A HREF="silctypes-SilcUInt32.html">SilcUInt32</A> session_id,
301                   const char *hostname, <A HREF="silctypes-SilcUInt16.html">SilcUInt16</A> port);
302     } <B>SilcClientOperations</B>;</FONT></PRE>
303 <br /><br /><br /><br />
304     </td></tr>
305    </table>
306   </td>
307
308   <td bgcolor="#cccccc" background="dot.gif">
309    <img src="space.gif" width="1" height="1" border="0" alt=""></td>
310
311   <td width="180" bgcolor="#f0f0f0">
312     <img src="space.gif" width="1" height="1" border="0" alt="">
313     <table width="100%" cellpadding="4" cellspacing="0">
314     <tr valign="top"><td>
315 <br />
316 <font face="Helvetica,Arial,Sans-serif" size="1">
317 <A HREF="silcclient.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">Client Library Interface</A><BR>
318 <A HREF="silcclient-SilcClientConnectionStatus.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcClientConnectionStatus</A><BR>
319 <A HREF="silcclient-SilcClientRunning.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcClientRunning</A><BR>
320 <A HREF="silcclient-SilcClientStopped.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcClientStopped</A><BR>
321 <A HREF="silcclient-SilcClientConnectCallback.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcClientConnectCallback</A><BR>
322 <A HREF="silcclient-SilcClient.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcClient</A><BR>
323 <A HREF="silcclient-SilcClientConnection.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcClientConnection</A><BR>
324 <A HREF="silcclient-SilcChannelUser.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcChannelUser</A><BR>
325 <A HREF="silcclient-SilcClientStats.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcClientStats</A><BR>
326 <A HREF="silcclient-SilcKeyAgreementStatus.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcKeyAgreementStatus</A><BR>
327 <A HREF="silcclient-SilcKeyAgreementCallback.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcKeyAgreementCallback</A><BR>
328 <A HREF="silcclient-SilcPrivateMessageKeys.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcPrivateMessageKeys</A><BR>
329 <A HREF="silcclient-SilcChannelPrivateKey.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcChannelPrivateKey</A><BR>
330 <A HREF="silcclient-SilcAskPassphrase.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcAskPassphrase</A><BR>
331 <A HREF="silcclient-SilcVerifyPublicKey.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcVerifyPublicKey</A><BR>
332 <A HREF="silcclient-SilcGetAuthMeth.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcGetAuthMeth</A><BR>
333 <A HREF="silcclient-SilcClientMessageType.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcClientMessageType</A><BR>
334 <A HREF="silcclient-SilcClientOperations.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcClientOperations</A><BR>
335 <A HREF="silcclient-SilcClientParams.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcClientParams</A><BR>
336 <A HREF="silcclient-silc_client_alloc.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_alloc</A><BR>
337 <A HREF="silcclient-silc_client_free.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_free</A><BR>
338 <A HREF="silcclient-silc_client_init.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_init</A><BR>
339 <A HREF="silcclient-silc_client_run.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_run</A><BR>
340 <A HREF="silcclient-silc_client_run_one.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_run_one</A><BR>
341 <A HREF="silcclient-silc_client_stop.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_stop</A><BR>
342 <A HREF="silcclient-SilcClientConnectionParams.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcClientConnectionParams</A><BR>
343 <A HREF="silcclient-silc_client_connect_to_server.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_connect_to_server</A><BR>
344 <A HREF="silcclient-silc_client_connect_to_client.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_connect_to_client</A><BR>
345 <A HREF="silcclient-silc_client_key_exchange.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_key_exchange</A><BR>
346 <A HREF="silcclient-silc_client_close_connection.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_close_connection</A><BR>
347 <A HREF="silcclient-silc_client_send_channel_message.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_send_channel_message</A><BR>
348 <A HREF="silcclient-silc_client_send_private_message.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_send_private_message</A><BR>
349 <A HREF="silcclient-silc_client_private_message_wait_init.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_private_message_wait_init</A><BR>
350 <A HREF="silcclient-silc_client_private_message_wait_uninit.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_private_message_wait_uninit</A><BR>
351 <A HREF="silcclient-silc_client_private_message_wait.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_private_message_wait</A><BR>
352 <A HREF="silcclient-silc_client_on_channel.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_on_channel</A><BR>
353 <A HREF="silcclient-silc_client_command_call.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_command_call</A><BR>
354 <A HREF="silcclient-SilcClientCommandReply.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcClientCommandReply</A><BR>
355 <A HREF="silcclient-silc_client_command_send.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_command_send</A><BR>
356 <A HREF="silcclient-silc_client_command_pending.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_command_pending</A><BR>
357 <A HREF="silcclient-silc_client_add_private_message_key.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_add_private_message_key</A><BR>
358 <A HREF="silcclient-silc_client_add_private_message_key_ske.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_add_private_message_key_ske</A><BR>
359 <A HREF="silcclient-silc_client_del_private_message_key.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_del_private_message_key</A><BR>
360 <A HREF="silcclient-silc_client_list_private_message_keys.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_list_private_message_keys</A><BR>
361 <A HREF="silcclient-silc_client_free_private_message_keys.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_free_private_message_keys</A><BR>
362 <A HREF="silcclient-silc_client_private_message_key_is_set.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_private_message_key_is_set</A><BR>
363 <A HREF="silcclient-silc_client_add_channel_private_key.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_add_channel_private_key</A><BR>
364 <A HREF="silcclient-silc_client_del_channel_private_keys.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_del_channel_private_keys</A><BR>
365 <A HREF="silcclient-silc_client_del_channel_private_key.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_del_channel_private_key</A><BR>
366 <A HREF="silcclient-silc_client_list_channel_private_keys.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_list_channel_private_keys</A><BR>
367 <A HREF="silcclient-silc_client_current_channel_private_key.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_current_channel_private_key</A><BR>
368 <A HREF="silcclient-silc_client_send_key_agreement.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_send_key_agreement</A><BR>
369 <A HREF="silcclient-silc_client_perform_key_agreement.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_perform_key_agreement</A><BR>
370 <A HREF="silcclient-silc_client_perform_key_agreement_stream.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_perform_key_agreement_stream</A><BR>
371 <A HREF="silcclient-silc_client_abort_key_agreement.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_abort_key_agreement</A><BR>
372 <A HREF="silcclient-silc_client_set_away_message.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_set_away_message</A><BR>
373 <A HREF="silcclient-SilcClientMonitorStatus.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcClientMonitorStatus</A><BR>
374 <A HREF="silcclient-SilcClientFileError.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcClientFileError</A><BR>
375 <A HREF="silcclient-SilcClientFileMonitor.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcClientFileMonitor</A><BR>
376 <A HREF="silcclient-SilcClientFileName.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcClientFileName</A><BR>
377 <A HREF="silcclient-SilcClientFileAskName.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">SilcClientFileAskName</A><BR>
378 <A HREF="silcclient-silc_client_file_send.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_file_send</A><BR>
379 <A HREF="silcclient-silc_client_file_receive.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_file_receive</A><BR>
380 <A HREF="silcclient-silc_client_file_close.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_file_close</A><BR>
381 <A HREF="silcclient-silc_client_attribute_add.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_attribute_add</A><BR>
382 <A HREF="silcclient-silc_client_attribute_del.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_attribute_del</A><BR>
383 <A HREF="silcclient-silc_client_attributes_get.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_attributes_get</A><BR>
384 <A HREF="silcclient-silc_client_attributes_request.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_attributes_request</A><BR>
385 <A HREF="silcclient-silc_client_nickname_format.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_nickname_format</A><BR>
386 <A HREF="silcclient-silc_client_nickname_parse.html"><IMG SRC="index_pic.gif" BORDER="0" ALT="">silc_client_nickname_parse</A><BR>
387 </font>
388
389 <br /><br /><br /><br />
390     </td></tr>
391     </table>
392   </td>
393 </tr>
394 </table>
395
396 <table border="0" cellspacing="0" cellpadding="0" width="100%">
397 <tr bgcolor="#444444"><td><img src="space.gif" width="1" height="1"border="0" alt="" ></td></tr>
398 </table>
399 <table border="0" cellspacing="0" cellpadding="6" width="100%">
400  <tr valign="top" bgcolor="#dddddd">
401   <td><small>Copyright &copy; 2001 - 2007 SILC Project<br />
402     <a href="http://silcnet.org">SILC Project Website</a></small></td>
403   <td align="right"><small>
404    <a href="index.html">SILC Toolkit Reference Manual</a><br />
405    <a href="toolkit_index.html">Index</a></small></td>
406    </small></td>
407  </tr>
408 </table>
409
410 </body>
411 </html>