headers/AFPPackets.h

/*
    File:       afppackets.h
 
    Contains: Bitmaps and structures pertaining to the packets received in the session.
                        These relate to functions used in afpsession.cp.
                        
    Copyright:  Copyright Apple Computer, Inc. 1992-1994
                All rights reserved
 
    Change History (most recent first):
 
         <4>     2/25/98    law     ¥ added kFPwdPolicyErr
         <3>     8/11/97    law     ¥ added kFPPwdNeedsChangeErr
         <2>    10/31/96    bms     Add the align 68K flags for the PPC compiles.
            7/18/94 MDV     login cleanup
            5/16/94 RMB     vol consts and code standards
            1/1/93  MB      created
            
    To Do:          
*/
 
 
#ifndef __AFPPACKETS__
#define __AFPPACKETS__
 
#if PRAGMA_ALIGN_SUPPORTED
#pragma options align=mac68k
#endif
 
enum {
    kFPAccessDenied = -5000,
    kFPAuthContinue = -5001,
    kFPBadUAM = -5002,
    kFPBadVersNum = -5003,
    kFPBitmapErr = -5004,
    kFPCantMove = -5005,
    kFPDenyConflict = -5006,
    kFPDirNotEmpty = -5007,
    kFPDiskFull = -5008,
    kFPEOFErr = -5009,
    kFPFileBusy = -5010,
    kFPFlatVol = -5011,
    kFPItemNotFound = -5012,
    kFPLockErr = -5013,
    kFPMiscErr = -5014,
    kFPNoMoreLocks = -5015,
    kFPNoServer = -5016,
    kFPObjectExists = -5017,
    kFPObjectNotFound = -5018,
    kFPParamErr = -5019,
    kFPRangeNotLocked = -5020,
    kFPRangeOverlap = -5021,
    kFPSessClosed = -5022,
    kFPUserNotAuth = -5023,
    kFPCallNotSupported = -5024,
    kFPObjectTypeErr = -5025,
    kFPTooManyFilesOpen = -5026,
    kFPServerGoingDown = -5027,
    kFPCantRename = -5028,
    kFPDirNotFound = -5029,
    kFPIconTypeError = -5030,
    kFPVolLocked = -5031,
    kFPObjectLocked = -5032,
    kFPContainsSharedErr = -5033,
    kFPIDNotFound = -5034,
    kFPIDExists = -5035,
    kFPDiffVolErr = -5036,
    kFPCatalogChanged = -5037,
    kFPSameObjectErr = -5038,
    kFPBadIDErr = -5039,                     
    kFPPwdSameErr = -5040,
    kFPPwdTooShortErr = -5041,                      
    kFPPwdExpiredErr = -5042,                       
    kFPInsideSharedErr = -5043,                     
    kFPInsideTrashErr = -5044,
    kFPPwdNeedsChangeErr = -5045,
    kFPwdPolicyErr = -5046
};
 
enum {
    kFPAddAPPL = 53, 
    kFPAddComment = 56, 
    kFPAddIcon = 192, 
    kFPByteRangeLock = 1,
    kFPCatSearch = 43, 
    kFPChangePassword = 36, 
    kFPCloseDir = 3, 
    kFPCloseDT = 49, 
    kFPCloseFork = 4, 
    kFPCloseVol = 2, 
    kFPCopyFile = 5, 
    kFPCreateID = 39,
    kFPCreateDir = 6, 
    kFPCreateFile = 7,
    kFPDelete = 8, 
    kFPDeleteID = 40,
    kFPEnumerate = 9, 
    kFPExchangeFiles = 42,
    kFPFlush = 10, 
    kFPFlushFork = 11, 
    kFPGetAPPL = 55, 
    kFPGetComment = 58, 
    kFPGetFileDirParms = 34, 
    kFPGetForkParms = 14, 
    kFPGetIcon = 51, 
    kFPGetIconInfo = 52, 
    kFPGetSrvrInfo = 15, 
    kFPGetSrvrMsg = 38,
    kFPGetSrvrParms = 16, 
    kFPGetUserInfo = 37, 
    kFPGetVolParms = 17, 
    kFPLogin = 18, 
    kFPLoginCont = 19, 
    kFPLogout = 20, 
    kFPMapID = 21, 
    kFPMapName = 22, 
    kFPMoveAndRename = 23, 
    kFPOpenDir = 25, 
    kFPOpenDT = 48, 
    kFPOpenForkk = 26, 
    kFPOpenVol = 24, 
    kFPRead = 27, 
    kFPRemoveAPPL = 54, 
    kFPRemoveComment = 57, 
    kFPRename = 28, 
    kFPResolveID = 41,
    kFPSetDirParms = 29, 
    kFPSetFileDirParms = 35, 
    kFPSetFileParms = 30, 
    kFPSetForkParms = 31, 
    kFPSetVolParms = 32, 
    kFPWrite = 33
};
 
