1/*	$NetBSD: sftp_proto.h,v 1.1 2006/12/29 15:35:40 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