ports/net/afpfs-ng/files/patch-include__afpfs-ng__afp_protocol.h
Martin Wilke df2e80c8b4 afpfs-ng is an Apple Filing Protocol client that will allow BSD,
Linux and Mac OS X systems to access files exported from a
Mac OS system with AFP over TCP.

WWW: http://sourceforge.net/projects/afpfs-ng/

PR:		ports/172780
Submitted by:	Manuel Creach <manuel.creach@icloud.com>
2013-02-18 04:43:58 +00:00

365 lines
9.5 KiB
C
Raw Blame History

--- include/afpfs-ng/afp_protocol.h.orig 1970-01-01 00:00:00.000000000 +0000
+++ include/afpfs-ng/afp_protocol.h 2012-10-14 13:11:33.000000000 +0000
@@ -0,0 +1,361 @@
+
+#ifndef _AFP_PROTOCOL_H_
+#define _AFP_PROTOCOL_H_
+
+#include <sys/types.h>
+#include <stddef.h>
+#include <unistd.h>
+#include <stdint.h>
+
+/* This file defines constants for the Apple File Protocol.
+ All page references are from "Apple Filing Protocol Programming" version 3.2.
+ except where noted.
+*/
+
+#define AFP_SERVER_NAME_LEN 33
+#define AFP_SERVER_NAME_UTF8_LEN 255
+#define AFP_VOLUME_NAME_LEN 33
+#define AFP_VOLUME_NAME_UTF8_LEN 33
+#define AFP_SIGNATURE_LEN 16
+#define AFP_MACHINETYPE_LEN 33
+#define AFP_LOGINMESG_LEN 200
+#define AFP_VOLPASS_LEN 8
+#define AFP_HOSTNAME_LEN 255
+/* This is actually just a guess, and only used for appletalk */
+#define AFP_ZONE_LEN 255
+
+#define AFP_SERVER_ICON_LEN 256
+
+
+#define AFP_MAX_USERNAME_LEN 127
+#define AFP_MAX_PASSWORD_LEN 127
+
+
+/* This is the maximum length of any UAM string */
+#define AFP_UAM_LENGTH 24
+
+/* This is the maximum length of any path description */
+#define AFP_MAX_PATH 768
+
+#define AFP_VOL_FLAT 1
+#define AFP_VOL_FIXED 2
+#define AFP_VOL_VARIABLE 3
+
+/* The root directory ID, p.26 */
+
+#define AFP_ROOT_DID 2
+
+/* Path type constants, p.249 */
+
+enum {
+kFPShortName = 1,
+kFPLongName = 2,
+kFPUTF8Name = 3
+};
+
+/* fork types */
+
+#define AFP_FORKTYPE_DATA 0x0
+#define AFP_FORKTYPE_RESOURCE 0x80
+
+/* openfork access modes, from p.196 */
+
+#define AFP_OPENFORK_ALLOWREAD 1
+#define AFP_OPENFORK_ALLOWWRITE 2
+#define AFP_OPENFORK_DENYREAD 0x10
+#define AFP_OPENFORK_DENYWRITE 0x20
+
+/* Message type for getsrvmesg, p. 169*/
+
+typedef enum {
+ AFPMESG_LOGIN = 0,
+ AFPMESG_SERVER = 1
+} afpmessage_t;
+
+/* Message bitmap for getsrvrmsg */
+
+#define AFP_GETSRVRMSG_UTF8 0x2
+#define AFP_GETSRVRMSG_GETMSG 0x1
+
+
+/* Maximum Version length, p.17 */
+#define AFP_MAX_VERSION_LENGTH 16
+
+/* Maximum length of a token, this is undocumented */
+#define AFP_TOKEN_MAX_LEN 256
+
+/* The maximum size of a file for AFP 2 */
+#define AFP_MAX_AFP2_FILESIZE (4294967296)
+
+/* Unix privs, p.240 */
+
+struct afp_unixprivs {
+ uint32_t uid __attribute__((__packed__));
+ uint32_t gid __attribute__((__packed__));
+ uint32_t permissions __attribute__((__packed__));
+ uint32_t ua_permissions __attribute__((__packed__));
+
+};
+
+
+/* AFP Volume attributes bitmap, p.241 */
+
+enum {
+ kReadOnly = 0x01,
+ kHasVolumePassword = 0x02,
+ kSupportsFileIDs = 0x04,
+ kSupportsCatSearch = 0x08,
+ kSupportsBlankAccessPrivs = 0x10,
+ kSupportsUnixPrivs = 0x20,
+ kSupportsUTF8Names = 0x40,
+ kNoNetworkUserIDs = 0x80,
+ kDefaultPrivsFromParent = 0x100,
+ kNoExchangeFiles = 0x200,
+ kSupportsExtAttrs = 0x400,
+ kSupportsACLs=0x800
+};
+
+/* AFP file creation constantes, p.250 */
+enum {
+kFPSoftCreate = 0,
+kFPHardCreate = 0x80
+};
+
+/* AFP Directory attributes, taken from the protocol guide p.236 */
+
+enum {
+ kFPAttributeBit = 0x1,
+ kFPParentDirIDBit = 0x2,
+ kFPCreateDateBit = 0x4,
+ kFPModDateBit = 0x8,
+ kFPBackupDateBit = 0x10,
+ kFPFinderInfoBit = 0x20,
+ kFPLongNameBit = 0x40,
+ kFPShortNameBit = 0x80,
+ kFPNodeIDBit = 0x100,
+ kFPOffspringCountBit = 0x0200,
+ kFPOwnerIDBit = 0x0400,
+ kFPGroupIDBit = 0x0800,
+ kFPAccessRightsBit = 0x1000,
+ kFPProDOSInfoBit = 0x2000, // AFP version 2.2 and earlier
+ kFPUTF8NameBit = 0x2000, // AFP version 3.0 and later
+ kFPUnixPrivsBit = 0x8000 // AFP version 3.0 and later
+};
+
+/* AFP File bitmap, p.238. These are the ones not in the AFP Directory
+ attributes map. */
+
+enum {
+ kFPDataForkLenBit = 0x0200,
+ kFPRsrcForkLenBit = 0x0400,
+ kFPExtDataForkLenBit = 0x0800, // AFP version 3.0 and later
+ kFPLaunchLimitBit = 0x1000,
+ kFPExtRsrcForkLenBit = 0x4000, // AFP version 3.0 and later
+};
+
+/* AFP Extended Attributes Bitmap, p.238 */
+
+enum {
+ kXAttrNoFollow = 0x1,
+ kXAttrCreate = 0x2,
+ kXAttrREplace=0x4
+};
+
+
+/* AFP function codes */
+enum AFPFunction
+{
+ afpByteRangeLock = 1, afpCloseVol, afpCloseDir, afpCloseFork,
+ afpCopyFile, afpCreateDir, afpCreateFile,
+ afpDelete, afpEnumerate, afpFlush, afpFlushFork,
+ afpGetForkParms = 14, afpGetSrvrInfo, afpGetSrvrParms,
+ afpGetVolParms, afpLogin, afpLoginCont, afpLogout, afpMapID,
+ afpMapName, afpMoveAndRename, afpOpenVol, afpOpenDir, afpOpenFork,
+ afpRead, afpRename, afpSetDirParms, afpSetFileParms,
+ afpSetForkParms, afpSetVolParms, afpWrite, afpGetFileDirParms,
+ afpSetFileDirParms, afpChangePassword,
+ afpGetUserInfo=37,afpGetSrvrMsg = 38,
+ afpOpenDT=48,
+ afpCloseDT=49,
+ afpGetIcon=51, afpGetIconInfo=52,
+ afpAddComment=56, afpRemoveComment=57, afpGetComment=58,
+ afpByteRangeLockExt=59, afpReadExt, afpWriteExt,
+ afpGetAuthMethods=62,
+ afp_LoginExt=63,
+ afpGetSessionToken=64,
+ afpDisconnectOldSession=65,
+ afpEnumerateExt=66,
+ afpCatSearchExt = 67,
+ afpEnumerateExt2 = 68, afpGetExtAttr, afpSetExtAttr,
+ afpRemoveExtAttr , afpListExtAttrs,
+ afpZzzzz = 122,
+ afpAddIcon=192,
+};
+
+/* AFP Volume bitmap. Take from 242 of the protocol guide. */
+enum {
+ kFPBadVolPre222Bitmap = 0xFe00,
+ kFPBadVolBitmap = 0xF000,
+ kFPVolAttributeBit = 0x1,
+ kFPVolSignatureBit = 0x2,
+ kFPVolCreateDateBit = 0x4,
+ kFPVolModDateBit = 0x8,
+ kFPVolBackupDateBit = 0x10,
+ kFPVolIDBit = 0x20,
+ kFPVolBytesFreeBit = 0x40,
+ kFPVolBytesTotalBit = 0x80,
+ kFPVolNameBit = 0x100,
+ kFPVolExtBytesFreeBit = 0x200,
+ kFPVolExtBytesTotalBit = 0x400,
+ kFPVolBlockSizeBit = 0x800
+};
+
+/* AFP Attention Codes -- 4 bits */
+#define AFPATTN_SHUTDOWN (1 << 15) /* shutdown/disconnect */
+#define AFPATTN_CRASH (1 << 14) /* server crashed */
+#define AFPATTN_MESG (1 << 13) /* server has message */
+#define AFPATTN_NORECONNECT (1 << 12) /* don't reconnect */
+/* server notification */
+#define AFPATTN_NOTIFY (AFPATTN_MESG | AFPATTN_NORECONNECT)
+
+/* extended bitmap -- 12 bits. volchanged is only useful w/ a server
+ * notification, and time is only useful for shutdown. */
+#define AFPATTN_VOLCHANGED (1 << 0) /* volume has changed */
+#define AFPATTN_TIME(x) ((x) & 0xfff) /* time in minutes */
+
+#define kFPNoErr 0
+
+/* AFP result codes, p252 */
+#define kASPSessClosed -1072
+#define kFPAccessDenied -5000
+#define kFPAuthContinue -5001
+#define kFPBadUAM -5002
+#define kFPBadVersNum -5003
+#define kFPBitmapErr -5004
+#define kFPCantMove -5005
+#define kFPDenyConflict -5006
+#define kFPDirNotEmpty -5007
+#define kFPDiskFull -5008
+#define kFPEOFErr -5009
+#define kFPFileBusy -5010
+#define kFPFlatVol -5011
+#define kFPItemNotFound -5012
+#define kFPLockErr -5013
+#define kFPMiscErr -5014
+#define kFPNoMoreLocks -5015
+#define kFPNoServer -5016
+#define kFPObjectExists -5017
+#define kFPObjectNotFound -5018
+#define kFPParamErr -5019
+#define kFPRangeNotLocked -5020
+#define kFPRangeOverlap -5021
+#define kFPSessClosed -5022
+#define kFPUserNotAuth -5023
+#define kFPCallNotSupported -5024
+#define kFPObjectTypeErr -5025
+#define kFPTooManyFilesOpen -5026
+#define kFPServerGoingDown -5027
+#define kFPCantRename -5028
+#define kFPDirNotFound -5029
+#define kFPIconTypeError -5030
+#define kFPVolLocked -5031
+#define kFPObjectLocked -5032
+#define kFPContainsSharedErr -5033
+#define kFPIDNotFound -5034
+#define kFPIDExists -5035
+#define kFPDiffVolErr -5036
+#define kFPCatalogChanged -5037
+#define kFPSameObjectErr -5038
+#define kFPBadIDErr -5039
+#define kFPPwdSameErr -5040
+#define kFPPwdTooShortErr -5041
+#define kFPPwdExpiredErr -5042
+#define kFPInsideSharedErr -5043
+#define kFPInsideTrashErr -5044
+#define kFPPwdNeedsChangeErr -5045
+#define kFPPwdPolicyErr -5046
+#define kFPDiskQuotaExceeded <EFBFBD>5047
+
+
+
+/* These flags determine to lock or unlock in ByteRangeLock(Ext) */
+
+enum {
+ByteRangeLock_Lock = 0,
+ByteRangeLock_Unlock = 1
+};
+
+/* These flags are used in volopen and getsrvrparm replies, p.171 */
+
+#define HasConfigInfo 0x1
+#define HasPassword 0x80
+
+/* These are the subfunction for kFPMapID, as per p.248 */
+
+enum {
+kUserIDToName = 1,
+kGroupIDToName = 2,
+kUserIDToUTF8Name = 3,
+kGroupIDToUTF8Name = 4,
+kUserUUIDToUTF8Name = 5,
+kGroupUUIDToUTF8Name = 6
+};
+
+
+/* These are the subfunction flags described in the FPMapName command, p.286.
+ Note that this is different than what's described on p. 186. */
+
+enum {
+kNameToUserID = 1,
+kNameToGroupID = 2,
+kUTF8NameToUserID = 3,
+kUTF8NameToGroupID = 4,
+kUTF8NameToUserUUID = 5,
+kUTF8NameToGroupUUID = 6
+};
+
+/* These are bits for FPGetUserInfo, p.173. */
+#define kFPGetUserInfo_USER_ID 1
+#define kFPGetUserInfo_PRI_GROUPID 2
+
+/* Flags for the replies of GetSrvrInfo and DSI GetStatus, p.240 */
+
+enum {
+ kSupportsCopyfile = 0x01,
+ kSupportsChgPwd = 0x02,
+ kDontAllowSavePwd = 0x04,
+ kSupportsSrvrMsg = 0x08,
+ kSrvrSig = 0x10,
+ kSupportsTCP = 0x20,
+ kSupportsSrvrNotify = 0x40,
+ kSupportsReconnect = 0x80,
+ kSupportsDirServices = 0x100,
+ kSupportsUTF8SrvrName = 0x200,
+ kSupportsUUIDs = 0x400,
+ kSupportsSuperClient = 0x8000
+};
+
+
+/* p.247 */
+
+enum {
+ kLoginWithoutID = 0,
+ kLoginWithID = 1,
+ kReconnWithID = 2,
+ kLoginWithTimeAndID = 3,
+ kReconnWithTimeAndID = 4,
+ kRecon1Login = 5,
+ kRecon1ReconnectLogin = 6,
+ kRecon1Refresh = 7, kGetKerberosSessionKey = 8
+};
+
+
+#define AFP_CHMOD_ALLOWED_BITS_22 \
+ (S_IRUSR |S_IWUSR | S_IRGRP | S_IWGRP |S_IROTH | S_IWOTH | S_IFREG )
+
+
+#endif
+
+
+
+
diff -Naur afpfs-ng-0.8.1.orig/include/afpfs-ng/codepage.h afpfs-ng-0.8.1/include/afpfs-ng/codepage.h