enum { kFPNoUserID = -1, kFPGuestUserID = 0 };
 
enum { kFPSoftCreate = 0, kFPHardCreate = 0x80 };
 
// Volume bitmap
enum {
    kFPBadVolumeBitmap =        0xfe00,
    kFPVolAttributeBit =        0x1,
    kFPVolSignatureBit =        0x2,
    kFPVolCreateDateBit =   0x4,
    kFPVolModDateBit =          0x8,
    kFPVolBackupDateBit =   0x10,
    kFPVolIDBit =                   0x20,
    kFPVolBytesFreeBit =        0x40,
    kFPVolBytesTotalBit =   0x80,
    kFPVolNameBit =                 0x100
};
 
// FileDir bitmap
enum {
    kFPAttributeBit =           0x1,
    kFPParentDirIDBit =         0x2,
    kFPCreateDateBit =          0x4,
    kFPModDateBit =                 0x8,
    kFPBackupDateBit =          0x10,
    kFPFinderInfoBit =          0x20,
    kFPLongNameBit =                0x40,
    kFPShortNameBit =           0x80,
    kFPNodeIDBit =                  0x100,
    kFPProDOSInfoBit =          0x2000
};
 
// unique to File bitmap
enum {
    kFPDataForkLenBit = 0x200,
    kFPRsrcForkLenBit = 0x400
};
 
// unique to Dir bitmap
enum {
    kFPOffspringCountBit = 0x200,
    kFPOwnerIDBit =              0x400,
    kFPGroupIDBit =              0x800,
    kFPAccessRightsBit =     0x1000
};
 
enum {
    kFPBadFileBitmap = 0xd800,
    kFPBadDirBitmap =  0xc000
};
 
// specific to openfork
enum {
    kBadDataBitmap =    0xdc00,
    kBadResBitmap  =    0xda00,
    kBadAccessMode =    0xffcc
};
 
enum {
    kFPBadFileAttribute = 0x7a00,
    kFPBadDirAttribute =  0x7e1a        // ¥¥ WriteInhibit bit - Whats the story with this?
};
 
// Related to CatSearch
enum {
    kPartialName    = 0x80000000,   
    kBadRespBits    = 0xffbd,           // legal response info
    kBadDir           = 0x7ffffd80, // legal request bitmaps 
    kBadFile          = 0x7ffff980,     
    kBadDirFile     = 0x7fffff81
};
 
enum { kSP = 1, kRP = 2, kWP = 4, kSA = 8, kWA = 16, kOwner = 128 };
 
typedef unsigned char FPFunc;
typedef unsigned short DTRef;
typedef unsigned long DirID;
typedef unsigned char PathType;
typedef unsigned char IconType;
typedef unsigned long IconTag;
typedef unsigned short ForkRef;
typedef unsigned short VolID;
typedef unsigned short Bitmap;
typedef unsigned long Date;
typedef unsigned char FPFinfo[32];
typedef unsigned char ProDOSInfo[6];
typedef unsigned short Attributes;
typedef unsigned short FSAttributes; // *** merge types
typedef unsigned short VolAttributes; // *** merge types
typedef unsigned long UserID;
typedef unsigned long GroupID;
typedef unsigned long AccessRights;
typedef unsigned short AccessMode;
typedef unsigned char FileDirTag;
typedef unsigned char Flag;
typedef unsigned long FileID;
typedef unsigned long ApplTag;
typedef unsigned char *Password;
typedef unsigned short FPRights;
typedef unsigned char CatPosition[16];
 
struct FPUserAuthInfo {
    unsigned long keyHi;            
    unsigned long keyLo;            
};
 
