Home | History | Annotate | Line # | Download | only in mount_psshfs
      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