updates.
[silc.git] / lib / silcclient / silcapi.h
index c09023f916e9028c7e6dfdc8dee9010ee94054f4..175af9bca4bcbeea53e56a4f803a485249af37cc 100644 (file)
@@ -1772,7 +1772,7 @@ typedef enum {
   SILC_CLIENT_FILE_MONITOR_RECEIVE,
   SILC_CLIENT_FILE_MONITOR_GET,
   SILC_CLIENT_FILE_MONITOR_PUT,
-  SILC_CLIENT_FILE_MONITOR_CLOSE,
+  SILC_CLIENT_FILE_MONITOR_CLOSED,
   SILC_CLIENT_FILE_MONITOR_ERROR,
 } SilcClientMonitorStatus;
 
@@ -1781,6 +1781,8 @@ typedef enum {
   SILC_CLIENT_FILE_ERROR,
   SILC_CLIENT_FILE_UNKNOWN_SESSION,
   SILC_CLIENT_FILE_ALREADY_STARTED,
+  SILC_CLIENT_FILE_NO_SUCH_FILE,
+  SILC_CLIENT_FILE_PERMISSION_DENIED,
 } SilcClientFileError;
 
 /****f* silcclient/SilcClientAPI/silc_client_file_receive
@@ -1790,6 +1792,7 @@ typedef enum {
  *    typedef void (*SilcClientFileMonitor)(SilcClient client,
  *                                          SilcClientConnection conn,
  *                                          SilcClientMonitorStatus status,
+ *                                          SilcClientFileError error,
  *                                          uint64 offset,
  *                                          uint64 filesize,
  *                                          SilcClientEntry client_entry,
@@ -1810,6 +1813,7 @@ typedef enum {
 typedef void (*SilcClientFileMonitor)(SilcClient client,
                                      SilcClientConnection conn,
                                      SilcClientMonitorStatus status,
+                                     SilcClientFileError error,
                                      uint64 offset,
                                      uint64 filesize,
                                      SilcClientEntry client_entry,
@@ -1843,6 +1847,14 @@ typedef void (*SilcClientFileMonitor)(SilcClient client,
  *    file indicated by the `filepath' is being transmitted to the remote
  *    client indicated by the `client_entry', already.
  *
+ *    If the `local_ip' is provided then this will try to bind the 
+ *    listener for key exchange protocol to that IP.  If `local_port' is
+ *    non-zero that port is used.  If `local_ip' is NULL then this will
+ *    automatically attempt to bind it to local IP address of the machine.
+ *    If that fails then this does not bind to any address and port, and
+ *    assume that the remote client will provide the listener for the
+ *    key exchange protocol.
+ *
  *    If error will occur during the file transfer process the error
  *    status will be returned in the monitor callback.  In this case
  *    the application must call silc_client_file_close to close the
@@ -1853,6 +1865,8 @@ uint32 silc_client_file_send(SilcClient client,
                             SilcClientConnection conn,
                             SilcClientFileMonitor monitor,
                             void *monitor_context,
+                            const char *local_ip,
+                            uint32 local_port,
                             SilcClientEntry client_entry,
                             const char *filepath);
 
@@ -1865,7 +1879,6 @@ uint32 silc_client_file_send(SilcClient client,
  *                             SilcClientConnection conn,
  *                             SilcClientFileMonitor monitor,
  *                             void *monitor_context,
- *                             SilcClientEntry client_entry,
  *                             uint32 session_id);
  *
  * DESCRIPTION
@@ -1888,7 +1901,6 @@ silc_client_file_receive(SilcClient client,
                         SilcClientConnection conn,
                         SilcClientFileMonitor monitor,
                         void *monitor_context,
-                        SilcClientEntry client_entry,
                         uint32 session_id);
 
 /****f* silcclient/SilcClientAPI/silc_client_file_close