Home | History | Annotate | Line # | Download | only in mount_psshfs
sftp_proto.h revision 1.1
      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  * 3. The name of the company nor the name of the author may be used to
     15  *    endorse or promote products derived from this software without specific
     16  *    prior written permission.
     17  *
     18  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
     19  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     20  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     21  * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
     22  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     23  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
     24  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     25  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     26  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     27  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     28  * SUCH DAMAGE.
     29  */
     30 
     31 /*
     32  * copypaste from draft-ietf-secsh-filexfer-03.txt
     33  *
     34  * XXX: we only implement protocol version 03.  We should *definitely*
     35  * support a later version, since it maps to the vnode interface much
     36  * better.  the problem is that most sftp servers only implement v3
     37  * and I don't currently have the energy to deal with compat-fuddling
     38  * in the code.
     39  */
     40 
     41 #ifndef PSSHFS_SFTPPROTO_H_
     42 #define PSSHFS_SFTPPROTO_H_
     43 
     44 /* 3 General Packet Format */
     45 
     46 #define SSH_FXP_INIT		1
     47 #define SSH_FXP_VERSION		2
     48 #define SSH_FXP_OPEN		3
     49 #define SSH_FXP_CLOSE		4
     50 #define SSH_FXP_READ		5
     51 #define SSH_FXP_WRITE		6
     52 #define SSH_FXP_LSTAT		7
     53 #define SSH_FXP_FSTAT		8
     54 #define SSH_FXP_SETSTAT		9
     55 #define SSH_FXP_FSETSTAT	10
     56 #define SSH_FXP_OPENDIR		11
     57 #define SSH_FXP_READDIR		12
     58 #define SSH_FXP_REMOVE		13
     59 #define SSH_FXP_MKDIR		14
     60 #define SSH_FXP_RMDIR		15
     61 #define SSH_FXP_REALPATH	16
     62 #define SSH_FXP_STAT		17
     63 #define SSH_FXP_RENAME		18
     64 #define SSH_FXP_READLINK	19
     65 #define SSH_FXP_SYMLINK		20
     66 
     67 #define SSH_FXP_STATUS		101
     68 #define SSH_FXP_HANDLE		102
     69 #define SSH_FXP_DATA		103
     70 #define SSH_FXP_NAME		104
     71 #define SSH_FXP_ATTRS		105
     72 
     73 #define SSH_FXP_EXTENDED	200
     74 #define SSH_FXP_EXTENDED_REPLY	201
     75 
     76 /* 5.1 Flags */
     77 
     78 /* XXX: UIDGID is obsoleted *AND NOT VALID* for version 3 of the protocol */
     79 #define SSH_FILEXFER_ATTR_SIZE		0x00000001
     80 #define SSH_FILEXFER_ATTR_UIDGID	0x00000002
     81 #define SSH_FILEXFER_ATTR_PERMISSIONS	0x00000004
     82 #define SSH_FILEXFER_ATTR_ACCESSTIME	0x00000008
     83 #define SSH_FILEXFER_ATTR_CREATETIME	0x00000010
     84 #define SSH_FILEXFER_ATTR_MODIFYTIME	0x00000020
     85 #define SSH_FILEXFER_ATTR_ACL		0x00000040
     86 #define SSH_FILEXFER_ATTR_OWNERGROUP	0x00000080
     87 #define SSH_FILEXFER_ATTR_EXTENDED	0x80000000
     88 
     89 /* 5.2 Type */
     90 
     91 #define SSH_FILEXFER_TYPE_REGULAR	1
     92 #define SSH_FILEXFER_TYPE_DIRECTORY	2
     93 #define SSH_FILEXFER_TYPE_SYMLINK	3
     94 #define SSH_FILEXFER_TYPE_SPECIAL	4
     95 #define SSH_FILEXFER_TYPE_UNKNOWN	5
     96 
     97 
     98 /* 6.3 Opening, Creating, and Closing Files */
     99 
    100 #define SSH_FXF_READ	0x00000001
    101 #define SSH_FXF_WRITE	0x00000002
    102 #define SSH_FXF_APPEND	0x00000004
    103 #define SSH_FXF_CREAT	0x00000008
    104 #define SSH_FXF_TRUNC	0x00000010
    105 #define SSH_FXF_EXCL	0x00000020
    106 #define SSH_FXF_TEXT	0x00000040
    107 
    108 
    109 /* 7. Responses from the Server to the Client */
    110 
    111 #define SSH_FX_OK			0
    112 #define SSH_FX_EOF			1
    113 #define SSH_FX_NO_SUCH_FILE		2
    114 #define SSH_FX_PERMISSION_DENIED	3
    115 #define SSH_FX_FAILURE			4
    116 #define SSH_FX_BAD_MESSAGE		5
    117 #define SSH_FX_NO_CONNECTION		6
    118 #define SSH_FX_CONNECTION_LOST		7
    119 #define SSH_FX_OP_UNSUPPORTED		8
    120 #define SSH_FX_INVALID_HANDLE		9
    121 #define SSH_FX_NO_SUCH_PATH		10
    122 #define SSH_FX_FILE_ALREADY_EXISTS	11
    123 #define SSH_FX_WRITE_PROTECT		12
    124 
    125 #endif /* PSSHFS_SFTPPROTO_H_ */
    126