struct FPCreateID {
    FPFunc funcCode;
    unsigned char pad;
    VolID volID;
    DirID dirID;
    PathType pathType;
    unsigned char pathName;
};
 
struct FPDeleteID {
    FPFunc funcCode;
    unsigned char pad;
    VolID volID;
    FileID fileID;
};
struct FPResolveID {
    FPFunc funcCode;
    unsigned char pad;
    VolID volID;
    FileID fileID;
    Bitmap bitmap;
};
struct FPExchangeFiles {
    FPFunc funcCode;
    unsigned char pad;
    VolID volID;
    DirID srcDirID;
    DirID destDirID;
    PathType srcPathType;
    unsigned char srcPathName;
//  PathType destPathType;
//  StringPtr destPathName;
};
 
 
struct FPAddAPPL {
    FPFunc funcCode;
    unsigned char pad;
    DTRef dtRefNum;
    DirID dirID;
    OSType creator;
    OSType applTag;
    PathType pathType;
    unsigned char pathName;
};
struct FPAddComment {
    FPFunc funcCode;
    unsigned char pad;
    DTRef dtRefNum;
    DirID dirID;
    PathType pathType;
    unsigned char pathName;
//  StringPtr comment;
};
struct FPAddIcon {
    FPFunc funcCode;
    unsigned char pad;
    DTRef dtRefNum;
    OSType fileCreator;
    OSType fileType;
    IconType iconType;
    unsigned char pad2;
    IconTag iconTag;
    short bitmapSize;
};
struct FPByteRangeLock {
    FPFunc funcCode;
    Flag flags;
    ForkRef forkRef;
    long offset;
    long length;
};
struct FPCatSearch {
    FPFunc      funcCode;
    unsigned char       pad;
    short       volumeID;
    long        reqMatches;
    long        reserved;
    CatPosition catPos;
    short       fileRsltBitmap;
    short       dirRsltBitmap;
    long        reqBitmap;
    unsigned char       length;
};
struct FPChangePassword {
    FPFunc funcCode;
    unsigned char pad;
    unsigned char uam;
};
 
