1 /*
   2  * Copyright (c) 2001 Markus Friedl.  All rights reserved.
   3  *
   4  * Redistribution and use in source and binary forms, with or without
   5  * modification, are permitted provided that the following conditions
   6  * are met:
   7  * 1. Redistributions of source code must retain the above copyright
   8  *    notice, this list of conditions and the following disclaimer.
   9  * 2. Redistributions in binary form must reproduce the above copyright
  10  *    notice, this list of conditions and the following disclaimer in the
  11  *    documentation and/or other materials provided with the distribution.
  12  *
  13  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
  14  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  15  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  16  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
  17  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  18  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  19  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  20  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  21  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  22  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  23  */
  24 
  25 /*      $OpenBSD: sftp.h,v 1.4 2002/02/13 00:59:23 djm Exp $    */
  26 
  27 /*
  28  * draft-ietf-secsh-filexfer-01.txt
  29  */
  30 
  31 #ifndef _SFTP_H
  32 #define _SFTP_H
  33 
  34 #ifdef __cplusplus
  35 extern "C" {
  36 #endif
  37 
  38 /* version */
  39 #define SSH2_FILEXFER_VERSION           3
  40 
  41 /* client to server */
  42 #define SSH2_FXP_INIT                   1
  43 #define SSH2_FXP_OPEN                   3
  44 #define SSH2_FXP_CLOSE                  4
  45 #define SSH2_FXP_READ                   5
  46 #define SSH2_FXP_WRITE                  6
  47 #define SSH2_FXP_LSTAT                  7
  48 #define SSH2_FXP_STAT_VERSION_0         7
  49 #define SSH2_FXP_FSTAT                  8
  50 #define SSH2_FXP_SETSTAT                9
  51 #define SSH2_FXP_FSETSTAT               10
  52 #define SSH2_FXP_OPENDIR                11
  53 #define SSH2_FXP_READDIR                12
  54 #define SSH2_FXP_REMOVE                 13
  55 #define SSH2_FXP_MKDIR                  14
  56 #define SSH2_FXP_RMDIR                  15
  57 #define SSH2_FXP_REALPATH               16
  58 #define SSH2_FXP_STAT                   17
  59 #define SSH2_FXP_RENAME                 18
  60 #define SSH2_FXP_READLINK               19
  61 #define SSH2_FXP_SYMLINK                20
  62 
  63 /* server to client */
  64 #define SSH2_FXP_VERSION                2
  65 #define SSH2_FXP_STATUS                 101
  66 #define SSH2_FXP_HANDLE                 102
  67 #define SSH2_FXP_DATA                   103
  68 #define SSH2_FXP_NAME                   104
  69 #define SSH2_FXP_ATTRS                  105
  70 
  71 #define SSH2_FXP_EXTENDED               200
  72 #define SSH2_FXP_EXTENDED_REPLY         201
  73 
  74 /* attributes */
  75 #define SSH2_FILEXFER_ATTR_SIZE         0x00000001
  76 #define SSH2_FILEXFER_ATTR_UIDGID       0x00000002
  77 #define SSH2_FILEXFER_ATTR_PERMISSIONS  0x00000004
  78 #define SSH2_FILEXFER_ATTR_ACMODTIME    0x00000008
  79 #define SSH2_FILEXFER_ATTR_EXTENDED     0x80000000
  80 
  81 /* portable open modes */
  82 #define SSH2_FXF_READ                   0x00000001
  83 #define SSH2_FXF_WRITE                  0x00000002
  84 #define SSH2_FXF_APPEND                 0x00000004
  85 #define SSH2_FXF_CREAT                  0x00000008
  86 #define SSH2_FXF_TRUNC                  0x00000010
  87 #define SSH2_FXF_EXCL                   0x00000020
  88 
  89 /* status messages */
  90 #define SSH2_FX_OK                      0
  91 #define SSH2_FX_EOF                     1
  92 #define SSH2_FX_NO_SUCH_FILE            2
  93 #define SSH2_FX_PERMISSION_DENIED       3
  94 #define SSH2_FX_FAILURE                 4
  95 #define SSH2_FX_BAD_MESSAGE             5
  96 #define SSH2_FX_NO_CONNECTION           6
  97 #define SSH2_FX_CONNECTION_LOST         7
  98 #define SSH2_FX_OP_UNSUPPORTED          8
  99 #define SSH2_FX_MAX                     8
 100 
 101 struct passwd;
 102 
 103 int     sftp_server_main(int, char **, struct passwd *);
 104 
 105 #ifdef __cplusplus
 106 }
 107 #endif
 108 
 109 #endif /* _SFTP_H */