Merge branch 'vendor/LIBEDIT'
[dragonfly.git] / usr.sbin / puffs / mount_psshfs / sftp_proto.h
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_ */