struct FPCloseDir {
    FPFunc funcCode;
    unsigned char pad;
    VolID volID;
    DirID dirID;
};
struct FPCloseDT {
    FPFunc funcCode;
    unsigned char pad;
    DTRef dtRefNum;
};
struct FPCloseFork {
    FPFunc funcCode;
    unsigned char pad;
    ForkRef forkRef;
};
struct FPCloseVol {
    FPFunc funcCode;
    unsigned char pad;
    VolID volID;
};
struct FPCopyFile {
    FPFunc funcCode;
    unsigned char pad;
    VolID srcVolID;
    DirID srcDirID;
    VolID destVolID;
    DirID destDirID;
    PathType srcPathType;
    unsigned char srcPathName;
//  PathType destPathType;
//  StringPtr destPathName;
//  PathType newType;
//  StringPtr newName;
};
struct FPCreateDir {
    FPFunc funcCode;
    Flag flags;
    VolID volID;
    DirID dirID;
    PathType pathType;
    unsigned char pathName;
};
struct FPCreateFile {
    FPFunc funcCode;
    Flag createFlag;
    VolID volID;
    DirID dirID;
    PathType pathType;
    unsigned char pathName;
};
struct FPDelete {
    FPFunc funcCode;
    unsigned char pad;
    VolID volID;
    DirID dirID;
    PathType pathType;
    unsigned char pathName;
};
struct FPEnumerate {
    FPFunc funcCode;
    unsigned char pad;
    VolID volID;
    DirID dirID;
    Bitmap fileBitmap;
    Bitmap dirBitmap;
    short reqCount;
    short startIndex;
    short maxReplySize;
    PathType pathType;
    unsigned char pathName;
};
struct FPFlush {
    FPFunc funcCode;
    unsigned char pad;
    VolID volID;
};
struct FPFlushFork {
    FPFunc funcCode;
    unsigned char pad;
    ForkRef forkRefNum;
};
struct FPGetAPPL {
    FPFunc funcCode;
    unsigned char pad;
    DTRef dtRefNum;
    OSType creator;
    short index;
    Bitmap bitmap;
};
struct FPGetComment {
    FPFunc funcCode;
    unsigned char pad;
    DTRef dtRefNum;
    DirID dirID;
    PathType pathType;
    unsigned char pathName;
};
struct FPGetFileDirParms {
    FPFunc funcCode;
    unsigned char pad;
    VolID volID;
    DirID dirID;
    Bitmap fileBitmap;
    Bitmap dirBitmap;
    PathType pathType;
    unsigned char pathName;
};
struct FPGetForkParms {
    FPFunc funcCode;
    unsigned char pad;
    ForkRef forkRef;
    Bitmap bitmap;
};
struct FPGetIcon {
    FPFunc funcCode;
    unsigned char pad;
    DTRef dtRefNum;
    OSType creator;
    OSType type;
    IconType iconType;
    unsigned char pad2;
    short length;
};
struct FPGetIconInfo {
    FPFunc funcCode;
    unsigned char pad;
    DTRef dtRefNum;
    OSType fileCreator;
    short iconIndex;
};
struct FPGetSrvrInfo {
    FPFunc funcCode;
    unsigned char pad;
};
struct FPGetSrvrMsg {
    FPFunc funcCode;
    unsigned char pad;
    unsigned short msgType;
    Bitmap msgBitmap;
};
struct FPGetSrvrParms {
    FPFunc funcCode;
    unsigned char pad;
};
struct FPGetUserInfo {
    FPFunc funcCode;
    Flag flag;
    UserID theUserID;
    Bitmap bitmap;
};
struct FPGetVolParms {
    FPFunc funcCode;
    unsigned char pad;
    VolID volID;
    Bitmap bitmap;
};
struct FPLogin {
    FPFunc funcCode;
    unsigned char pad;
};
struct FPLoginCont {
    FPFunc funcCode;
    unsigned char pad;
    short idNumber;
    struct FPUserAuthInfo userAuthInfo;
    struct FPUserAuthInfo userRandNum;
};
struct FPLogout {
    FPFunc funcCode;
    unsigned char pad;
};
struct FPMapID {
    FPFunc funcCode;
    Flag subFunction;
    union {
        GroupID groupID;
        UserID userID;
        } u;
};
struct FPMapName {
    FPFunc funcCode;
    Flag subFunction;
    unsigned char name;
};
struct FPMoveAndRename {
    FPFunc funcCode;
    unsigned char pad;
    VolID volID;
    DirID srcDirID;
    DirID destDirID;
    PathType srcPathType;
    unsigned char srcPathName;
//  PathType destPathType;
//  StringPtr destPathName;
//  PathType newType;
//  StringPtr newName;
};
struct FPOpenDir {
    FPFunc funcCode;
    unsigned char pad;
    VolID volID;
    DirID dirID;
    PathType pathType;
    StringPtr pathName;
};
struct FPOpenDT {
    FPFunc funcCode;
    unsigned char pad;
    VolID volID;
};
struct FPOpenForkk {
    FPFunc funcCode;
    Flag forkFlag;
    VolID volID;
    DirID dirID;
    Bitmap bitmap;
    AccessMode accessMode;
    PathType pathType;
    unsigned char pathName;
};
struct FPOpenVol {
    FPFunc funcCode;
    unsigned char pad;
    Bitmap bitmap;
    unsigned char name;
    Password password;
};
struct FPRead {
    FPFunc funcCode;
    unsigned char pad;
    ForkRef forkRef;
    long offset;
    long reqCount;
    unsigned char newlineMask;
    unsigned char newlineChar;
};
 
struct FPRemoveAPPL {
    FPFunc funcCode;
    unsigned char pad;
    DTRef dtRefNum;
    DirID dirID;
    OSType creator;
    PathType pathType;
    unsigned char pathName;
};
struct FPRemoveComment {
    FPFunc funcCode;
    unsigned char pad;
    DTRef dtRefNum;
    DirID dirID;
    PathType pathType;
    unsigned char pathName;
};
struct FPRename {
    FPFunc funcCode;
    unsigned char pad;
    VolID volID;
    DirID dirID;
    PathType pathType;
    unsigned char pathName;
//  PathType newType;
//  StringPtr newName;
};
 
struct FPSetDirParms {
    FPFunc funcCode;
    unsigned char pad;
    VolID volID;
    DirID dirID;
    Bitmap bitmap;
    PathType pathType;
    unsigned char pathName;
//  struct FPDirParam dp;
};
 
