Integer type name change.
[silc.git] / lib / silcsftp / silcsftp.h
index fb81b595a9561573aa401f749647b043c30abd7b..1e438d9bbe6be89d4fd8e49e8b2323d2c9ef423e 100644 (file)
@@ -57,7 +57,7 @@ typedef struct SilcSFTPStruct *SilcSFTP;
  *
  * NAME
  * 
- *    typedef uint32 SilcSFTPVersion;
+ *    typedef SilcUInt32 SilcSFTPVersion;
  *
  * DESCRIPTION
  *
@@ -65,7 +65,7 @@ typedef struct SilcSFTPStruct *SilcSFTP;
  *
  * SOURCE
  */
-typedef uint32 SilcSFTPVersion;
+typedef SilcUInt32 SilcSFTPVersion;
 /***/
 
 /* SFTP protocol version */
@@ -136,15 +136,15 @@ typedef enum {
  *
  ***/
 typedef struct {
-  uint32 flags;                        /* Flags to indicate present attributes */
-  uint64 size;                 /* Sife of the file in bytes */
-  uint32 uid;                  /* Unix user ID */
-  uint32 gid;                  /* Unix group ID */
-  uint32 permissions;          /* POSIX file permission bitmask */
-  uint32 atime;                        /* Access time of file */
-  uint32 mtime;                        /* Modification time of file */
-
-  uint32 extended_count;       /* Extended type and data count */
+  SilcUInt32 flags;                    /* Flags to indicate present attributes */
+  SilcUInt64 size;                     /* Sife of the file in bytes */
+  SilcUInt32 uid;                      /* Unix user ID */
+  SilcUInt32 gid;                      /* Unix group ID */
+  SilcUInt32 permissions;              /* POSIX file permission bitmask */
+  SilcUInt32 atime;                    /* Access time of file */
+  SilcUInt32 mtime;                    /* Modification time of file */
+
+  SilcUInt32 extended_count;   /* Extended type and data count */
   SilcBuffer *extended_type;
   SilcBuffer *extended_data;
 } *SilcSFTPAttributes, SilcSFTPAttributesStruct;
@@ -167,7 +167,7 @@ typedef struct  {
   char **filename;
   char **long_filename;
   SilcSFTPAttributes *attrs;
-  uint32 count;                        /* Number of files */
+  SilcUInt32 count;                    /* Number of files */
 } *SilcSFTPName, SilcSFTPNameStruct;
 
 /****s* silcsftp/SilcSFTPAPI/SilcSFTPHandle
@@ -280,7 +280,7 @@ typedef void (*SilcSFTPHandleCallback)(SilcSFTP sftp,
  *    typedef void (*SilcSFTPDataCallback)(SilcSFTP sftp,
  *                                         SilcSFTPStatus status,
  *                                         const unsigned char *data,
- *                                         uint32 data_len,
+ *                                         SilcUInt32 data_len,
  *                                         void *context);
  *
  * DESCRIPTION
@@ -293,7 +293,7 @@ typedef void (*SilcSFTPHandleCallback)(SilcSFTP sftp,
 typedef void (*SilcSFTPDataCallback)(SilcSFTP sftp,
                                     SilcSFTPStatus status,
                                     const unsigned char *data,
-                                    uint32 data_len,
+                                    SilcUInt32 data_len,
                                     void *context);
 
 /****f* silcsftp/SilcSFTPAPI/SilcSFTPNameCallback
@@ -346,7 +346,7 @@ typedef void (*SilcSFTPAttrCallback)(SilcSFTP sftp,
  *    typedef void (*SilcSFTPExtendedCallback)(SilcSFTP sftp,
  *                                             SilcSFTPStatus status,
  *                                             const unsigned char *data,
- *                                             uint32 data_len,
+ *                                             SilcUInt32 data_len,
  *                                             void *context);
  *
  * DESCRIPTION
@@ -359,7 +359,7 @@ typedef void (*SilcSFTPAttrCallback)(SilcSFTP sftp,
 typedef void (*SilcSFTPExtendedCallback)(SilcSFTP sftp,
                                         SilcSFTPStatus status,
                                         const unsigned char *data,
-                                        uint32 data_len,
+                                        SilcUInt32 data_len,
                                         void *context);
 
 
@@ -464,8 +464,8 @@ void silc_sftp_close(SilcSFTP sftp,
  *
  *    void silc_sftp_read(SilcSFTP sftp,
  *                        SilcSFTPHandle handle,
- *                        uint64 offset, 
- *                        uint32 len,
+ *                        SilcUInt64 offset, 
+ *                        SilcUInt32 len,
  *                        SilcSFTPDataCallback callback,
  *                        void *context);
  *
@@ -478,8 +478,8 @@ void silc_sftp_close(SilcSFTP sftp,
  ***/
 void silc_sftp_read(SilcSFTP sftp,
                    SilcSFTPHandle handle,
-                   uint64 offset, 
-                   uint32 len,
+                   SilcUInt64 offset, 
+                   SilcUInt32 len,
                    SilcSFTPDataCallback callback,
                    void *context);
 
@@ -489,9 +489,9 @@ void silc_sftp_read(SilcSFTP sftp,
  *
  *    void silc_sftp_write(SilcSFTP sftp,
  *                         SilcSFTPHandle handle,
- *                         uint64 offset,
+ *                         SilcUInt64 offset,
  *                         const unsigned char *data,
- *                         uint32 data_len,
+ *                         SilcUInt32 data_len,
  *                         SilcSFTPStatusCallback callback,
  *                         void *context);
  *
@@ -504,9 +504,9 @@ void silc_sftp_read(SilcSFTP sftp,
  ***/
 void silc_sftp_write(SilcSFTP sftp,
                     SilcSFTPHandle handle,
-                    uint64 offset,
+                    SilcUInt64 offset,
                     const unsigned char *data,
-                    uint32 data_len,
+                    SilcUInt32 data_len,
                     SilcSFTPStatusCallback callback,
                     void *context);
 
@@ -813,7 +813,7 @@ void silc_sftp_realpath(SilcSFTP sftp,
  *    void silc_sftp_extended(SilcSFTP sftp,
  *                            const char *request,
  *                            const unsigned char *data,
- *                            uint32 data_len,
+ *                            SilcUInt32 data_len,
  *                            SilcSFTPExtendedCallback callback,
  *                            void *context);
  *
@@ -827,7 +827,7 @@ void silc_sftp_realpath(SilcSFTP sftp,
 void silc_sftp_extended(SilcSFTP sftp,
                        const char *request,
                        const unsigned char *data,
-                       uint32 data_len,
+                       SilcUInt32 data_len,
                        SilcSFTPExtendedCallback callback,
                        void *context);
 
@@ -842,7 +842,7 @@ void silc_sftp_extended(SilcSFTP sftp,
  *
  *    SilcSFTP silc_sftp_server_start(SilcSocketConnection sock,
  *                                    SilcSFTPSendPacketCallback send_packet,
- *                                    void *send_context, SilcSFTP sftp,
+ *                                    void *send_context, 
  *                                    SilcSFTPFilesystem fs);
  *
  * DESCRIPTION
@@ -874,6 +874,112 @@ SilcSFTP silc_sftp_server_start(SilcSocketConnection sock,
  ***/
 void silc_sftp_server_shutdown(SilcSFTP sftp);
 
+/****d* silcsftp/SilcSFTPAPI/SilcSFTPMonitors
+ *
+ * NAME
+ * 
+ *    typedef enum { ... } SilcSFTPMonitors;
+ *
+ * DESCRIPTION
+ *
+ *    SFTP server monitor types. These can be masked together to monitor
+ *    various client requests.
+ *
+ * SOURCE
+ */
+typedef enum {
+  SILC_SFTP_MONITOR_INIT        = 0x0001,
+  SILC_SFTP_MONITOR_OPEN        = 0x0002,
+  SILC_SFTP_MONITOR_CLOSE       = 0x0004,
+  SILC_SFTP_MONITOR_READ        = 0x0008,
+  SILC_SFTP_MONITOR_WRITE       = 0x0010,
+  SILC_SFTP_MONITOR_REMOVE      = 0x0020,
+  SILC_SFTP_MONITOR_RENAME      = 0x0040,
+  SILC_SFTP_MONITOR_MKDIR       = 0x0080,
+  SILC_SFTP_MONITOR_RMDIR       = 0x0100,
+  SILC_SFTP_MONITOR_OPENDIR     = 0x0200,
+  SILC_SFTP_MONITOR_READDIR     = 0x0400,
+  SILC_SFTP_MONITOR_STAT        = 0x0800,
+  SILC_SFTP_MONITOR_LSTAT       = 0x1000,
+  SILC_SFTP_MONITOR_FSTAT       = 0x2000,
+  SILC_SFTP_MONITOR_SETSTAT     = 0x4000,
+  SILC_SFTP_MONITOR_FSETSTAT    = 0x8000,
+  SILC_SFTP_MONITOR_READLINK    = 0x10000,
+  SILC_SFTP_MONITOR_SYMLINK     = 0x20000,
+  SILC_SFTP_MONITOR_REALPATH    = 0x40000,
+  SILC_SFTP_MONITOR_EXTENDED    = 0x80000,
+} SilcSFTPMonitors;
+/***/
+
+/****s* silcsftp/SilcSFTPAPI/SilcSFTPMonitorData
+ *
+ * NAME
+ * 
+ *    typedef struct { ... } *SilcSFTPMonitorData, SilcSFTPMonitorDataStruct;
+ *
+ * DESCRIPTION
+ *
+ *    This structure includes the monitor type specific data.  The
+ *    application can check what the client has requested from this
+ *    structure.
+ *
+ * SOURCE
+ */
+typedef struct {
+  SilcSFTPVersion version;     /* _INIT */
+  char *name;                  /* _OPEN, _REMOVE, _RENAME, _MKDIR,
+                                  _RMDIR, _OPENDIR, _STAT, _LSTAT,
+                                  _SETSTAT, _READLINK, _SYMLINK, _REALPATH */
+  char *name2;                 /* _RENAME, _SYMLINK */
+  SilcSFTPFileOperation pflags;        /* _OPEN */
+  SilcUInt64 offset;           /* _READ, _WRITE */
+  SilcUInt32 data_len;         /* _READ, _WRITE */
+  SilcSFTPName names;          /* _READDIR, _READLINK, _REALPATH */
+} *SilcSFTPMonitorData, SilcSFTPMonitorDataStruct;
+/***/
+
+/****f* silcsftp/SilcSFTPAPI/SilcSFTPMonitor
+ *
+ * SYNOPSIS
+ *
+ *    typedef void (*SilcSFTPMonitor)(SilcSFTP sftp
+ *                                    SilcSFTPMonitors type,
+ *                                    const SilcSFTPMonitorData data,
+ *                                    void *context);
+ *
+ * DESCRIPTION
+ *
+ *    Monitor callback that is called when an specified request is
+ *    received from client.  The `type' is the requested type that
+ *    was being monitored.
+ *
+ ***/
+typedef void (*SilcSFTPMonitor)(SilcSFTP sftp,
+                               SilcSFTPMonitors type,
+                               const SilcSFTPMonitorData data,
+                               void *context);
+
+/****f* silcsftp/SilcSFTPAPI/silc_sftp_server_set_monitor
+ *
+ * SYNOPSIS
+ *
+ *    void silc_sftp_server_set_monitor(SilcSFTP sftp,
+ *                                      SilcSFTPMonitors monitors,
+ *                                      SilcSFTPMonitor monitor, 
+ *                                      void *context);
+ *
+ * DESCRIPTION
+ *
+ *    Sets monitor callback to monitor various request sent by an client.
+ *    When request that has been set in the `monitors' is received the
+ *    monitor callback will be called to notify the caller.
+ *
+ ***/
+void silc_sftp_server_set_monitor(SilcSFTP sftp,
+                                 SilcSFTPMonitors monitors,
+                                 SilcSFTPMonitor monitor, 
+                                 void *context);
+
 /* Function that is called to process the incmoing SFTP packet. */
 /* XXX Some day this will go away and we have automatic receive callbacks
    for SilcSocketConnection API or SilcPacketContext API. */