1181111Sdes/* $OpenBSD: sftp.h,v 1.9 2008/06/13 00:12:02 dtucker Exp $ */
276259Sgreen
376259Sgreen/*
476259Sgreen * Copyright (c) 2001 Markus Friedl.  All rights reserved.
576259Sgreen *
676259Sgreen * Redistribution and use in source and binary forms, with or without
776259Sgreen * modification, are permitted provided that the following conditions
876259Sgreen * are met:
976259Sgreen * 1. Redistributions of source code must retain the above copyright
1076259Sgreen *    notice, this list of conditions and the following disclaimer.
1176259Sgreen * 2. Redistributions in binary form must reproduce the above copyright
1276259Sgreen *    notice, this list of conditions and the following disclaimer in the
1376259Sgreen *    documentation and/or other materials provided with the distribution.
1476259Sgreen *
1576259Sgreen * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
1676259Sgreen * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
1776259Sgreen * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
1876259Sgreen * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
1976259Sgreen * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
2076259Sgreen * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2176259Sgreen * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2276259Sgreen * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2376259Sgreen * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
2476259Sgreen * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2576259Sgreen */
2676259Sgreen
2776259Sgreen/*
2876259Sgreen * draft-ietf-secsh-filexfer-01.txt
2976259Sgreen */
3076259Sgreen
3176259Sgreen/* version */
3276259Sgreen#define	SSH2_FILEXFER_VERSION		3
3376259Sgreen
3476259Sgreen/* client to server */
3576259Sgreen#define SSH2_FXP_INIT			1
3676259Sgreen#define SSH2_FXP_OPEN			3
3776259Sgreen#define SSH2_FXP_CLOSE			4
3876259Sgreen#define SSH2_FXP_READ			5
3976259Sgreen#define SSH2_FXP_WRITE			6
4076259Sgreen#define SSH2_FXP_LSTAT			7
4192555Sdes#define SSH2_FXP_STAT_VERSION_0		7
4276259Sgreen#define SSH2_FXP_FSTAT			8
4376259Sgreen#define SSH2_FXP_SETSTAT		9
4476259Sgreen#define SSH2_FXP_FSETSTAT		10
4576259Sgreen#define SSH2_FXP_OPENDIR		11
4676259Sgreen#define SSH2_FXP_READDIR		12
4776259Sgreen#define SSH2_FXP_REMOVE			13
4876259Sgreen#define SSH2_FXP_MKDIR			14
4976259Sgreen#define SSH2_FXP_RMDIR			15
5076259Sgreen#define SSH2_FXP_REALPATH		16
5176259Sgreen#define SSH2_FXP_STAT			17
5276259Sgreen#define SSH2_FXP_RENAME			18
5376259Sgreen#define SSH2_FXP_READLINK		19
5476259Sgreen#define SSH2_FXP_SYMLINK		20
5576259Sgreen
5676259Sgreen/* server to client */
5776259Sgreen#define SSH2_FXP_VERSION		2
5876259Sgreen#define SSH2_FXP_STATUS			101
5976259Sgreen#define SSH2_FXP_HANDLE			102
6076259Sgreen#define SSH2_FXP_DATA			103
6176259Sgreen#define SSH2_FXP_NAME			104
6276259Sgreen#define SSH2_FXP_ATTRS			105
6376259Sgreen
6476259Sgreen#define SSH2_FXP_EXTENDED		200
6576259Sgreen#define SSH2_FXP_EXTENDED_REPLY		201
6676259Sgreen
6776259Sgreen/* attributes */
6876259Sgreen#define SSH2_FILEXFER_ATTR_SIZE		0x00000001
6976259Sgreen#define SSH2_FILEXFER_ATTR_UIDGID	0x00000002
7076259Sgreen#define SSH2_FILEXFER_ATTR_PERMISSIONS	0x00000004
7176259Sgreen#define SSH2_FILEXFER_ATTR_ACMODTIME	0x00000008
7276259Sgreen#define SSH2_FILEXFER_ATTR_EXTENDED	0x80000000
7376259Sgreen
7476259Sgreen/* portable open modes */
7576259Sgreen#define SSH2_FXF_READ			0x00000001
7676259Sgreen#define SSH2_FXF_WRITE			0x00000002
7776259Sgreen#define SSH2_FXF_APPEND			0x00000004
7876259Sgreen#define SSH2_FXF_CREAT			0x00000008
7976259Sgreen#define SSH2_FXF_TRUNC			0x00000010
8076259Sgreen#define SSH2_FXF_EXCL			0x00000020
8176259Sgreen
82181111Sdes/* statvfs@openssh.com f_flag flags */
83181111Sdes#define SSH2_FXE_STATVFS_ST_RDONLY	0x00000001
84181111Sdes#define SSH2_FXE_STATVFS_ST_NOSUID	0x00000002
85181111Sdes
8676259Sgreen/* status messages */
8776259Sgreen#define SSH2_FX_OK			0
8876259Sgreen#define SSH2_FX_EOF			1
8976259Sgreen#define SSH2_FX_NO_SUCH_FILE		2
9076259Sgreen#define SSH2_FX_PERMISSION_DENIED	3
9176259Sgreen#define SSH2_FX_FAILURE			4
9276259Sgreen#define SSH2_FX_BAD_MESSAGE		5
9376259Sgreen#define SSH2_FX_NO_CONNECTION		6
9476259Sgreen#define SSH2_FX_CONNECTION_LOST		7
9576259Sgreen#define SSH2_FX_OP_UNSUPPORTED		8
9676259Sgreen#define SSH2_FX_MAX			8
97181111Sdes
98181111Sdesstruct passwd;
99181111Sdes
100181111Sdesint	sftp_server_main(int, char **, struct passwd *);
101181111Sdesvoid	sftp_server_cleanup_exit(int) __attribute__((noreturn));
102