struct FPSetFileDirParms {
    FPFunc funcCode;
    unsigned char pad;
    VolID volID;
    DirID dirID;
    Bitmap bitmap;
    PathType pathType;
    unsigned char pathName;
//  union {
//      struct FPDirParam dp;
//      struct FPFileParam fp;
//      } u;
};
struct FPSetFileParms {
    FPFunc funcCode;
    unsigned char pad;
    VolID volID;
    DirID dirID;
    Bitmap bitmap;
    PathType pathType;
    unsigned char pathName;
//  struct FPFileParam fp;
};
 
struct FPSetForkParms {
    FPFunc funcCode;
    unsigned char pad;
    ForkRef forkRef;
    Bitmap bitmap;
    unsigned long forkLen;
};
 
struct FPSetVolParms {
    FPFunc funcCode;
    unsigned char pad;
    VolID volID;
    Bitmap bitmap;
    Date backupDate;
};
 
struct FPWrite {
    FPFunc funcCode;
    Flag startEndFlag;
    ForkRef forkRef;
    long offset;
    long reqCount;
};
 
 
typedef union FPRequestParam FPRequestParam;
union FPRequestParam {
    struct FPAddAPPL fpAddAPPLRequest; 
    struct FPAddComment fpAddCommentRequest;
    struct FPAddIcon fpAddIconRequest;
    struct FPByteRangeLock fpByteRangeLockRequest;
    struct FPCatSearch fpCatSearchRequest;
    struct FPChangePassword fpChangePasswordRequest;
    struct FPCloseDir fpCloseDirRequest;
    struct FPCloseDT fpCloseDTRequest;
    struct FPCloseFork fpCloseForkRequest;
    struct FPCloseVol fpCloseVolRequest;
    struct FPCopyFile fpCopyFileRequest;
    struct FPCreateDir fpCreateDirRequest;
    struct FPCreateFile fpCreateFileRequest;
    struct FPCreateID fpCreateIDRequest;
    struct FPDelete fpDeleteRequest;
    struct FPDeleteID fpDeleteIDRequest;
    struct FPEnumerate fpEnumerateRequest;
    struct FPExchangeFiles fpExchangeFilesRequest;
    struct FPFlush fpFlushRequest;
    struct FPFlushFork fpFlushForkRequest;
    struct FPGetAPPL fpGetAPPLRequest;
    struct FPGetComment fpGetCommentRequest;
    struct FPGetFileDirParms fpGetFileDirParmsRequest;
    struct FPGetForkParms fpGetForkParmsRequest;
    struct FPGetIcon fpGetIconRequest;
    struct FPGetIconInfo fpGetIconInfoRequest;
    struct FPGetSrvrInfo fpGetSrvrInfoRequest;
    struct FPGetSrvrMsg fpGetSrvrMsgRequest;
    struct FPGetSrvrParms fpGetSrvrParmsRequest;
    struct FPGetUserInfo fpGetUserInfoRequest;
    struct FPGetVolParms fpGetVolParmsRequest;
    struct FPLogin fpLoginRequest;
    struct FPLoginCont fpLoginContRequest;
    struct FPLogout fpLogoutRequest;
    struct FPMapID fpMapIDRequest;
    struct FPMapName fpMapNameRequest;
    struct FPMoveAndRename fpMoveAndRenameRequest;
    struct FPOpenDir fpOpenDirRequest;
    struct FPOpenDT fpOpenDTRequest;
    struct FPOpenForkk fpOpenForkRequest;
    struct FPOpenVol fpOpenVolRequest;
    struct FPRead fpReadRequest;
    struct FPRemoveAPPL fpRemoveAPPLRequest;
    struct FPRemoveComment fpRemoveCommentRequest;
    struct FPRename fpRenameRequest;
    struct FPResolveID fpResolveIDRequest;
    struct FPSetDirParms fpSetDirParmsRequest;
    struct FPSetFileDirParms fpSetFileDirParmsRequest;
    struct FPSetFileParms fpSetFileParmsRequest;
    struct FPSetForkParms fpSetForkParmsRequest;
    struct FPSetVolParms fpSetVolParmsRequest;
    struct FPWrite fpWriteRequest;
};
 
#if PRAGMA_ALIGN_SUPPORTED
#pragma options align=reset
#endif
 
#endif