xref: /netbsd-src/usr.sbin/puffs/mount_psshfs/sftp_proto.h (revision f8326bf98ef8db583b1b30943f8cedd47fa4a2f0)
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