+++ /dev/null
-/*
- File: AddressXlation.h
-
- Contains: TCP Manager interfaces for dnr.c
-
- Version: Use with MacTCP 2.0.6 and Universal Interfaces 2.1b1
- in ÒMPW PrereleaseÓ on ETO #17
-
- Copyright: © 1984-1995 by Apple Computer, Inc.
- All rights reserved.
-
- Bugs?: If you find a problem with this file, send the file and version
- information (from above) and the problem description to:
-
- Internet: apple.bugs@applelink.apple.com
- AppleLink: APPLE.BUGS
-
-*/
-
-#ifndef __ADDRESSXLATION__
-#define __ADDRESSXLATION__
-
-
-#ifndef __TYPES__
-#include <Types.h>
-#endif
-/* #include <ConditionalMacros.h> */
-
-#ifndef __MACTCP__
-#include <MacTCP.h>
-#endif
-/* #include <AppleTalk.h> */
-/* #include <OSUtils.h> */
-/* #include <MixedMode.h> */
-/* #include <Memory.h> */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if STRUCTALIGNMENTSUPPORTED
-#pragma options align=mac68k
-#endif
-
-#if PRAGMA_IMPORT_SUPPORTED
-#pragma import on
-#endif
-
-/*
- Developer Notes:
-
- When the various calls are made to the dnr code, you must set up
- a NewRoutineDescriptor for every non-nil completion routine and/or
- notifyProc parameter. Otherwise, the 68K dnr code, will not
- correctly call your routine.
- 1. For the call to EnumCache, use NewEnumResultProc to set up a
- universal procptr to pass as the enumResultProc parameter.
- 2. For the calls to StrToAddr and AddrToName, use NewResultProc to
- set up a ResultUPP universal procptr to pass as the ResultProc
- parameter.
- 3. For the calls to HInfo and MXInfo, use NewResultProc2Proc to
- set up a ResultProc2UPP universal procptr to pass as the ResultProc
- parameter.
- 4. The DNR selector symbol HINFO has been changed to HXINFO due to
- conflict with the same symbol in the AddressXLation.h header
-*/
-
-enum {
- NUM_ALT_ADDRS = 4
-};
-
-struct hostInfo {
- long rtnCode;
- char cname[255];
- SInt8 filler; /* Filler for proper byte alignment */
- unsigned long addr[NUM_ALT_ADDRS];
-};
-typedef struct hostInfo hostInfo;
-
-
-enum {
- A = 1,
- NS = 2,
- CNAME = 5,
- HINFO = 13,
- MX = 15,
- lastClass = 32767
-};
-
-typedef unsigned short AddrClasses;
-
-/* Domain Name Resolver code selectors */
-
-enum {
- OPENRESOLVER = 1,
- CLOSERESOLVER = 2,
- STRTOADDR = 3,
- ADDRTOSTR = 4,
- ENUMCACHE = 5,
- ADDRTONAME = 6,
- HXINFO = 7, /* changed from HINFO due to symbol conflict*/
- MXINFO = 8
-};
-
-struct HInfoRec {
- char cpuType[30];
- char osType[30];
-};
-typedef struct HInfoRec HInfoRec;
-
-struct MXRec {
- unsigned short preference;
- char exchange[255];
-};
-typedef struct MXRec MXRec;
-
-struct returnRec {
- long rtnCode;
- char cname[255];
- SInt8 filler; /* Filler for proper byte alignment */
- union {
- unsigned long addr[NUM_ALT_ADDRS];
- struct HInfoRec hinfo;
- struct MXRec mx;
- } rdata;
-};
-typedef struct returnRec returnRec;
-
-struct cacheEntryRecord {
- char *cname;
- unsigned short ctype;
- unsigned short cacheClass;
- unsigned long ttl;
- union {
- char *name;
- ip_addr addr;
- } rdata;
-};
-typedef struct cacheEntryRecord cacheEntryRecord;
-
-typedef pascal void (*EnumResultProcPtr)(struct cacheEntryRecord *cacheEntryRecordPtr, Ptr userDataPtr);
-typedef pascal void (*ResultProcPtr)(struct hostInfo *hostInfoPtr, Ptr userDataPtr);
-typedef pascal void (*ResultProc2ProcPtr)(struct returnRec *returnRecPtr, Ptr userDataPtr);
-
-#if GENERATINGCFM
-typedef UniversalProcPtr EnumResultUPP;
-typedef UniversalProcPtr ResultUPP;
-typedef UniversalProcPtr ResultProc2UPP;
-#else
-typedef EnumResultProcPtr EnumResultUPP;
-typedef ResultProcPtr ResultUPP;
-typedef ResultProc2ProcPtr ResultProc2UPP;
-#endif
-
-enum {
- uppEnumResultProcInfo = kPascalStackBased
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(struct cacheEntryRecord*)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Ptr))),
- uppResultProcInfo = kPascalStackBased
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(struct hostInfo*)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Ptr))),
- uppResultProc2ProcInfo = kPascalStackBased
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(struct returnRec*)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Ptr)))
-};
-
-#if GENERATINGCFM
-#define NewEnumResultProc(userRoutine) \
- (EnumResultUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppEnumResultProcInfo, GetCurrentArchitecture())
-#define NewResultProc(userRoutine) \
- (ResultUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppResultProcInfo, GetCurrentArchitecture())
-#define NewResultProc2Proc(userRoutine) \
- (ResultProc2UPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppResultProc2ProcInfo, GetCurrentArchitecture())
-#else
-#define NewEnumResultProc(userRoutine) \
- ((EnumResultUPP) (userRoutine))
-#define NewResultProc(userRoutine) \
- ((ResultUPP) (userRoutine))
-#define NewResultProc2Proc(userRoutine) \
- ((ResultProc2UPP) (userRoutine))
-#endif
-
-#if GENERATINGCFM
-#define CallEnumResultProc(userRoutine, cacheEntryRecordPtr, userDataPtr) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppEnumResultProcInfo, (cacheEntryRecordPtr), (userDataPtr))
-#define CallResultProc(userRoutine, hostInfoPtr, userDataPtr) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppResultProcInfo, (hostInfoPtr), (userDataPtr))
-#define CallResultProc2Proc(userRoutine, returnRecPtr, userDataPtr) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppResultProc2ProcInfo, (returnRecPtr), (userDataPtr))
-#else
-#define CallEnumResultProc(userRoutine, cacheEntryRecordPtr, userDataPtr) \
- (*(userRoutine))((cacheEntryRecordPtr), (userDataPtr))
-#define CallResultProc(userRoutine, hostInfoPtr, userDataPtr) \
- (*(userRoutine))((hostInfoPtr), (userDataPtr))
-#define CallResultProc2Proc(userRoutine, returnRecPtr, userDataPtr) \
- (*(userRoutine))((returnRecPtr), (userDataPtr))
-#endif
-
-extern OSErr OpenResolver(char *fileName);
-extern OSErr StrToAddr(char *hostName, struct hostInfo *hostInfoPtr, ResultUPP ResultProc, char *userDataPtr);
-extern OSErr AddrToStr(unsigned long addr, char *addrStr);
-extern OSErr EnumCache(EnumResultUPP enumResultProc, Ptr userDataPtr);
-extern OSErr AddrToName(ip_addr addr, struct hostInfo *hostInfoPtr, ResultUPP ResultProc, Ptr userDataPtr);
-extern OSErr HInfo(char *hostName, struct returnRec *returnRecPtr, ResultProc2UPP resultProc, Ptr userDataPtr);
-extern OSErr MXInfo(char *hostName, struct returnRec *returnRecPtr, ResultProc2UPP resultProc, Ptr userDataPtr);
-extern OSErr CloseResolver(void);
-/*
- Universal ProcPtrs declaration for each of the dnr selector code calls.
-*/
-typedef OSErr (*OpenResolverProcPtr)(UInt32 selector, char *filename);
-typedef OSErr (*CloseResolverProcPtr)(UInt32 selector);
-typedef OSErr (*StrToAddrProcPtr)(UInt32 selector, char *hostName, struct hostInfo *rtnStruct, ResultUPP resultproc, Ptr userDataPtr);
-typedef OSErr (*AddrToStrProcPtr)(UInt32 selector, unsigned long addr, char *addrStr);
-typedef OSErr (*EnumCacheProcPtr)(UInt32 selector, EnumResultUPP resultproc, Ptr userDataPtr);
-typedef OSErr (*AddrToNameProcPtr)(UInt32 selector, UInt32 addr, struct hostInfo *rtnStruct, ResultUPP resultproc, Ptr userDataPtr);
-typedef OSErr (*HInfoProcPtr)(UInt32 selector, char *hostName, struct returnRec *returnRecPtr, ResultProc2UPP resultProc, Ptr userDataPtr);
-typedef OSErr (*MXInfoProcPtr)(UInt32 selector, char *hostName, struct returnRec *returnRecPtr, ResultProc2UPP resultProc, Ptr userDataPtr);
-
-#if GENERATINGCFM
-typedef UniversalProcPtr OpenResolverUPP;
-typedef UniversalProcPtr CloseResolverUPP;
-typedef UniversalProcPtr StrToAddrUPP;
-typedef UniversalProcPtr AddrToStrUPP;
-typedef UniversalProcPtr EnumCacheUPP;
-typedef UniversalProcPtr AddrToNameUPP;
-typedef UniversalProcPtr HInfoUPP;
-typedef UniversalProcPtr MXInfoUPP;
-#else
-typedef OpenResolverProcPtr OpenResolverUPP;
-typedef CloseResolverProcPtr CloseResolverUPP;
-typedef StrToAddrProcPtr StrToAddrUPP;
-typedef AddrToStrProcPtr AddrToStrUPP;
-typedef EnumCacheProcPtr EnumCacheUPP;
-typedef AddrToNameProcPtr AddrToNameUPP;
-typedef HInfoProcPtr HInfoUPP;
-typedef MXInfoProcPtr MXInfoUPP;
-#endif
-
-enum {
- uppOpenResolverProcInfo = kCStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(UInt32)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(char*))),
- uppCloseResolverProcInfo = kCStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(UInt32))),
- uppStrToAddrProcInfo = kCStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(UInt32)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(char*)))
- | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(struct hostInfo*)))
- | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(ResultUPP)))
- | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(Ptr))),
- uppAddrToStrProcInfo = kCStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(UInt32)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(unsigned long)))
- | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(char*))),
- uppEnumCacheProcInfo = kCStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(UInt32)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(EnumResultUPP)))
- | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Ptr))),
- uppAddrToNameProcInfo = kCStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(UInt32)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(UInt32)))
- | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(struct hostInfo*)))
- | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(ResultUPP)))
- | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(Ptr))),
- uppHInfoProcInfo = kCStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(UInt32)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(char*)))
- | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(struct returnRec*)))
- | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(ResultProc2UPP)))
- | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(Ptr))),
- uppMXInfoProcInfo = kCStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(UInt32)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(char*)))
- | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(struct returnRec*)))
- | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(ResultProc2UPP)))
- | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(Ptr)))
-};
-
-#if GENERATINGCFM
-#define CallOpenResolverProc(userRoutine, selector, filename) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppOpenResolverProcInfo, (selector), (filename))
-#define CallCloseResolverProc(userRoutine, selector) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppCloseResolverProcInfo, (selector))
-#define CallStrToAddrProc(userRoutine, selector, hostName, rtnStruct, resultproc, userDataPtr) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppStrToAddrProcInfo, (selector), (hostName), (rtnStruct), (resultproc), (userDataPtr))
-#define CallAddrToStrProc(userRoutine, selector, addr, addrStr) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppAddrToStrProcInfo, (selector), (addr), (addrStr))
-#define CallEnumCacheProc(userRoutine, selector, resultproc, userDataPtr) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppEnumCacheProcInfo, (selector), (resultproc), (userDataPtr))
-#define CallAddrToNameProc(userRoutine, selector, addr, rtnStruct, resultproc, userDataPtr) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppAddrToNameProcInfo, (selector), (addr), (rtnStruct), (resultproc), (userDataPtr))
-#define CallHInfoProc(userRoutine, selector, hostName, returnRecPtr, resultProc, userDataPtr) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppHInfoProcInfo, (selector), (hostName), (returnRecPtr), (resultProc), (userDataPtr))
-#define CallMXInfoProc(userRoutine, selector, hostName, returnRecPtr, resultProc, userDataPtr) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppMXInfoProcInfo, (selector), (hostName), (returnRecPtr), (resultProc), (userDataPtr))
-#else
-#define CallOpenResolverProc(userRoutine, selector, filename) \
- (*(userRoutine))((selector), (filename))
-#define CallCloseResolverProc(userRoutine, selector) \
- (*(userRoutine))((selector))
-#define CallStrToAddrProc(userRoutine, selector, hostName, rtnStruct, resultproc, userDataPtr) \
- (*(userRoutine))((selector), (hostName), (rtnStruct), (resultproc), (userDataPtr))
-#define CallAddrToStrProc(userRoutine, selector, addr, addrStr) \
- (*(userRoutine))((selector), (addr), (addrStr))
-#define CallEnumCacheProc(userRoutine, selector, resultproc, userDataPtr) \
- (*(userRoutine))((selector), (resultproc), (userDataPtr))
-#define CallAddrToNameProc(userRoutine, selector, addr, rtnStruct, resultproc, userDataPtr) \
- (*(userRoutine))((selector), (addr), (rtnStruct), (resultproc), (userDataPtr))
-#define CallHInfoProc(userRoutine, selector, hostName, returnRecPtr, resultProc, userDataPtr) \
- (*(userRoutine))((selector), (hostName), (returnRecPtr), (resultProc), (userDataPtr))
-#define CallMXInfoProc(userRoutine, selector, hostName, returnRecPtr, resultProc, userDataPtr) \
- (*(userRoutine))((selector), (hostName), (returnRecPtr), (resultProc), (userDataPtr))
-#endif
-
-
-#if PRAGMA_IMPORT_SUPPORTED
-#pragma import off
-#endif
-
-#if STRUCTALIGNMENTSUPPORTED
-#pragma options align=reset
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __ADDRESSXLATION__ */
+++ /dev/null
-/*
- File: MacTCP.h
-
- Contains: TCP Manager Interfaces.
-
- Version: Technology: MacTCP 2.0.6
- Package: Universal Interfaces 2.1§1 in ÒMPW PrereleaseÓ on ETO #17
-
- Copyright: © 1984-1995 by Apple Computer, Inc.
- All rights reserved.
-
- Bugs?: If you find a problem with this file, use the Apple Bug Reporter
- stack. Include the file and version information (from above)
- in the problem description and send to:
- Internet: apple.bugs@applelink.apple.com
- AppleLink: APPLE.BUGS
-
-*/
-
-#ifndef __MACTCP__
-#define __MACTCP__
-
-
-#ifndef __TYPES__
-#include <Types.h>
-#endif
-/* #include <ConditionalMacros.h> */
-
-#ifndef __APPLETALK__
-#include <AppleTalk.h>
-#endif
-/* #include <OSUtils.h> */
-/* #include <MixedMode.h> */
-/* #include <Memory.h> */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if PRAGMA_ALIGN_SUPPORTED
-#pragma options align=mac68k
-#endif
-
-#if PRAGMA_IMPORT_SUPPORTED
-#pragma import on
-#endif
-
-/*
-Developer Notes:
- 0. This MacTCP header replaces what used to be defined in the following header files
- MacTCPCommonTypes.h
- GetMyIPAddr.h
- MiscIPPB.h
- TCPPB.h
- UDPPB.h
-
- When the various control calls are made to the ip driver, you must set up a
- NewRoutineDescriptor for every non-nil completion routine and/or notifyProc parameter.
- Otherwise, the 68K driver code, will not correctly call your routine.
- 1. For ipctlGetAddr Control calls, use NewGetIPIOCompletionProc
- to set up a GetIPIOCompletionUPP universal procptr to pass as
- the ioCompletion parameter.
- 2. For the ipctlEchoICMP and ipctlLAPStats Control calls, use
- NewIPIOCompletion to set up a IPIOCompletionUPP universal procptr
- to pass in the ioCompletion field of the parameter block.
- 3. For TCPCreatePB Control calls, use NewTCPNotifyProc to set up a
- TCPNotifyUPP universal procptr to pass in the notifyProc field
- of the parameter block
- 4. For all of the TCP Control calls using the TCPiopb parameter block,
- use NewTCPIOCompletionProc to set up a TCPIOCompletionUPP
- universal procptr to pass in the ioCompletion field of the paramter
- block.
- 5. For UDBCreatePB Control calls, use NewUDPNotifyProc to set up a
- UDPNotifyUPP universal procptr to pass in the notifyProc field
- of the parameter block
- 6. For all of the UDP Control calls using the UDPiopb parameter block,
- use NewUDPIOCompletionProc to set up a UDPIOCompletionUPP
- universal procptr to pass in the ioCompletion field of the paramter
- block.
- 7. For all calls implementing a notifyProc or ioCompletion routine
- which was set up using a NewTCPRoutineProc call, do not call
- DisposeRoutineSDescriptor on the universal procptr until
- after the completion or notify proc has completed.
-*/
-/* MacTCP return Codes in the range -23000 through -23049 */
-
-enum {
- inProgress = 1, /* I/O in progress */
- ipBadLapErr = -23000, /* bad network configuration */
- ipBadCnfgErr = -23001, /* bad IP configuration error */
- ipNoCnfgErr = -23002, /* missing IP or LAP configuration error */
- ipLoadErr = -23003, /* error in MacTCP load */
- ipBadAddr = -23004, /* error in getting address */
- connectionClosing = -23005, /* connection is closing */
- invalidLength = -23006,
- connectionExists = -23007, /* request conflicts with existing connection */
- connectionDoesntExist = -23008, /* connection does not exist */
- insufficientResources = -23009, /* insufficient resources to perform request */
- invalidStreamPtr = -23010,
- streamAlreadyOpen = -23011,
- connectionTerminated = -23012,
- invalidBufPtr = -23013,
- invalidRDS = -23014,
- invalidWDS = -23014,
- openFailed = -23015,
- commandTimeout = -23016,
- duplicateSocket = -23017
-};
-
-/* Error codes from internal IP functions */
-enum {
- ipDontFragErr = -23032, /* Packet too large to send w/o fragmenting */
- ipDestDeadErr = -23033, /* destination not responding */
- icmpEchoTimeoutErr = -23035, /* ICMP echo timed-out */
- ipNoFragMemErr = -23036, /* no memory to send fragmented pkt */
- ipRouteErr = -23037, /* can't route packet off-net */
- nameSyntaxErr = -23041,
- cacheFault = -23042,
- noResultProc = -23043,
- noNameServer = -23044,
- authNameErr = -23045,
- noAnsErr = -23046,
- dnrErr = -23047,
- outOfMemory = -23048
-};
-
-enum {
- BYTES_16WORD = 2, /* bytes per = 16, bit ip word */
- BYTES_32WORD = 4, /* bytes per = 32, bit ip word */
- BYTES_64WORD = 8 /* bytes per = 64, bit ip word */
-};
-
-/* 8-bit quantity */
-typedef UInt8 b_8;
-
-/* 16-bit quantity */
-typedef UInt16 b_16;
-
-/* 32-bit quantity */
-typedef UInt32 b_32;
-
-/* IP address is 32-bits */
-typedef b_32 ip_addr;
-
-struct ip_addrbytes {
- union {
- b_32 addr;
- UInt8 byte[4];
- } a;
-};
-typedef struct ip_addrbytes ip_addrbytes;
-
-struct wdsEntry {
- unsigned short length; /* length of buffer */
- Ptr ptr; /* pointer to buffer */
-};
-typedef struct wdsEntry wdsEntry;
-
-struct rdsEntry {
- unsigned short length; /* length of buffer */
- Ptr ptr; /* pointer to buffer */
-};
-typedef struct rdsEntry rdsEntry;
-
-typedef unsigned long BufferPtr;
-
-typedef unsigned long StreamPtr;
-
-
-enum {
- netUnreach = 0,
- hostUnreach = 1,
- protocolUnreach = 2,
- portUnreach = 3,
- fragReqd = 4,
- sourceRouteFailed = 5,
- timeExceeded = 6,
- parmProblem = 7,
- missingOption = 8,
- lastICMPMsgType = 32767
-};
-
-typedef unsigned short ICMPMsgType;
-
-typedef b_16 ip_port;
-
-struct ICMPReport {
- StreamPtr streamPtr;
- ip_addr localHost;
- ip_port localPort;
- ip_addr remoteHost;
- ip_port remotePort;
- short reportType;
- unsigned short optionalAddlInfo;
- unsigned long optionalAddlInfoPtr;
-};
-typedef struct ICMPReport ICMPReport;
-
-/* csCode to get our IP address */
-
-enum {
- ipctlGetAddr = 15
-};
-
-typedef void (*GetIPIOCompletionProcPtr)(struct GetAddrParamBlock *iopb);
-
-#if GENERATINGCFM
-typedef UniversalProcPtr GetIPIOCompletionUPP;
-#else
-typedef GetIPIOCompletionProcPtr GetIPIOCompletionUPP;
-#endif
-
-#define GetIPParamBlockHeader \
- struct QElem* qLink; \
- short qType; \
- short ioTrap; \
- Ptr ioCmdAddr; \
- GetIPIOCompletionUPP ioCompletion; \
- OSErr ioResult; \
- StringPtr ioNamePtr; \
- short ioVRefNum; \
- short ioCRefNum; \
- short csCode
-struct GetAddrParamBlock {
- struct QElem *qLink;
- short qType;
- short ioTrap;
- Ptr ioCmdAddr;
- GetIPIOCompletionUPP ioCompletion;
- OSErr ioResult;
- StringPtr ioNamePtr;
- short ioVRefNum;
- short ioCRefNum;
- short csCode; /* standard I/O header */
- ip_addr ourAddress; /* our IP address */
- long ourNetMask; /* our IP net mask */
-};
-typedef struct GetAddrParamBlock GetAddrParamBlock;
-
-/* control codes */
-
-enum {
- ipctlEchoICMP = 17, /* send icmp echo */
- ipctlLAPStats = 19 /* get lap stats */
-};
-
-typedef void (*IPIOCompletionProcPtr)(struct ICMPParamBlock *iopb);
-
-#if GENERATINGCFM
-typedef UniversalProcPtr IPIOCompletionUPP;
-#else
-typedef IPIOCompletionProcPtr IPIOCompletionUPP;
-#endif
-
-#define IPParamBlockHeader \
- struct QElem* qLink; \
- short qType; \
- short ioTrap; \
- Ptr ioCmdAddr; \
- IPIOCompletionUPP ioCompletion; \
- OSErr ioResult; \
- StringPtr ioNamePtr; \
- short ioVRefNum; \
- short ioCRefNum; \
- short csCode
-struct ICMPParamBlock {
- struct QElem *qLink;
- short qType;
- short ioTrap;
- Ptr ioCmdAddr;
- IPIOCompletionUPP ioCompletion;
- OSErr ioResult;
- StringPtr ioNamePtr;
- short ioVRefNum;
- short ioCRefNum;
- short csCode; /* standard I/O header */
- short params[11];
- struct {
- unsigned long echoRequestOut; /* time in ticks of when the echo request went out */
- unsigned long echoReplyIn; /* time in ticks of when the reply was received */
- struct rdsEntry echoedData; /* data received in responce */
- Ptr options;
- unsigned long userDataPtr;
- } icmpEchoInfo;
-};
-typedef pascal void (*ICMPEchoNotifyProcPtr)(struct ICMPParamBlock *iopb);
-
-#if GENERATINGCFM
-typedef UniversalProcPtr ICMPEchoNotifyUPP;
-#else
-typedef ICMPEchoNotifyProcPtr ICMPEchoNotifyUPP;
-#endif
-
-struct IPParamBlock {
- struct QElem *qLink;
- short qType;
- short ioTrap;
- Ptr ioCmdAddr;
- IPIOCompletionUPP ioCompletion;
- OSErr ioResult;
- StringPtr ioNamePtr;
- short ioVRefNum;
- short ioCRefNum;
- short csCode; /* standard I/O header */
- union {
- struct {
- ip_addr dest; /* echo to IP address */
- wdsEntry data;
- short timeout;
- Ptr options;
- unsigned short optLength;
- ICMPEchoNotifyUPP icmpCompletion;
- unsigned long userDataPtr;
- } IPEchoPB;
- struct {
- struct LAPStats *lapStatsPtr;
- } LAPStatsPB;
- } csParam;
-};
-union LAPStatsAddrXlation {
- struct arp_entry *arp_table;
- struct nbp_entry *nbp_table;
-};
-struct LAPStats {
- short ifType;
- char *ifString;
- short ifMaxMTU;
- long ifSpeed;
- short ifPhyAddrLength;
- char *ifPhysicalAddress;
- union LAPStatsAddrXlation AddrXlation;
- short slotNumber;
-};
-typedef struct LAPStats LAPStats;
-
-struct nbp_entry {
- ip_addr ip_address; /* IP address */
- AddrBlock at_address; /* matching AppleTalk address */
- Boolean gateway; /* TRUE if entry for a gateway */
- Boolean valid; /* TRUE if LAP address is valid */
- Boolean probing; /* TRUE if NBP lookup pending */
- SInt8 afiller; /* Filler for proper byte alignment */
- long age; /* ticks since cache entry verified */
- long access; /* ticks since last access */
- SInt8 filler[116]; /* for internal use only !!! */
-};
-struct Enet_addr {
- b_16 en_hi;
- b_32 en_lo;
-};
-typedef struct Enet_addr Enet_addr;
-
-struct arp_entry {
- short age; /* cache aging field */
- b_16 protocol; /* Protocol type */
- ip_addr ip_address; /* IP address */
- Enet_addr en_address; /* matching Ethernet address */
-};
-typedef struct arp_entry arp_entry;
-
-/* number of ARP table entries */
-
-enum {
- ARP_TABLE_SIZE = 20
-};
-
-enum {
- NBP_TABLE_SIZE = 20, /* number of NBP table entries */
- NBP_MAX_NAME_SIZE = 16 + 10 + 2
-};
-
-/* Command codes */
-enum {
- TCPCreate = 30,
- TCPPassiveOpen = 31,
- TCPActiveOpen = 32,
- TCPSend = 34,
- TCPNoCopyRcv = 35,
- TCPRcvBfrReturn = 36,
- TCPRcv = 37,
- TCPClose = 38,
- TCPAbort = 39,
- TCPStatus = 40,
- TCPExtendedStat = 41,
- TCPRelease = 42,
- TCPGlobalInfo = 43,
- TCPCtlMax = 49
-};
-
-enum {
- TCPClosing = 1,
- TCPULPTimeout = 2,
- TCPTerminate = 3,
- TCPDataArrival = 4,
- TCPUrgent = 5,
- TCPICMPReceived = 6,
- lastEvent = 32767
-};
-
-typedef unsigned short TCPEventCode;
-
-
-enum {
- TCPRemoteAbort = 2,
- TCPNetworkFailure = 3,
- TCPSecPrecMismatch = 4,
- TCPULPTimeoutTerminate = 5,
- TCPULPAbort = 6,
- TCPULPClose = 7,
- TCPServiceError = 8,
- lastReason = 32767
-};
-
-typedef unsigned short TCPTerminationReason;
-
-typedef pascal void (*TCPNotifyProcPtr)(StreamPtr tcpStream, unsigned short eventCode, Ptr userDataPtr, unsigned short terminReason, struct ICMPReport *icmpMsg);
-
-#if GENERATINGCFM
-typedef UniversalProcPtr TCPNotifyUPP;
-#else
-typedef TCPNotifyProcPtr TCPNotifyUPP;
-#endif
-
-typedef unsigned short tcp_port;
-
-/* ValidityFlags */
-
-enum {
- timeoutValue = 0x80,
- timeoutAction = 0x40,
- typeOfService = 0x20,
- precedence = 0x10
-};
-
-/* TOSFlags */
-enum {
- lowDelay = 0x01,
- throughPut = 0x02,
- reliability = 0x04
-};
-
-struct TCPCreatePB {
- Ptr rcvBuff;
- unsigned long rcvBuffLen;
- TCPNotifyUPP notifyProc;
- Ptr userDataPtr;
-};
-typedef struct TCPCreatePB TCPCreatePB;
-
-struct TCPOpenPB {
- SInt8 ulpTimeoutValue;
- SInt8 ulpTimeoutAction;
- SInt8 validityFlags;
- SInt8 commandTimeoutValue;
- ip_addr remoteHost;
- tcp_port remotePort;
- ip_addr localHost;
- tcp_port localPort;
- SInt8 tosFlags;
- SInt8 precedence;
- Boolean dontFrag;
- SInt8 timeToLive;
- SInt8 security;
- SInt8 optionCnt;
- SInt8 options[40];
- Ptr userDataPtr;
-};
-typedef struct TCPOpenPB TCPOpenPB;
-
-struct TCPSendPB {
- SInt8 ulpTimeoutValue;
- SInt8 ulpTimeoutAction;
- SInt8 validityFlags;
- Boolean pushFlag;
- Boolean urgentFlag;
- SInt8 filler; /* Filler for proper byte alignment */
- Ptr wdsPtr;
- unsigned long sendFree;
- unsigned short sendLength;
- Ptr userDataPtr;
-};
-typedef struct TCPSendPB TCPSendPB;
-
-/* for receive and return rcv buff calls */
-/* Note: the filler in the following structure is in a different location than */
-/* that specified in the Programmer's Guide. */
-struct TCPReceivePB {
- SInt8 commandTimeoutValue;
- Boolean markFlag;
- Boolean urgentFlag;
- SInt8 filler; /* Filler for proper byte alignment */
- Ptr rcvBuff;
- unsigned short rcvBuffLen;
- Ptr rdsPtr;
- unsigned short rdsLength;
- unsigned short secondTimeStamp;
- Ptr userDataPtr;
-};
-typedef struct TCPReceivePB TCPReceivePB;
-
-struct TCPClosePB {
- SInt8 ulpTimeoutValue;
- SInt8 ulpTimeoutAction;
- SInt8 validityFlags;
- SInt8 filler; /* Filler for proper byte alignment */
- Ptr userDataPtr;
-};
-typedef struct TCPClosePB TCPClosePB;
-
-struct HistoBucket {
- unsigned short value;
- unsigned long counter;
-};
-typedef struct HistoBucket HistoBucket;
-
-
-enum {
- NumOfHistoBuckets = 7
-};
-
-struct TCPConnectionStats {
- unsigned long dataPktsRcvd;
- unsigned long dataPktsSent;
- unsigned long dataPktsResent;
- unsigned long bytesRcvd;
- unsigned long bytesRcvdDup;
- unsigned long bytesRcvdPastWindow;
- unsigned long bytesSent;
- unsigned long bytesResent;
- unsigned short numHistoBuckets;
- struct HistoBucket sentSizeHisto[NumOfHistoBuckets];
- unsigned short lastRTT;
- unsigned short tmrSRTT;
- unsigned short rttVariance;
- unsigned short tmrRTO;
- SInt8 sendTries;
- SInt8 sourchQuenchRcvd;
-};
-typedef struct TCPConnectionStats TCPConnectionStats;
-
-struct TCPStatusPB {
- SInt8 ulpTimeoutValue;
- SInt8 ulpTimeoutAction;
- long unused;
- ip_addr remoteHost;
- tcp_port remotePort;
- ip_addr localHost;
- tcp_port localPort;
- SInt8 tosFlags;
- SInt8 precedence;
- SInt8 connectionState;
- SInt8 filler; /* Filler for proper byte alignment */
- unsigned short sendWindow;
- unsigned short rcvWindow;
- unsigned short amtUnackedData;
- unsigned short amtUnreadData;
- Ptr securityLevelPtr;
- unsigned long sendUnacked;
- unsigned long sendNext;
- unsigned long congestionWindow;
- unsigned long rcvNext;
- unsigned long srtt;
- unsigned long lastRTT;
- unsigned long sendMaxSegSize;
- struct TCPConnectionStats *connStatPtr;
- Ptr userDataPtr;
-};
-typedef struct TCPStatusPB TCPStatusPB;
-
-struct TCPAbortPB {
- Ptr userDataPtr;
-};
-typedef struct TCPAbortPB TCPAbortPB;
-
-struct TCPParam {
- unsigned long tcpRtoA;
- unsigned long tcpRtoMin;
- unsigned long tcpRtoMax;
- unsigned long tcpMaxSegSize;
- unsigned long tcpMaxConn;
- unsigned long tcpMaxWindow;
-};
-typedef struct TCPParam TCPParam;
-
-struct TCPStats {
- unsigned long tcpConnAttempts;
- unsigned long tcpConnOpened;
- unsigned long tcpConnAccepted;
- unsigned long tcpConnClosed;
- unsigned long tcpConnAborted;
- unsigned long tcpOctetsIn;
- unsigned long tcpOctetsOut;
- unsigned long tcpOctetsInDup;
- unsigned long tcpOctetsRetrans;
- unsigned long tcpInputPkts;
- unsigned long tcpOutputPkts;
- unsigned long tcpDupPkts;
- unsigned long tcpRetransPkts;
-};
-typedef struct TCPStats TCPStats;
-
-typedef StreamPtr *StreamPPtr;
-
-struct TCPGlobalInfoPB {
- struct TCPParam *tcpParamPtr;
- struct TCPStats *tcpStatsPtr;
- StreamPPtr tcpCDBTable[1];
- Ptr userDataPtr;
- unsigned short maxTCPConnections;
-};
-typedef struct TCPGlobalInfoPB TCPGlobalInfoPB;
-
-typedef void (*TCPIOCompletionProcPtr)(struct TCPiopb *iopb);
-
-#if GENERATINGCFM
-typedef UniversalProcPtr TCPIOCompletionUPP;
-#else
-typedef TCPIOCompletionProcPtr TCPIOCompletionUPP;
-#endif
-
-struct TCPiopb {
- SInt8 fill12[12];
- TCPIOCompletionUPP ioCompletion;
- short ioResult;
- Ptr ioNamePtr;
- short ioVRefNum;
- short ioCRefNum;
- short csCode;
- StreamPtr tcpStream;
- union {
- struct TCPCreatePB create;
- struct TCPOpenPB open;
- struct TCPSendPB send;
- struct TCPReceivePB receive;
- struct TCPClosePB close;
- struct TCPAbortPB abort;
- struct TCPStatusPB status;
- struct TCPGlobalInfoPB globalInfo;
- } csParam;
-};
-typedef struct TCPiopb TCPiopb;
-
-
-enum {
- UDPCreate = 20,
- UDPRead = 21,
- UDPBfrReturn = 22,
- UDPWrite = 23,
- UDPRelease = 24,
- UDPMaxMTUSize = 25,
- UDPStatus = 26,
- UDPMultiCreate = 27,
- UDPMultiSend = 28,
- UDPMultiRead = 29,
- UDPCtlMax = 29
-};
-
-enum {
- UDPDataArrival = 1,
- UDPICMPReceived = 2,
- lastUDPEvent = 32767
-};
-
-typedef unsigned short UDPEventCode;
-
-typedef pascal void (*UDPNotifyProcPtr)(StreamPtr udpStream, unsigned short eventCode, Ptr userDataPtr, struct ICMPReport *icmpMsg);
-
-#if GENERATINGCFM
-typedef UniversalProcPtr UDPNotifyUPP;
-#else
-typedef UDPNotifyProcPtr UDPNotifyUPP;
-#endif
-
-typedef unsigned short udp_port;
-
-/* for create and release calls */
-struct UDPCreatePB {
- Ptr rcvBuff;
- unsigned long rcvBuffLen;
- UDPNotifyUPP notifyProc;
- unsigned short localPort;
- Ptr userDataPtr;
- udp_port endingPort;
-};
-typedef struct UDPCreatePB UDPCreatePB;
-
-struct UDPSendPB {
- unsigned short reserved;
- ip_addr remoteHost;
- udp_port remotePort;
- Ptr wdsPtr;
- Boolean checkSum;
- SInt8 filler; /* Filler for proper byte alignment */
- unsigned short sendLength;
- Ptr userDataPtr;
- udp_port localPort;
-};
-typedef struct UDPSendPB UDPSendPB;
-
-/* for receive and buffer return calls */
-struct UDPReceivePB {
- unsigned short timeOut;
- ip_addr remoteHost;
- udp_port remotePort;
- Ptr rcvBuff;
- unsigned short rcvBuffLen;
- unsigned short secondTimeStamp;
- Ptr userDataPtr;
- ip_addr destHost; /* only for use with multi rcv */
- udp_port destPort; /* only for use with multi rcv */
-};
-typedef struct UDPReceivePB UDPReceivePB;
-
-struct UDPMTUPB {
- unsigned short mtuSize;
- ip_addr remoteHost;
- Ptr userDataPtr;
-};
-typedef struct UDPMTUPB UDPMTUPB;
-
-typedef void (*UDPIOCompletionProcPtr)(struct UDPiopb *iopb);
-
-#if GENERATINGCFM
-typedef UniversalProcPtr UDPIOCompletionUPP;
-#else
-typedef UDPIOCompletionProcPtr UDPIOCompletionUPP;
-#endif
-
-struct UDPiopb {
- SInt8 fill12[12];
- UDPIOCompletionUPP ioCompletion;
- short ioResult;
- Ptr ioNamePtr;
- short ioVRefNum;
- short ioCRefNum;
- short csCode;
- StreamPtr udpStream;
- union {
- struct UDPCreatePB create;
- struct UDPSendPB send;
- struct UDPReceivePB receive;
- struct UDPMTUPB mtu;
- } csParam;
-};
-typedef struct UDPiopb UDPiopb;
-
-
-#if GENERATINGCFM
-#else
-#endif
-
-enum {
- uppGetIPIOCompletionProcInfo = kCStackBased
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(struct GetAddrParamBlock*))),
- uppIPIOCompletionProcInfo = kCStackBased
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(struct ICMPParamBlock*))),
- uppICMPEchoNotifyProcInfo = kPascalStackBased
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(struct ICMPParamBlock*))),
- uppTCPNotifyProcInfo = kPascalStackBased
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(StreamPtr)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(unsigned short)))
- | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Ptr)))
- | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(unsigned short)))
- | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(struct ICMPReport*))),
- uppTCPIOCompletionProcInfo = kCStackBased
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(struct TCPiopb*))),
- uppUDPNotifyProcInfo = kPascalStackBased
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(StreamPtr)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(unsigned short)))
- | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Ptr)))
- | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(struct ICMPReport*))),
- uppUDPIOCompletionProcInfo = kCStackBased
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(struct UDPiopb*)))
-};
-
-#if GENERATINGCFM
-#define NewGetIPIOCompletionProc(userRoutine) \
- (GetIPIOCompletionUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppGetIPIOCompletionProcInfo, GetCurrentArchitecture())
-#define NewIPIOCompletionProc(userRoutine) \
- (IPIOCompletionUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppIPIOCompletionProcInfo, GetCurrentArchitecture())
-#define NewICMPEchoNotifyProc(userRoutine) \
- (ICMPEchoNotifyUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMPEchoNotifyProcInfo, GetCurrentArchitecture())
-#define NewTCPNotifyProc(userRoutine) \
- (TCPNotifyUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTCPNotifyProcInfo, GetCurrentArchitecture())
-#define NewTCPIOCompletionProc(userRoutine) \
- (TCPIOCompletionUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTCPIOCompletionProcInfo, GetCurrentArchitecture())
-#define NewUDPNotifyProc(userRoutine) \
- (UDPNotifyUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppUDPNotifyProcInfo, GetCurrentArchitecture())
-#define NewUDPIOCompletionProc(userRoutine) \
- (UDPIOCompletionUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppUDPIOCompletionProcInfo, GetCurrentArchitecture())
-#else
-#define NewGetIPIOCompletionProc(userRoutine) \
- ((GetIPIOCompletionUPP) (userRoutine))
-#define NewIPIOCompletionProc(userRoutine) \
- ((IPIOCompletionUPP) (userRoutine))
-#define NewICMPEchoNotifyProc(userRoutine) \
- ((ICMPEchoNotifyUPP) (userRoutine))
-#define NewTCPNotifyProc(userRoutine) \
- ((TCPNotifyUPP) (userRoutine))
-#define NewTCPIOCompletionProc(userRoutine) \
- ((TCPIOCompletionUPP) (userRoutine))
-#define NewUDPNotifyProc(userRoutine) \
- ((UDPNotifyUPP) (userRoutine))
-#define NewUDPIOCompletionProc(userRoutine) \
- ((UDPIOCompletionUPP) (userRoutine))
-#endif
-
-#if GENERATINGCFM
-#define CallGetIPIOCompletionProc(userRoutine, iopb) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppGetIPIOCompletionProcInfo, (iopb))
-#define CallIPIOCompletionProc(userRoutine, iopb) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppIPIOCompletionProcInfo, (iopb))
-#define CallICMPEchoNotifyProc(userRoutine, iopb) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppICMPEchoNotifyProcInfo, (iopb))
-#define CallTCPNotifyProc(userRoutine, tcpStream, eventCode, userDataPtr, terminReason, icmpMsg) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppTCPNotifyProcInfo, (tcpStream), (eventCode), (userDataPtr), (terminReason), (icmpMsg))
-#define CallTCPIOCompletionProc(userRoutine, iopb) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppTCPIOCompletionProcInfo, (iopb))
-#define CallUDPNotifyProc(userRoutine, udpStream, eventCode, userDataPtr, icmpMsg) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppUDPNotifyProcInfo, (udpStream), (eventCode), (userDataPtr), (icmpMsg))
-#define CallUDPIOCompletionProc(userRoutine, iopb) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppUDPIOCompletionProcInfo, (iopb))
-#else
-#define CallGetIPIOCompletionProc(userRoutine, iopb) \
- (*(userRoutine))((iopb))
-#define CallIPIOCompletionProc(userRoutine, iopb) \
- (*(userRoutine))((iopb))
-#define CallICMPEchoNotifyProc(userRoutine, iopb) \
- (*(userRoutine))((iopb))
-#define CallTCPNotifyProc(userRoutine, tcpStream, eventCode, userDataPtr, terminReason, icmpMsg) \
- (*(userRoutine))((tcpStream), (eventCode), (userDataPtr), (terminReason), (icmpMsg))
-#define CallTCPIOCompletionProc(userRoutine, iopb) \
- (*(userRoutine))((iopb))
-#define CallUDPNotifyProc(userRoutine, udpStream, eventCode, userDataPtr, icmpMsg) \
- (*(userRoutine))((udpStream), (eventCode), (userDataPtr), (icmpMsg))
-#define CallUDPIOCompletionProc(userRoutine, iopb) \
- (*(userRoutine))((iopb))
-#endif
-
-
-#if PRAGMA_IMPORT_SUPPORTED
-#pragma import off
-#endif
-
-#if PRAGMA_ALIGN_SUPPORTED
-#pragma options align=reset
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __MACTCP__ */