mirror of
https://git.freebsd.org/ports.git
synced 2025-06-18 11:10:32 -04:00
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>
365 lines
9.5 KiB
C
365 lines
9.5 KiB
C
--- 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
|