*
* NAME
*
- * typedef uint32 SilcSFTPVersion;
+ * typedef SilcUInt32 SilcSFTPVersion;
*
* DESCRIPTION
*
*
* SOURCE
*/
-typedef uint32 SilcSFTPVersion;
+typedef SilcUInt32 SilcSFTPVersion;
/***/
/* SFTP protocol version */
*
***/
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;
char **filename;
char **long_filename;
SilcSFTPAttributes *attrs;
- uint32 count; /* Number of files */
+ SilcUInt32 count; /* Number of files */
} *SilcSFTPName, SilcSFTPNameStruct;
/****s* silcsftp/SilcSFTPAPI/SilcSFTPHandle
* typedef void (*SilcSFTPDataCallback)(SilcSFTP sftp,
* SilcSFTPStatus status,
* const unsigned char *data,
- * uint32 data_len,
+ * SilcUInt32 data_len,
* void *context);
*
* DESCRIPTION
typedef void (*SilcSFTPDataCallback)(SilcSFTP sftp,
SilcSFTPStatus status,
const unsigned char *data,
- uint32 data_len,
+ SilcUInt32 data_len,
void *context);
/****f* silcsftp/SilcSFTPAPI/SilcSFTPNameCallback
* typedef void (*SilcSFTPExtendedCallback)(SilcSFTP sftp,
* SilcSFTPStatus status,
* const unsigned char *data,
- * uint32 data_len,
+ * SilcUInt32 data_len,
* void *context);
*
* DESCRIPTION
typedef void (*SilcSFTPExtendedCallback)(SilcSFTP sftp,
SilcSFTPStatus status,
const unsigned char *data,
- uint32 data_len,
+ SilcUInt32 data_len,
void *context);
*
* void silc_sftp_read(SilcSFTP sftp,
* SilcSFTPHandle handle,
- * uint64 offset,
- * uint32 len,
+ * SilcUInt64 offset,
+ * SilcUInt32 len,
* SilcSFTPDataCallback callback,
* void *context);
*
***/
void silc_sftp_read(SilcSFTP sftp,
SilcSFTPHandle handle,
- uint64 offset,
- uint32 len,
+ SilcUInt64 offset,
+ SilcUInt32 len,
SilcSFTPDataCallback callback,
void *context);
*
* 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);
*
***/
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);
* void silc_sftp_extended(SilcSFTP sftp,
* const char *request,
* const unsigned char *data,
- * uint32 data_len,
+ * SilcUInt32 data_len,
* SilcSFTPExtendedCallback callback,
* void *context);
*
void silc_sftp_extended(SilcSFTP sftp,
const char *request,
const unsigned char *data,
- uint32 data_len,
+ SilcUInt32 data_len,
SilcSFTPExtendedCallback callback,
void *context);
*
* SilcSFTP silc_sftp_server_start(SilcSocketConnection sock,
* SilcSFTPSendPacketCallback send_packet,
- * void *send_context, SilcSFTP sftp,
+ * void *send_context,
* SilcSFTPFilesystem fs);
*
* DESCRIPTION
***/
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. */