1 /*        $NetBSD: sftp_proto.h,v 1.2 2007/06/06 01:55:03 pooka Exp $ */
2 
3 /*
4  * Copyright (c) 2006  Antti Kantee.  All Rights Reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in the
13  *    documentation and/or other materials provided with the distribution.
14  *
15  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
16  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18  * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
21  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25  * SUCH DAMAGE.
26  */
27 
28 /*
29  * copypaste from draft-ietf-secsh-filexfer-03.txt
30  *
31  * XXX: we only implement protocol version 03.  We should *definitely*
32  * support a later version, since it maps to the vnode interface much
33  * better.  the problem is that most sftp servers only implement v3
34  * and I don't currently have the energy to deal with compat-fuddling
35  * in the code.
36  */
37 
38 #ifndef PSSHFS_SFTPPROTO_H_
39 #define PSSHFS_SFTPPROTO_H_
40 
41 /* 3 General Packet Format */
42 
43 #define SSH_FXP_INIT                    1
44 #define SSH_FXP_VERSION                 2
45 #define SSH_FXP_OPEN                    3
46 #define SSH_FXP_CLOSE                   4
47 #define SSH_FXP_READ                    5
48 #define SSH_FXP_WRITE                   6
49 #define SSH_FXP_LSTAT                   7
50 #define SSH_FXP_FSTAT                   8
51 #define SSH_FXP_SETSTAT                 9
52 #define SSH_FXP_FSETSTAT      10
53 #define SSH_FXP_OPENDIR                 11
54 #define SSH_FXP_READDIR                 12
55 #define SSH_FXP_REMOVE                  13
56 #define SSH_FXP_MKDIR                   14
57 #define SSH_FXP_RMDIR                   15
58 #define SSH_FXP_REALPATH      16
59 #define SSH_FXP_STAT                    17
60 #define SSH_FXP_RENAME                  18
61 #define SSH_FXP_READLINK      19
62 #define SSH_FXP_SYMLINK                 20
63 
64 #define SSH_FXP_STATUS                  101
65 #define SSH_FXP_HANDLE                  102
66 #define SSH_FXP_DATA                    103
67 #define SSH_FXP_NAME                    104
68 #define SSH_FXP_ATTRS                   105
69 
70 #define SSH_FXP_EXTENDED      200
71 #define SSH_FXP_EXTENDED_REPLY          201
72 
73 /* 5.1 Flags */
74 
75 /* XXX: UIDGID is obsoleted *AND NOT VALID* for version 3 of the protocol */
76 #define SSH_FILEXFER_ATTR_SIZE                    0x00000001
77 #define SSH_FILEXFER_ATTR_UIDGID        0x00000002
78 #define SSH_FILEXFER_ATTR_PERMISSIONS   0x00000004
79 #define SSH_FILEXFER_ATTR_ACCESSTIME    0x00000008
80 #define SSH_FILEXFER_ATTR_CREATETIME    0x00000010
81 #define SSH_FILEXFER_ATTR_MODIFYTIME    0x00000020
82 #define SSH_FILEXFER_ATTR_ACL           0x00000040
83 #define SSH_FILEXFER_ATTR_OWNERGROUP    0x00000080
84 #define SSH_FILEXFER_ATTR_EXTENDED      0x80000000
85 
86 /* 5.2 Type */
87 
88 #define SSH_FILEXFER_TYPE_REGULAR       1
89 #define SSH_FILEXFER_TYPE_DIRECTORY     2
90 #define SSH_FILEXFER_TYPE_SYMLINK       3
91 #define SSH_FILEXFER_TYPE_SPECIAL       4
92 #define SSH_FILEXFER_TYPE_UNKNOWN       5
93 
94 
95 /* 6.3 Opening, Creating, and Closing Files */
96 
97 #define SSH_FXF_READ          0x00000001
98 #define SSH_FXF_WRITE         0x00000002
99 #define SSH_FXF_APPEND        0x00000004
100 #define SSH_FXF_CREAT         0x00000008
101 #define SSH_FXF_TRUNC         0x00000010
102 #define SSH_FXF_EXCL          0x00000020
103 #define SSH_FXF_TEXT          0x00000040
104 
105 
106 /* 7. Responses from the Server to the Client */
107 
108 #define SSH_FX_OK                       0
109 #define SSH_FX_EOF                      1
110 #define SSH_FX_NO_SUCH_FILE             2
111 #define SSH_FX_PERMISSION_DENIED        3
112 #define SSH_FX_FAILURE                            4
113 #define SSH_FX_BAD_MESSAGE              5
114 #define SSH_FX_NO_CONNECTION            6
115 #define SSH_FX_CONNECTION_LOST                    7
116 #define SSH_FX_OP_UNSUPPORTED           8
117 #define SSH_FX_INVALID_HANDLE           9
118 #define SSH_FX_NO_SUCH_PATH             10
119 #define SSH_FX_FILE_ALREADY_EXISTS      11
120 #define SSH_FX_WRITE_PROTECT            12
121 
122 #endif /* PSSHFS_SFTPPROTO_H_ */
123