summaryrefslogtreecommitdiff
path: root/common/quicktime_win32/OpenTransportProviders.h
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /common/quicktime_win32/OpenTransportProviders.h
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'common/quicktime_win32/OpenTransportProviders.h')
-rw-r--r--common/quicktime_win32/OpenTransportProviders.h2414
1 files changed, 2414 insertions, 0 deletions
diff --git a/common/quicktime_win32/OpenTransportProviders.h b/common/quicktime_win32/OpenTransportProviders.h
new file mode 100644
index 0000000..3ace81f
--- /dev/null
+++ b/common/quicktime_win32/OpenTransportProviders.h
@@ -0,0 +1,2414 @@
+/*
+ File: OpenTransportProviders.h
+
+ Contains: This file contains provider-specific definitions for various built-in providers.
+
+ Version: QuickTime 7.3
+
+ Copyright: (c) 2007 (c) 1993-2001 by Apple Computer, Inc. and Mentat Inc., all rights reserved.
+
+ Bugs?: For bug reports, consult the following page on
+ the World Wide Web:
+
+ http://developer.apple.com/bugreporter/
+
+*/
+#ifndef __OPENTRANSPORTPROVIDERS__
+#define __OPENTRANSPORTPROVIDERS__
+
+#ifndef __OPENTRANSPORT__
+#include <OpenTransport.h>
+#endif
+
+
+
+
+#if PRAGMA_ONCE
+#pragma once
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if PRAGMA_IMPORT
+#pragma import on
+#endif
+
+#if PRAGMA_STRUCT_ALIGN
+ #pragma options align=mac68k
+#elif PRAGMA_STRUCT_PACKPUSH
+ #pragma pack(push, 2)
+#elif PRAGMA_STRUCT_PACK
+ #pragma pack(2)
+#endif
+
+#if defined(__MWERKS__) && TARGET_CPU_68K
+ #pragma push
+ #pragma pointers_in_D0
+#endif
+
+
+/* ***** TCP/IP ******/
+
+/* Basic types*/
+
+typedef UInt16 InetPort;
+typedef UInt32 InetHost;
+/* Enums used as address type designations.*/
+#define AF_INET 2
+enum {
+ AF_DNS = 42
+};
+
+
+/*
+ Enum which can be used to bind to all IP interfaces
+ rather than a specific one.
+*/
+
+enum {
+ kOTAnyInetAddress = 0 /* Wildcard*/
+};
+
+/*
+ Define the InetSvcRef type. This type needs special
+ processing because in C++ it's a subclass of TProvider.
+ See the definition of TEndpointRef in "OpenTransport.h"
+ for the logic behind this definition.
+*/
+
+#ifdef __cplusplus
+ typedef class TInternetServices* InetSvcRef;
+#else
+ typedef void* InetSvcRef;
+#endif
+#define kDefaultInternetServicesPath ((OTConfigurationRef)-3L)
+/* Shared library prefixes*/
+
+
+#define kInetVersion "3.1.1"
+#define kInetPrefix "ot:inet$"
+
+/* Module Names*/
+
+
+#define kDNRName "dnr"
+#define kTCPName "tcp"
+#define kUDPName "udp"
+#define kRawIPName "rawip"
+
+/* XTI Options*/
+
+/* Protocol levels*/
+
+enum {
+ INET_IP = 0x00,
+ INET_TCP = 0x06,
+ INET_UDP = 0x11
+};
+
+/* TCP Level Options*/
+
+enum {
+ TCP_NODELAY = 0x01,
+ TCP_MAXSEG = 0x02,
+ TCP_NOTIFY_THRESHOLD = 0x10, /** not a real XTI option */
+ TCP_ABORT_THRESHOLD = 0x11, /** not a real XTI option */
+ TCP_CONN_NOTIFY_THRESHOLD = 0x12, /** not a real XTI option */
+ TCP_CONN_ABORT_THRESHOLD = 0x13, /** not a real XTI option */
+ TCP_OOBINLINE = 0x14, /** not a real XTI option */
+ TCP_URGENT_PTR_TYPE = 0x15, /** not a real XTI option */
+ TCP_KEEPALIVE = 0x0008 /* keepalive defined in OpenTransport.h */
+};
+
+enum {
+ T_GARBAGE = 2
+};
+
+/* UDP Level Options*/
+
+enum {
+ UDP_CHECKSUM = 0x0600,
+ UDP_RX_ICMP = 0x02
+};
+
+/* IP Level Options*/
+enum {
+ kIP_OPTIONS = 0x01,
+ kIP_TOS = 0x02,
+ kIP_TTL = 0x03,
+ kIP_REUSEADDR = 0x04,
+ kIP_DONTROUTE = 0x10,
+ kIP_BROADCAST = 0x20,
+ kIP_REUSEPORT = 0x0200,
+ kIP_HDRINCL = 0x1002,
+ kIP_RCVOPTS = 0x1005,
+ kIP_RCVDSTADDR = 0x1007,
+ kIP_MULTICAST_IF = 0x1010, /* set/get IP multicast interface */
+ kIP_MULTICAST_TTL = 0x1011, /* set/get IP multicast timetolive */
+ kIP_MULTICAST_LOOP = 0x1012, /* set/get IP multicast loopback */
+ kIP_ADD_MEMBERSHIP = 0x1013, /* add an IP group membership */
+ kIP_DROP_MEMBERSHIP = 0x1014, /* drop an IP group membership */
+ kIP_BROADCAST_IFNAME = 0x1015, /* Set interface for broadcasts */
+ kIP_RCVIFADDR = 0x1016 /* Set interface for broadcasts */
+};
+
+enum {
+ IP_OPTIONS = kIP_OPTIONS,
+ IP_TOS = kIP_TOS,
+ IP_TTL = kIP_TTL,
+ IP_REUSEADDR = kIP_REUSEADDR,
+ IP_DONTROUTE = kIP_DONTROUTE,
+ IP_BROADCAST = kIP_BROADCAST,
+ IP_REUSEPORT = kIP_REUSEPORT,
+ IP_HDRINCL = kIP_HDRINCL,
+ IP_RCVOPTS = kIP_RCVOPTS,
+ IP_RCVDSTADDR = kIP_RCVDSTADDR,
+ IP_MULTICAST_IF = kIP_MULTICAST_IF, /* set/get IP multicast interface */
+ IP_MULTICAST_TTL = kIP_MULTICAST_TTL, /* set/get IP multicast timetolive */
+ IP_MULTICAST_LOOP = kIP_MULTICAST_LOOP, /* set/get IP multicast loopback */
+ IP_ADD_MEMBERSHIP = kIP_ADD_MEMBERSHIP, /* add an IP group membership */
+ IP_DROP_MEMBERSHIP = kIP_DROP_MEMBERSHIP, /* drop an IP group membership */
+ IP_BROADCAST_IFNAME = kIP_BROADCAST_IFNAME, /* Set interface for broadcasts */
+ IP_RCVIFADDR = kIP_RCVIFADDR /* Set interface for broadcasts */
+};
+
+enum {
+ DVMRP_INIT = 100, /* DVMRP-specific setsockopt commands, from ip_mroute.h*/
+ DVMRP_DONE = 101,
+ DVMRP_ADD_VIF = 102,
+ DVMRP_DEL_VIF = 103,
+ DVMRP_ADD_LGRP = 104,
+ DVMRP_DEL_LGRP = 105,
+ DVMRP_ADD_MRT = 106,
+ DVMRP_DEL_MRT = 107
+};
+
+
+/* IP_TOS precdence levels*/
+
+enum {
+ T_ROUTINE = 0,
+ T_PRIORITY = 1,
+ T_IMMEDIATE = 2,
+ T_FLASH = 3,
+ T_OVERRIDEFLASH = 4,
+ T_CRITIC_ECP = 5,
+ T_INETCONTROL = 6,
+ T_NETCONTROL = 7
+};
+
+/* IP_TOS type of service*/
+
+enum {
+ T_NOTOS = 0x00,
+ T_LDELAY = (1 << 4),
+ T_HITHRPT = (1 << 3),
+ T_HIREL = (1 << 2)
+};
+
+#define SET_TOS(prec,tos) (((0x7 & (prec)) << 5) | (0x1c & (tos)))
+/* IP Multicast option structures*/
+
+struct TIPAddMulticast {
+ InetHost multicastGroupAddress;
+ InetHost interfaceAddress;
+};
+typedef struct TIPAddMulticast TIPAddMulticast;
+/* Protocol-specific events*/
+enum {
+ T_DNRSTRINGTOADDRCOMPLETE = kPRIVATEEVENT + 1,
+ T_DNRADDRTONAMECOMPLETE = kPRIVATEEVENT + 2,
+ T_DNRSYSINFOCOMPLETE = kPRIVATEEVENT + 3,
+ T_DNRMAILEXCHANGECOMPLETE = kPRIVATEEVENT + 4,
+ T_DNRQUERYCOMPLETE = kPRIVATEEVENT + 5
+};
+
+/* InetAddress*/
+
+struct InetAddress {
+ OTAddressType fAddressType; /* always AF_INET*/
+ InetPort fPort; /* Port number */
+ InetHost fHost; /* Host address in net byte order*/
+ UInt8 fUnused[8]; /* Traditional unused bytes*/
+};
+typedef struct InetAddress InetAddress;
+/* Domain Name Resolver (DNR) */
+enum {
+ kMaxHostAddrs = 10,
+ kMaxSysStringLen = 32,
+ kMaxHostNameLen = 255
+};
+
+
+typedef char InetDomainName[256];
+struct InetHostInfo {
+ InetDomainName name;
+ InetHost addrs[10];
+};
+typedef struct InetHostInfo InetHostInfo;
+struct InetSysInfo {
+ char cpuType[32];
+ char osType[32];
+};
+typedef struct InetSysInfo InetSysInfo;
+struct InetMailExchange {
+ UInt16 preference;
+ InetDomainName exchange;
+};
+typedef struct InetMailExchange InetMailExchange;
+struct DNSQueryInfo {
+ UInt16 qType;
+ UInt16 qClass;
+ UInt32 ttl;
+ InetDomainName name;
+ UInt16 responseType; /* answer, authority, or additional*/
+ UInt16 resourceLen; /* actual length of array which follows*/
+ char resourceData[4]; /* size varies*/
+};
+typedef struct DNSQueryInfo DNSQueryInfo;
+/* DNSAddress*/
+/*
+ The DNSAddress format is optional and may be used in connects,
+ datagram sends, and resolve address calls. The name takes the
+ format "somewhere.com" or "somewhere.com:portnumber" where
+ the ":portnumber" is optional. The length of this structure
+ is arbitrarily limited to the overall max length of a domain
+ name (255 chars), although a longer one can be use successfully
+ if you use this as a template for doing so. However, the domain name
+ is still limited to 255 characters.
+*/
+
+struct DNSAddress {
+ OTAddressType fAddressType; /* always AF_DNS*/
+ InetDomainName fName;
+};
+typedef struct DNSAddress DNSAddress;
+/* InetInterfaceInfo*/
+enum {
+ kDefaultInetInterface = -1
+};
+
+enum {
+ kInetInterfaceInfoVersion = 3
+};
+
+struct InetInterfaceInfo {
+ InetHost fAddress;
+ InetHost fNetmask;
+ InetHost fBroadcastAddr;
+ InetHost fDefaultGatewayAddr;
+ InetHost fDNSAddr;
+ UInt16 fVersion;
+ UInt16 fHWAddrLen;
+ UInt8 * fHWAddr;
+ UInt32 fIfMTU;
+ UInt8 * fReservedPtrs[2];
+ InetDomainName fDomainName;
+ UInt32 fIPSecondaryCount;
+ UInt8 fReserved[252];
+};
+typedef struct InetInterfaceInfo InetInterfaceInfo;
+/* InetDHCPOption*/
+enum {
+ kAllDHCPOptions = -1,
+ kDHCPLongOption = 126,
+ kDHCPLongOptionReq = 127
+};
+
+struct InetDHCPOption {
+ UInt8 fOptionTag;
+ UInt8 fOptionLen;
+ UInt8 fOptionValue;
+};
+typedef struct InetDHCPOption InetDHCPOption;
+/* TCP/IP Utility Routines*/
+
+/*
+ * OTInitInetAddress()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( void )
+OTInitInetAddress(
+ InetAddress * addr,
+ InetPort port,
+ InetHost host);
+
+
+/*
+ * OTInitDNSAddress()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OTByteCount )
+OTInitDNSAddress(
+ DNSAddress * addr,
+ char * str);
+
+
+/*
+ * OTInetStringToHost()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSStatus )
+OTInetStringToHost(
+ const char * str,
+ InetHost * host);
+
+
+/*
+ * OTInetHostToString()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( void )
+OTInetHostToString(
+ InetHost host,
+ char * str);
+
+
+/*
+ * OTInetGetInterfaceInfo()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSStatus )
+OTInetGetInterfaceInfo(
+ InetInterfaceInfo * info,
+ SInt32 val);
+
+
+/*
+ * OTInetGetSecondaryAddresses()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSStatus )
+OTInetGetSecondaryAddresses(
+ InetHost * addr,
+ UInt32 * count,
+ SInt32 val);
+
+
+#if CALL_NOT_IN_CARBON
+/*
+ * OTInetGetDHCPConfigInfo()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API( OSStatus )
+OTInetGetDHCPConfigInfo(
+ InetDHCPOption * buf,
+ UInt32 bufSize,
+ SInt32 index,
+ SInt32 opt);
+
+
+/* InetServices & DNR Calls*/
+
+#endif /* CALL_NOT_IN_CARBON */
+
+#if !OTKERNEL
+/*
+ Under Carbon, OTOpenInternetServices routines take a client context pointer. Applications may pass NULL
+ after calling InitOpenTransport(kInitOTForApplicationMask, ...). Non-applications must always pass a
+ valid client context.
+*/
+/*
+ * OTOpenInternetServicesInContext()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( InetSvcRef )
+OTOpenInternetServicesInContext(
+ OTConfigurationRef cfig,
+ OTOpenFlags oflag,
+ OSStatus * err,
+ OTClientContextPtr clientContext);
+
+
+/*
+ * OTAsyncOpenInternetServicesInContext()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSStatus )
+OTAsyncOpenInternetServicesInContext(
+ OTConfigurationRef cfig,
+ OTOpenFlags oflag,
+ OTNotifyUPP upp,
+ void * contextPtr,
+ OTClientContextPtr clientContext);
+
+
+#if CALL_NOT_IN_CARBON
+/*
+ * OTOpenInternetServices()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API( InetSvcRef )
+OTOpenInternetServices(
+ OTConfigurationRef cfig,
+ OTOpenFlags oflag,
+ OSStatus * err);
+
+
+/*
+ * OTAsyncOpenInternetServices()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API( OSStatus )
+OTAsyncOpenInternetServices(
+ OTConfigurationRef cfig,
+ OTOpenFlags oflag,
+ OTNotifyUPP proc,
+ void * contextPtr);
+
+
+#endif /* CALL_NOT_IN_CARBON */
+
+#if OTCARBONAPPLICATION
+/* The following macro may be used by applications only.*/
+#define OTOpenInternetServices(cfig, oflags, err) OTOpenInternetServicesInContext(cfig, oflags, err, NULL)
+#define OTAsyncOpenInternetServices(cfig, oflags, proc, contextPtr) OTAsyncOpenInternetServicesInContext(cfig, oflags, proc, contextPtr, NULL)
+#endif /* OTCARBONAPPLICATION */
+
+/*
+ * OTInetStringToAddress()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSStatus )
+OTInetStringToAddress(
+ InetSvcRef ref,
+ char * name,
+ InetHostInfo * hinfo);
+
+
+/*
+ * OTInetAddressToName()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSStatus )
+OTInetAddressToName(
+ InetSvcRef ref,
+ InetHost addr,
+ InetDomainName name);
+
+
+/*
+ * OTInetSysInfo()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSStatus )
+OTInetSysInfo(
+ InetSvcRef ref,
+ char * name,
+ InetSysInfo * sysinfo);
+
+
+/*
+ * OTInetMailExchange()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSStatus )
+OTInetMailExchange(
+ InetSvcRef ref,
+ char * name,
+ UInt16 * num,
+ InetMailExchange * mx);
+
+
+/*
+ * OTInetQuery()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSStatus )
+OTInetQuery(
+ InetSvcRef ref,
+ char * name,
+ UInt16 qClass,
+ UInt16 qType,
+ char * buf,
+ OTByteCount buflen,
+ void ** argv,
+ OTByteCount argvlen,
+ OTFlags flags);
+
+
+#ifdef __cplusplus
+} // Terminate C definitions
+
+class TInternetServices : public TProvider
+{
+ public:
+ OSStatus StringToAddress(char* name, InetHostInfo* hinfo)
+ { return OTInetStringToAddress(this, name, hinfo); }
+
+ OSStatus AddressToName(InetHost addr, InetDomainName name)
+ { return OTInetAddressToName(this, addr, name); }
+
+ OSStatus SysInfo(char* name, InetSysInfo* sysinfo )
+ { return OTInetSysInfo(this, name, sysinfo); }
+
+ OSStatus MailExchange(char* name, UInt16* num, InetMailExchange* mx)
+ { return OTInetMailExchange(this, name, num, mx); }
+
+ OSStatus Query(char* name, UInt16 qClass, UInt16 qType,
+ char* buf, OTByteCount buflen,
+ void** argv, OTByteCount argvlen,
+ OTFlags flags)
+ { return OTInetQuery(this, name, qClass, qType, buf, buflen, argv, argvlen, flags); }
+};
+
+extern "C" { /* resume C definitions */
+#endif
+#endif /* !OTKERNEL */
+
+/* ***** AppleTalk ******/
+/* Shared library prefixes*/
+
+
+#define kATalkVersion "1.1"
+#define kATalkPrefix "ot:atlk$"
+#define kATBinderID "ot:atbd$"
+
+/*******************************************************************************
+** Module definitions
+********************************************************************************/
+/* XTI Levels*/
+
+enum {
+ ATK_DDP = FOUR_CHAR_CODE('DDP '),
+ ATK_AARP = FOUR_CHAR_CODE('AARP'),
+ ATK_ATP = FOUR_CHAR_CODE('ATP '),
+ ATK_ADSP = FOUR_CHAR_CODE('ADSP'),
+ ATK_ASP = FOUR_CHAR_CODE('ASP '),
+ ATK_PAP = FOUR_CHAR_CODE('PAP '),
+ ATK_NBP = FOUR_CHAR_CODE('NBP '),
+ ATK_ZIP = FOUR_CHAR_CODE('ZIP ')
+};
+
+/* Module Names*/
+
+
+#define kDDPName "ddp"
+#define kATPName "atp"
+#define kADSPName "adsp"
+#define kASPName "asp"
+#define kPAPName "pap"
+#define kNBPName "nbp"
+#define kZIPName "zip"
+#define kLTalkName "ltlk"
+#define kLTalkAName "ltlkA"
+#define kLTalkBName "ltlkB"
+
+/*
+ Protocol-specific Options
+ NOTE:
+ All Protocols support OPT_CHECKSUM (Value is (unsigned long)T_YES/T_NO)
+ ATP supports OPT_RETRYCNT (# Retries, 0 = try once) and
+ OPT_INTERVAL (# Milliseconds to wait)
+*/
+
+enum {
+ DDP_OPT_CHECKSUM = 0x0600,
+ DDP_OPT_SRCADDR = 0x2101, /* DDP UnitDataReq Only - set src address, Value is DDPAddress */
+ ATP_OPT_REPLYCNT = 0x2110, /* AppleTalk - ATP Resp Pkt Ct Type, Value is (unsigned long) pkt count */
+ ATP_OPT_DATALEN = 0x2111, /* AppleTalk - ATP Pkt Data Len Type, Value is (unsigned long) length */
+ ATP_OPT_RELTIMER = 0x2112, /* AppleTalk - ATP Release Timer Type, Value is (unsigned long) timer, (See Inside AppleTalk, second edition */
+ ATP_OPT_TRANID = 0x2113, /* Value is (unsigned long) Boolean, Used to request Transaction ID, Returned with Transaction ID on requests */
+ PAP_OPT_OPENRETRY = 0x2120 /* AppleTalk - PAP OpenConn Retry count, Value is (unsigned long) T_YES/T_NO */
+};
+
+/* Protocol-Specific Events*/
+
+/*
+ If you send the IOCTL: OTIoctl(I_OTGetMiscellaneousEvents, 1),
+ you will receive the T_ATALKxxx events on your endpoint.
+ NOTE: The endpoint does not need to be bound.
+*/
+
+enum {
+ kAppleTalkEvent = kPROTOCOLEVENT | 0x00010000,
+ T_GETMYZONECOMPLETE = kAppleTalkEvent + 1,
+ T_GETLOCALZONESCOMPLETE = kAppleTalkEvent + 2,
+ T_GETZONELISTCOMPLETE = kAppleTalkEvent + 3,
+ T_GETATALKINFOCOMPLETE = kAppleTalkEvent + 4,
+ T_ATALKROUTERDOWNEVENT = kAppleTalkEvent + 51, /* No routers have been seen for a while. If the cookie is NULL, all routers are gone. Otherwise, there is still an ARA router hanging around being used, and only the local cable has been timed out.*/
+ T_ATALKROUTERUPEVENT = kAppleTalkEvent + 52, /* We didn't have a router, but now one has come up. Cookie is NULL for a normal router coming up, non-NULL for an ARA router coming on-line*/
+ T_ATALKZONENAMECHANGEDEVENT = kAppleTalkEvent + 53, /* A Zone name change was issued from the router, so our AppleTalk Zone has changed.*/
+ T_ATALKCONNECTIVITYCHANGEDEVENT = kAppleTalkEvent + 54, /* An ARA connection was established (cookie != NULL), or was disconnected (cookie == NULL)*/
+ T_ATALKINTERNETAVAILABLEEVENT = kAppleTalkEvent + 55, /* A router has appeared, and our address is in the startup range. Cookie is hi/lo of new cable range.*/
+ T_ATALKCABLERANGECHANGEDEVENT = kAppleTalkEvent + 56 /* A router has appeared, and it's incompatible with our current address. Cookie is hi/lo of new cable range.*/
+};
+
+enum {
+ kAllATalkRoutersDown = 0, /* This indicates that all routers are offline*/
+ kLocalATalkRoutersDown = -1L, /* This indicates that all local routers went offline, but an ARA router is still active*/
+ kARARouterDisconnected = -2L /* This indicates that ARA was disconnected, do it's router went offline, and we have no local routers to fall back onto.*/
+};
+
+enum {
+ kARARouterOnline = -1L, /* We had no local routers, but an ARA router is now online.*/
+ kATalkRouterOnline = 0, /* We had no routers, but a local router is now online*/
+ kLocalATalkRouterOnline = -2L /* We have an ARA router, but now we've seen a local router as well*/
+};
+
+#define IsAppleTalkEvent(x) ((x) & 0xffff0000) == kAppleTalkEvent)
+/* Protocol-specific IOCTLs*/
+
+enum {
+ ATALK_IOC_FULLSELFSEND = ((MIOC_ATALK << 8) | 47), /* Turn on/off full self-send (it's automatic for non-backward-compatible links)*/
+ ADSP_IOC_FORWARDRESET = ((MIOC_ATALK << 8) | 60) /* ADSP Forward Reset*/
+};
+
+/* Protocol-specific constants*/
+
+/* ECHO*/
+
+enum {
+ kECHO_TSDU = 585 /* Max. # of data bytes.*/
+};
+
+/* NBP*/
+
+enum {
+ kNBPMaxNameLength = 32,
+ kNBPMaxTypeLength = 32,
+ kNBPMaxZoneLength = 32,
+ kNBPSlushLength = 9, /* Extra space for @, : and a few escape chars*/
+ kNBPMaxEntityLength = (kNBPMaxNameLength + kNBPMaxTypeLength + kNBPMaxZoneLength + 3),
+ kNBPEntityBufferSize = (kNBPMaxNameLength + kNBPMaxTypeLength + kNBPMaxZoneLength + kNBPSlushLength),
+ kNBPWildCard = 0x3D, /* NBP name and type match anything '='*/
+ kNBPImbeddedWildCard = 0xC5, /* NBP name and type match some '*'*/
+ kNBPDefaultZone = 0x2A /* NBP default zone '*'*/
+};
+
+/* ZIP*/
+
+enum {
+ kZIPMaxZoneLength = kNBPMaxZoneLength
+};
+
+enum {
+ kDDPAddressLength = 8, /* value to use in netbuf.len field, Maximum length of AppleTalk address*/
+ kNBPAddressLength = kNBPEntityBufferSize,
+ kAppleTalkAddressLength = kDDPAddressLength + kNBPEntityBufferSize
+};
+
+
+#define OTCopyDDPAddress(addr, dest) \
+ { \
+ ((UInt32*)(dest))[0] = ((UInt32*)(addr))[0]; \
+ ((UInt32*)(dest))[1] = ((UInt32*)(addr))[1]; \
+ }
+
+/*******************************************************************************
+** CLASS TAppleTalkServices
+********************************************************************************/
+#if !OTKERNEL
+/*
+ Define the ATSvcRef type. This type needs special
+ processing because in C++ it's a subclass of TProvider.
+ See the definition of TEndpointRef in "OpenTransport.h"
+ for the logic behind this definition.
+*/
+#ifdef __cplusplus
+ typedef class TAppleTalkServices* ATSvcRef;
+#else
+ typedef void* ATSvcRef;
+#endif
+#define kDefaultAppleTalkServicesPath ((OTConfigurationRef)-3L)
+/*
+ Under Carbon, OpenAppleTalkServices routines take a client context pointer. Applications may pass NULL
+ after calling InitOpenTransport(kInitOTForApplicationMask, ...). Non-applications must always pass a
+ valid client context.
+*/
+/*
+ * OTAsyncOpenAppleTalkServicesInContext()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSStatus )
+OTAsyncOpenAppleTalkServicesInContext(
+ OTConfigurationRef cfig,
+ OTOpenFlags flags,
+ OTNotifyUPP proc,
+ void * contextPtr,
+ OTClientContextPtr clientContext);
+
+
+/*
+ * OTOpenAppleTalkServicesInContext()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( ATSvcRef )
+OTOpenAppleTalkServicesInContext(
+ OTConfigurationRef cfig,
+ OTOpenFlags flags,
+ OSStatus * err,
+ OTClientContextPtr clientContext);
+
+
+#if CALL_NOT_IN_CARBON
+/*
+ * OTAsyncOpenAppleTalkServices()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API( OSStatus )
+OTAsyncOpenAppleTalkServices(
+ OTConfigurationRef cfig,
+ OTOpenFlags flags,
+ OTNotifyUPP proc,
+ void * contextPtr);
+
+
+/*
+ * OTOpenAppleTalkServices()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ */
+EXTERN_API( ATSvcRef )
+OTOpenAppleTalkServices(
+ OTConfigurationRef cfig,
+ OTOpenFlags flags,
+ OSStatus * err);
+
+
+#endif /* CALL_NOT_IN_CARBON */
+
+#if OTCARBONAPPLICATION
+/* The following macro may be used by applications only.*/
+#define OTOpenAppleTalkServices(cfig, oflags, err) OTOpenAppleTalkServicesInContext(cfig, oflags, err, NULL)
+#define OTAsyncOpenAppleTalkServices(cfig, oflags, proc, contextPtr) OTAsyncOpenAppleTalkServicesInContext(cfig, oflags, proc, contextPtr, NULL)
+#endif /* OTCARBONAPPLICATION */
+
+/* Get the zone associated with the ATSvcRef*/
+/*
+ * OTATalkGetMyZone()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.0.2 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSStatus )
+OTATalkGetMyZone(
+ ATSvcRef ref,
+ TNetbuf * zone);
+
+
+/*
+ Get the list of available zones associated with the local cable
+ of the ATSvcRef
+*/
+/*
+ * OTATalkGetLocalZones()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.0.2 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSStatus )
+OTATalkGetLocalZones(
+ ATSvcRef ref,
+ TNetbuf * zones);
+
+
+/* Get the list of all zones on the internet specified by the ATSvcRef*/
+/*
+ * OTATalkGetZoneList()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.0.2 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSStatus )
+OTATalkGetZoneList(
+ ATSvcRef ref,
+ TNetbuf * zones);
+
+
+/* Stores an AppleTalkInfo structure into the TNetbuf (see later in this file)*/
+/*
+ * OTATalkGetInfo()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.0.2 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSStatus )
+OTATalkGetInfo(
+ ATSvcRef ref,
+ TNetbuf * info);
+
+
+#ifdef __cplusplus
+} // Terminate C definitions
+
+class TAppleTalkServices : public TProvider
+{
+ public:
+ OSStatus GetMyZone(TNetbuf* zone) { return OTATalkGetMyZone(this, zone); }
+ OSStatus GetLocalZones(TNetbuf* zones) { return OTATalkGetLocalZones(this, zones); }
+ OSStatus GetZoneList(TNetbuf* zones) { return OTATalkGetZoneList(this, zones); }
+ OSStatus GetInfo(TNetbuf* info) { return OTATalkGetInfo(this, info); }
+};
+
+extern "C" { /* resume C definitions */
+#endif /* _cplus */
+#endif /* !OTKERNEL */
+
+/* AppleTalk Addressing*/
+/*
+ The NBPEntity structure is used to manipulate NBP names without regard
+ to issues of what kind of "special" characters are in the name.
+
+ When stored as an address in an NBPAddress or DDPNBPAddress, they are
+ stored as a character string, which is currently just ASCII, but in the
+ future may be UniChar, or some other internationalizable scripting set.
+ The string following an NBPAddress or DDPNBPAddress is intended to be
+ suitable for showing to users, whereas NBPEntity is not.
+ WARNING: NBPAddress and DDPNBPAddress structures do not "know" the length
+ of the address. That must have been obtained as part of a Lookup or
+ ResolveAddress call.
+*/
+
+enum {
+ AF_ATALK_FAMILY = 0x0100,
+ AF_ATALK_DDP = 0x0100,
+ AF_ATALK_DDPNBP = AF_ATALK_FAMILY + 1,
+ AF_ATALK_NBP = AF_ATALK_FAMILY + 2,
+ AF_ATALK_MNODE = AF_ATALK_FAMILY + 3
+};
+
+struct NBPEntity {
+ UInt8 fEntity[99];
+};
+typedef struct NBPEntity NBPEntity;
+struct DDPAddress {
+ OTAddressType fAddressType; /* One of the enums above*/
+ UInt16 fNetwork;
+ UInt8 fNodeID;
+ UInt8 fSocket;
+ UInt8 fDDPType;
+ UInt8 fPad;
+
+#ifdef __cplusplus
+ // C++ inline methods on this structure.
+
+ void Init(const DDPAddress&);
+ void Init(UInt16 net, UInt8 node, UInt8 socket);
+ void Init(UInt16 net, UInt8 node, UInt8 socket, UInt8 type);
+
+ void SetSocket(UInt8);
+ void SetType(UInt8);
+ void SetNode(UInt8);
+ void SetNetwork(UInt16);
+
+ OTByteCount GetAddressLength() const;
+ OTAddressType GetAddressType() const;
+ UInt8 GetSocket() const;
+ UInt8 GetType() const;
+ UInt8 GetNode() const;
+ UInt16 GetNetwork() const;
+
+ Boolean operator==(const DDPAddress&) const;
+ Boolean operator!=(const DDPAddress&) const;
+ void operator=(const DDPAddress&);
+#endif
+
+
+};
+typedef struct DDPAddress DDPAddress;
+struct NBPAddress {
+ OTAddressType fAddressType; /* One of the enums above*/
+ UInt8 fNBPNameBuffer[105];
+
+#ifdef __cplusplus
+ // C++ inline methods on this structure.
+
+ OTByteCount Init();
+ OTByteCount Init(const NBPEntity&);
+ OTByteCount Init(const char*);
+ OTByteCount Init(const char*, OTByteCount len);
+ Boolean ExtractEntity(NBPEntity&, OTByteCount len);
+
+ OTAddressType GetAddressType() const;
+#endif
+
+
+};
+typedef struct NBPAddress NBPAddress;
+struct DDPNBPAddress {
+ OTAddressType fAddressType; /* One of the enums above*/
+ UInt16 fNetwork;
+ UInt8 fNodeID;
+ UInt8 fSocket;
+ UInt8 fDDPType;
+ UInt8 fPad;
+ UInt8 fNBPNameBuffer[105];
+
+#ifdef __cplusplus
+ // C++ inline methods on this structure.
+
+ void Init(const DDPAddress&);
+ void Init(UInt16 net, UInt8 node, UInt8 socket);
+ void Init(UInt16 net, UInt8 node, UInt8 socket, UInt8 type);
+
+ void SetSocket(UInt8);
+ void SetType(UInt8);
+ void SetNode(UInt8);
+ void SetNetwork(UInt16);
+
+ OTAddressType GetAddressType() const;
+ UInt8 GetSocket() const;
+ UInt8 GetType() const;
+ UInt8 GetNode() const;
+ UInt16 GetNetwork() const;
+
+ Boolean ExtractEntity(NBPEntity&, OTByteCount len);
+ OTByteCount SetNBPEntity(const NBPEntity&);
+ OTByteCount SetNBPEntity(const char*);
+ OTByteCount SetNBPEntity(const char*, OTByteCount len);
+
+ Boolean operator==(const DDPAddress&) const;
+#endif
+
+
+};
+typedef struct DDPNBPAddress DDPNBPAddress;
+/* These are some utility routines for dealing with NBP and DDP addresses. */
+
+/* Functions to initialize the various AppleTalk Address types*/
+/*
+ * OTInitDDPAddress()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( void )
+OTInitDDPAddress(
+ DDPAddress * addr,
+ UInt16 net,
+ UInt8 node,
+ UInt8 socket,
+ UInt8 ddpType);
+
+
+/*
+ * OTInitNBPAddress()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OTByteCount )
+OTInitNBPAddress(
+ NBPAddress * addr,
+ const char * name);
+
+
+/*
+ * OTInitDDPNBPAddress()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OTByteCount )
+OTInitDDPNBPAddress(
+ DDPNBPAddress * addr,
+ const char * name,
+ UInt16 net,
+ UInt8 node,
+ UInt8 socket,
+ UInt8 ddpType);
+
+
+/* Compare 2 DDP addresses for equality*/
+/*
+ * OTCompareDDPAddresses()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( Boolean )
+OTCompareDDPAddresses(
+ const DDPAddress * addr1,
+ const DDPAddress * addr2);
+
+
+/* Init an NBPEntity to a NULL name*/
+/*
+ * OTInitNBPEntity()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( void )
+OTInitNBPEntity(NBPEntity * entity);
+
+
+/* Get the length an NBPEntity would have when stored as an address*/
+/*
+ * OTGetNBPEntityLengthAsAddress()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OTByteCount )
+OTGetNBPEntityLengthAsAddress(const NBPEntity * entity);
+
+
+/* Store an NBPEntity into an address buffer*/
+/*
+ * OTSetAddressFromNBPEntity()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OTByteCount )
+OTSetAddressFromNBPEntity(
+ UInt8 * nameBuf,
+ const NBPEntity * entity);
+
+
+/* Create an address buffer from a string (use -1 for len to use strlen)*/
+/*
+ * OTSetAddressFromNBPString()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OTByteCount )
+OTSetAddressFromNBPString(
+ UInt8 * addrBuf,
+ const char * name,
+ SInt32 len);
+
+
+/*
+ Create an NBPEntity from an address buffer. False is returned if
+ the address was truncated.
+*/
+/*
+ * OTSetNBPEntityFromAddress()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( Boolean )
+OTSetNBPEntityFromAddress(
+ NBPEntity * entity,
+ const UInt8 * addrBuf,
+ OTByteCount len);
+
+
+/* Routines to set a piece of an NBP entity from a character string*/
+/*
+ * OTSetNBPName()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( Boolean )
+OTSetNBPName(
+ NBPEntity * entity,
+ const char * name);
+
+
+/*
+ * OTSetNBPType()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( Boolean )
+OTSetNBPType(
+ NBPEntity * entity,
+ const char * typeVal);
+
+
+/*
+ * OTSetNBPZone()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( Boolean )
+OTSetNBPZone(
+ NBPEntity * entity,
+ const char * zone);
+
+
+/* Routines to extract pieces of an NBP entity*/
+/*
+ * OTExtractNBPName()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( void )
+OTExtractNBPName(
+ const NBPEntity * entity,
+ char * name);
+
+
+/*
+ * OTExtractNBPType()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( void )
+OTExtractNBPType(
+ const NBPEntity * entity,
+ char * typeVal);
+
+
+/*
+ * OTExtractNBPZone()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( void )
+OTExtractNBPZone(
+ const NBPEntity * entity,
+ char * zone);
+
+
+#ifdef __cplusplus
+
+// Inline methods for DDPAddress
+
+inline void DDPAddress::operator=(const DDPAddress& addr)
+{
+ *(UInt32*)&fAddressType = *(UInt32*)&addr.fAddressType;
+ *(UInt32*)&fNodeID = *(UInt32*)&addr.fNodeID;
+}
+
+inline Boolean DDPAddress::operator==(const DDPAddress& addr) const
+{
+ return OTCompareDDPAddresses(&addr, this);
+}
+
+inline Boolean DDPAddress::operator!=(const DDPAddress& addr) const
+{
+ return !OTCompareDDPAddresses(&addr, this);
+}
+
+inline void DDPAddress::SetSocket(UInt8 socket)
+{
+ fSocket = socket;
+}
+
+inline void DDPAddress::SetNode(UInt8 node)
+{
+ fNodeID = node;
+}
+
+inline void DDPAddress::SetType(UInt8 type)
+{
+ fDDPType = type;
+}
+
+inline void DDPAddress::SetNetwork(UInt16 net)
+{
+ fNetwork = net;
+}
+
+inline OTByteCount DDPAddress::GetAddressLength() const
+{
+ return kDDPAddressLength;
+}
+
+inline OTAddressType DDPAddress::GetAddressType() const
+{
+ return fAddressType;
+}
+
+inline UInt8 DDPAddress::GetSocket() const
+{
+ return fSocket;
+}
+
+inline UInt8 DDPAddress::GetNode() const
+{
+ return fNodeID;
+}
+
+inline UInt8 DDPAddress::GetType() const
+{
+ return fDDPType;
+}
+
+inline UInt16 DDPAddress::GetNetwork() const
+{
+ return fNetwork;
+}
+
+inline void DDPAddress::Init(UInt16 net, UInt8 node,
+ UInt8 socket)
+{
+ fAddressType = AF_ATALK_DDP;
+ SetNetwork(net);
+ SetNode(node);
+ SetSocket(socket);
+ SetType(0);
+}
+
+inline void DDPAddress::Init(UInt16 net, UInt8 node,
+ UInt8 socket, UInt8 type)
+{
+ fAddressType = AF_ATALK_DDP;
+ SetNetwork(net);
+ SetNode(node);
+ SetSocket(socket);
+ SetType(type);
+}
+
+inline void DDPAddress::Init(const DDPAddress& addr)
+{
+ *(UInt32*)&fAddressType = *(UInt32*)&addr.fAddressType;
+ *(UInt32*)&fNodeID = *(UInt32*)&addr.fNodeID;
+}
+
+// Inline methods for NBPAddress
+
+inline OTByteCount NBPAddress::Init()
+{
+ fAddressType = AF_ATALK_NBP;
+ return sizeof(OTAddressType);
+}
+
+inline OTByteCount NBPAddress::Init(const NBPEntity& addr)
+{
+ fAddressType = AF_ATALK_NBP;
+ return sizeof(OTAddressType) + OTSetAddressFromNBPEntity(fNBPNameBuffer, &addr);
+}
+
+inline OTByteCount NBPAddress::Init(const char* name)
+{
+ fAddressType = AF_ATALK_NBP;
+ return sizeof(OTAddressType) + OTSetAddressFromNBPString(fNBPNameBuffer, name, -1);
+}
+
+inline OTByteCount NBPAddress::Init(const char* name, OTByteCount len)
+{
+ fAddressType = AF_ATALK_NBP;
+ return sizeof(OTAddressType) + OTSetAddressFromNBPString(fNBPNameBuffer, name, (SInt32)len);
+}
+
+inline Boolean NBPAddress::ExtractEntity(NBPEntity& entity, OTByteCount len)
+{
+ return OTSetNBPEntityFromAddress(&entity, fNBPNameBuffer, len);
+}
+
+inline OTAddressType NBPAddress::GetAddressType() const
+{
+ return fAddressType;
+}
+
+// Inline methods for DDPNBPAddress
+
+inline Boolean DDPNBPAddress::operator==(const DDPAddress& addr) const
+{
+ return OTCompareDDPAddresses((const DDPAddress*)this, &addr);
+}
+
+inline void DDPNBPAddress::SetSocket(UInt8 socket)
+{
+ fSocket = socket;
+}
+
+inline void DDPNBPAddress::SetNode(UInt8 node)
+{
+ fNodeID = node;
+}
+
+inline void DDPNBPAddress::SetType(UInt8 type)
+{
+ fDDPType = type;
+}
+
+inline void DDPNBPAddress::SetNetwork(UInt16 net)
+{
+ fNetwork = net;
+}
+
+inline OTAddressType DDPNBPAddress::GetAddressType() const
+{
+ return fAddressType;
+}
+
+inline UInt8 DDPNBPAddress::GetSocket() const
+{
+ return fSocket;
+}
+
+inline UInt8 DDPNBPAddress::GetNode() const
+{
+ return fNodeID;
+}
+
+inline UInt8 DDPNBPAddress::GetType() const
+{
+ return fDDPType;
+}
+
+inline UInt16 DDPNBPAddress::GetNetwork() const
+{
+ return fNetwork;
+}
+
+inline void DDPNBPAddress::Init(UInt16 net, UInt8 node,
+ UInt8 socket)
+{
+ fAddressType = AF_ATALK_DDPNBP;
+ SetNetwork(net);
+ SetNode(node);
+ SetSocket(socket);
+ SetType(0);
+}
+
+inline void DDPNBPAddress::Init(UInt16 net, UInt8 node,
+ UInt8 socket, UInt8 type)
+{
+ fAddressType = AF_ATALK_DDPNBP;
+ SetNetwork(net);
+ SetNode(node);
+ SetSocket(socket);
+ SetType(type);
+}
+
+inline void DDPNBPAddress::Init(const DDPAddress& addr)
+{
+ fAddressType = AF_ATALK_DDPNBP;
+ SetNetwork(addr.GetNetwork());
+ SetNode(addr.GetNode());
+ SetSocket(addr.GetSocket());
+ SetType(addr.GetType());
+ fNBPNameBuffer[0] = 0;
+}
+
+inline OTByteCount DDPNBPAddress::SetNBPEntity(const NBPEntity& entity)
+{
+ return OTSetAddressFromNBPEntity(fNBPNameBuffer, &entity) + kDDPAddressLength;
+}
+
+inline OTByteCount DDPNBPAddress::SetNBPEntity(const char* name)
+{
+ return OTSetAddressFromNBPString(fNBPNameBuffer, name, -1) + kDDPAddressLength;
+}
+
+inline OTByteCount DDPNBPAddress::SetNBPEntity(const char* name, OTByteCount len)
+{
+ return OTSetAddressFromNBPString(fNBPNameBuffer, name, (SInt32)len) + kDDPAddressLength;
+}
+
+inline Boolean DDPNBPAddress::ExtractEntity(NBPEntity& entity, OTByteCount len)
+{
+ return OTSetNBPEntityFromAddress(&entity, fNBPNameBuffer, len);
+}
+
+#endif /* __cplusplus */
+/* AppleTalkInfo as used by the OTGetATalkInfo function*/
+
+struct AppleTalkInfo {
+ DDPAddress fOurAddress; /* Our DDP address (network # & node)*/
+ DDPAddress fRouterAddress; /* The address of a router on our cable*/
+ UInt16 fCableRange[2]; /* The current cable range*/
+ UInt16 fFlags; /* See below*/
+};
+typedef struct AppleTalkInfo AppleTalkInfo;
+/* For the fFlags field in AppleTalkInfo*/
+enum {
+ kATalkInfoIsExtended = 0x0001, /* This is an extended (phase 2) network*/
+ kATalkInfoHasRouter = 0x0002, /* This cable has a router*/
+ kATalkInfoOneZone = 0x0004 /* This cable has only one zone*/
+};
+
+/* ***** Ethernet ******/
+
+/* Interface option flags*/
+
+/* Ethernet framing options*/
+
+enum {
+ kOTFramingEthernet = 0x01,
+ kOTFramingEthernetIPX = 0x02,
+ kOTFraming8023 = 0x04,
+ kOTFraming8022 = 0x08
+};
+
+/*
+ These are obsolete and will be going away in OT 1.5.
+ Hmmm, OT 1.5 got cancelled. The status of these options
+ is uncertain.
+*/
+
+/* RawMode options*/
+
+enum {
+ kOTRawRcvOn = 0,
+ kOTRawRcvOff = 1,
+ kOTRawRcvOnWithTimeStamp = 2
+};
+
+enum {
+ DL_PROMISC_OFF = 0 /* OPT_SETPROMISCUOUS value*/
+};
+
+/* Module definitions*/
+
+/* Module IDs*/
+
+enum {
+ kT8022ModuleID = 7100,
+ kEnetModuleID = 7101,
+ kTokenRingModuleID = 7102,
+ kFDDIModuleID = 7103
+};
+
+/* Module Names*/
+
+
+#define kEnet8022Name "enet8022x"
+#define kEnetName "enet"
+#define kFastEnetName "fenet"
+#define kTokenRingName "tokn"
+#define kFDDIName "fddi"
+#define kIRTalkName "irtlk"
+#define kSMDSName "smds"
+#define kATMName "atm"
+#define kT8022Name "tpi8022x"
+#define kATMSNAPName "atmsnap"
+#define kFireWireName "firewire"
+#define kFibreChannelName "fibre"
+
+/* Address Family*/
+
+enum {
+ AF_8022 = 8200 /* Our 802.2 generic address family*/
+};
+
+/* XTI Levels*/
+
+enum {
+ LNK_ENET = FOUR_CHAR_CODE('ENET'),
+ LNK_TOKN = FOUR_CHAR_CODE('TOKN'),
+ LNK_FDDI = FOUR_CHAR_CODE('FDDI'),
+ LNK_TPI = FOUR_CHAR_CODE('LTPI')
+};
+
+/* Options*/
+
+enum {
+ OPT_ADDMCAST = 0x1000,
+ OPT_DELMCAST = 0x1001,
+ OPT_RCVPACKETTYPE = 0x1002,
+ OPT_RCVDESTADDR = 0x1003,
+ OPT_SETRAWMODE = 0x1004,
+ OPT_SETPROMISCUOUS = 0x1005
+};
+
+typedef UInt32 OTPacketType;
+enum {
+ kETypeStandard = 0,
+ kETypeMulticast = 1,
+ kETypeBroadcast = 2,
+ kETRawPacketBit = (unsigned long)0x80000000,
+ kETTimeStampBit = 0x40000000
+};
+
+/* Link related constants*/
+
+enum {
+ kMulticastLength = 6, /* length of an ENET hardware addressaddress*/
+ k48BitAddrLength = 6,
+ k8022DLSAPLength = 2, /* The protocol type is our DLSAP*/
+ k8022SNAPLength = 5,
+ kEnetAddressLength = k48BitAddrLength + k8022DLSAPLength, /* length of an address field used by the ENET enpoint*/
+ /* = k48BitAddrLength + sizeof(protocol type)*/
+ kSNAPSAP = 0x00AA, /* Special DLSAPS for ENET*/
+ kIPXSAP = 0x00FF,
+ kMax8022SAP = 0x00FE,
+ k8022GlobalSAP = 0x00FF,
+ kMinDIXSAP = 1501,
+ kMaxDIXSAP = 0xFFFF
+};
+
+/* Generic Address Structure*/
+
+struct T8022Address {
+ OTAddressType fAddrFamily;
+ UInt8 fHWAddr[6];
+ UInt16 fSAP;
+ UInt8 fSNAP[5];
+};
+typedef struct T8022Address T8022Address;
+enum {
+ k8022BasicAddressLength = sizeof(OTAddressType) + k48BitAddrLength + sizeof(UInt16),
+ k8022SNAPAddressLength = sizeof(OTAddressType) + k48BitAddrLength + sizeof(UInt16) + k8022SNAPLength
+};
+
+/* Some helpful stuff for dealing with 48 bit addresses*/
+
+
+#define OTCompare48BitAddresses(p1, p2) \
+ (*(const UInt32*)((const UInt8*)(p1)) == *(const UInt32*)((const UInt8*)(p2)) && \
+ *(const UInt16*)(((const UInt8*)(p1))+4) == *(const UInt16*)(((const UInt8*)(p2))+4) )
+
+#define OTCopy48BitAddress(p1, p2) \
+ (*(UInt32*)((UInt8*)(p2)) = *(const UInt32*)((const UInt8*)(p1)), \
+ *(UInt16*)(((UInt8*)(p2))+4) = *(const UInt16*)(((const UInt8*)(p1))+4) )
+
+#define OTClear48BitAddress(p1) \
+ (*(UInt32*)((UInt8*)(p1)) = 0, \
+ *(UInt16*)(((UInt8*)(p1))+4) = 0 )
+
+#define OTCompare8022SNAP(p1, p2) \
+ (*(const UInt32*)((const UInt8*)(p1)) == *(const UInt32*)((const UInt8*)(p2)) && \
+ *(((const UInt8*)(p1))+4) == *(((const UInt8*)(p2))+4) )
+
+#define OTCopy8022SNAP(p1, p2) \
+ (*(UInt32*)((UInt8*)(p2)) = *(const UInt32*)((const UInt8*)(p1)), \
+ *(((UInt8*)(p2))+4) = *(((const UInt8*)(p1))+4) )
+
+#define OTIs48BitBroadcastAddress(p1) \
+ (*(UInt32*)((UInt8*)(p1)) == 0xffffffff && \
+ *(UInt16*)(((UInt8*)(p1))+4) == 0xffff )
+
+#define OTSet48BitBroadcastAddress(p1) \
+ (*(UInt32*)((UInt8*)(p1)) = 0xffffffff, \
+ *(UInt16*)(((UInt8*)(p1))+4) = 0xffff )
+
+#define OTIs48BitZeroAddress(p1) \
+ (*(UInt32*)((UInt8*)(p1)) == 0 && \
+ *(UInt16*)(((UInt8*)(p1))+4) == 0 )
+
+/* Link related constants*/
+
+enum {
+ kEnetPacketHeaderLength = (2 * k48BitAddrLength) + k8022DLSAPLength,
+ kEnetTSDU = 1514, /* The TSDU for ethernet.*/
+ kTokenRingTSDU = 4458, /* The TSDU for TokenRing.*/
+ kFDDITSDU = 4458, /* The TSDU for FDDI. */
+ k8022SAPLength = 1,
+ k8022BasicHeaderLength = 3, /* define the length of the header portion of an 802.2 packet.*/
+ /* = SSAP+DSAP+ControlByte*/
+ k8022SNAPHeaderLength = k8022SNAPLength + k8022BasicHeaderLength
+};
+
+/*******************************************************************************
+** Address Types recognized by the Enet DLPI
+********************************************************************************/
+typedef UInt32 EAddrType;
+enum {
+ keaStandardAddress = 0,
+ keaMulticast = 1,
+ keaBroadcast = 2,
+ keaBadAddress = 3,
+ keaRawPacketBit = (unsigned long)0x80000000,
+ keaTimeStampBit = 0x40000000
+};
+
+/* Packet Header Structures*/
+
+struct EnetPacketHeader {
+ UInt8 fDestAddr[6];
+ UInt8 fSourceAddr[6];
+ UInt16 fProto;
+};
+typedef struct EnetPacketHeader EnetPacketHeader;
+struct T8022Header {
+ UInt8 fDSAP;
+ UInt8 fSSAP;
+ UInt8 fCtrl;
+};
+typedef struct T8022Header T8022Header;
+struct T8022SNAPHeader {
+ UInt8 fDSAP;
+ UInt8 fSSAP;
+ UInt8 fCtrl;
+ UInt8 fSNAP[5];
+};
+typedef struct T8022SNAPHeader T8022SNAPHeader;
+struct T8022FullPacketHeader {
+ EnetPacketHeader fEnetPart;
+ T8022SNAPHeader f8022Part;
+};
+typedef struct T8022FullPacketHeader T8022FullPacketHeader;
+/* Define the lengths of the structures above*/
+enum {
+ kT8022HeaderLength = 3,
+ kT8022SNAPHeaderLength = 3 + k8022SNAPLength,
+ kT8022FullPacketHeaderLength = kEnetPacketHeaderLength + kT8022SNAPHeaderLength
+};
+
+/* ***** Serial ******/
+
+/* Module Definitions*/
+
+/* XTI Level*/
+
+enum {
+ COM_SERIAL = FOUR_CHAR_CODE('SERL')
+};
+
+/* Version Number*/
+
+
+#define kSerialABVersion "1.1.1"
+
+/* Module Names*/
+
+
+#define kSerialABName "serialAB"
+#define kSerialName "serial"
+#define kSerialPortAName "serialA"
+#define kSerialPortBName "serialB"
+
+enum {
+ kSerialABModuleID = 7200
+};
+
+enum {
+ kOTSerialFramingAsync = 0x01, /* Support Async serial mode */
+ kOTSerialFramingHDLC = 0x02, /* Support HDLC synchronous serial mode */
+ kOTSerialFramingSDLC = 0x04, /* Support SDLC synchronous serial mode */
+ kOTSerialFramingAsyncPackets = 0x08, /* Support Async "packet" serial mode */
+ kOTSerialFramingPPP = 0x10 /* Port does its own PPP framing - wants unframed packets from PPP */
+};
+
+/* IOCTL Calls for Serial Drivers*/
+
+enum {
+ I_SetSerialDTR = ((MIOC_SRL << 8) | 0), /* Set DTR (0 = off, 1 = on)*/
+ kOTSerialSetDTROff = 0,
+ kOTSerialSetDTROn = 1,
+ I_SetSerialBreak = ((MIOC_SRL << 8) | 1), /* Send a break on the line - kOTSerialSetBreakOff = off, kOTSerialSetBreakOn = on,*/
+ /* Any other number is the number of milliseconds to leave break on, then*/
+ /* auto shutoff*/
+ kOTSerialSetBreakOn = (unsigned long)0xFFFFFFFF,
+ kOTSerialSetBreakOff = 0,
+ I_SetSerialXOffState = ((MIOC_SRL << 8) | 2), /* Force XOFF state - 0 = Unconditionally clear XOFF state, 1 = unconditionally set it*/
+ kOTSerialForceXOffTrue = 1,
+ kOTSerialForceXOffFalse = 0,
+ I_SetSerialXOn = ((MIOC_SRL << 8) | 3), /* Send an XON character, 0 = send only if in XOFF state, 1 = send always*/
+ kOTSerialSendXOnAlways = 1,
+ kOTSerialSendXOnIfXOffTrue = 0,
+ I_SetSerialXOff = ((MIOC_SRL << 8) | 4), /* Send an XOFF character, 0 = send only if in XON state, 1 = send always*/
+ kOTSerialSendXOffAlways = 1,
+ kOTSerialSendXOffIfXOnTrue = 0
+};
+
+/* Option Management for Serial Drivers*/
+
+/*
+ These options are all 4-byte values.
+ BaudRate is the baud rate.
+ DataBits is the number of data bits.
+ StopBits is the number of stop bits times 10.
+ Parity is an enum
+*/
+
+enum {
+ SERIAL_OPT_BAUDRATE = 0x0100, /* UInt32 */
+ SERIAL_OPT_DATABITS = 0x0101, /* UInt32 */
+ SERIAL_OPT_STOPBITS = 0x0102, /* UInt32 10, 15 or 20 for 1, 1.5 or 2 */
+ SERIAL_OPT_PARITY = 0x0103, /* UInt32 */
+ SERIAL_OPT_STATUS = 0x0104, /* UInt32 */
+ /* The "Status" option is a 4-byte value option that is ReadOnly*/
+ /* It returns a bitmap of the current serial status*/
+ SERIAL_OPT_HANDSHAKE = 0x0105, /* UInt32 */
+ /* The "Handshake" option defines what kind of handshaking the serial port*/
+ /* will do for line flow control. The value is a 32-bit value defined by*/
+ /* the function or macro SerialHandshakeData below.*/
+ /* For no handshake, or CTS handshake, the onChar and offChar parameters*/
+ /* are ignored.*/
+ SERIAL_OPT_RCVTIMEOUT = 0x0106, /* The "RcvTimeout" option defines how long the receiver should wait before delivering*/
+ /* less than the RcvLoWat number of characters. If RcvLoWat is 0, then the RcvTimeout*/
+ /* is how long a gap to wait for before delivering characters. This parameter is advisory,*/
+ /* and serial drivers are free to deliver data whenever they deem it convenient. For instance,*/
+ /* many serial drivers will deliver data whenever 64 bytes have been received, since 64 bytes*/
+ /* is the smallest STREAMS buffer size. Keep in mind that timeouts are quantized, so be sure to*/
+ /* look at the return value of the option to determine what it was negotiated to.*/
+ SERIAL_OPT_ERRORCHARACTER = 0x0107, /* This option defines how characters with parity errors are handled.*/
+ /* A 0 value will disable all replacement. A single character value in the low*/
+ /* byte designates the replacement character. When characters are received with a */
+ /* parity error, they are replaced by this specified character. If a valid incoming*/
+ /* character matches the replacement character, then the received character's msb is*/
+ /* cleared. For this situation, the alternate character is used, if specified in bits*/
+ /* 8 through 15 of the option long, with 0xff being place in bits 16 through 23.*/
+ /* Whenever a valid character is received that matches the first replacement character,*/
+ /* it is replaced with this alternate character.*/
+ SERIAL_OPT_EXTCLOCK = 0x0108, /* The "ExtClock" requests an external clock. A 0-value turns off external clocking.*/
+ /* Any other value is a requested divisor for the external clock. Be aware that*/
+ /* not all serial implementations support an external clock, and that not all*/
+ /* requested divisors will be supported if it does support an external clock.*/
+ SERIAL_OPT_BURSTMODE = 0x0109, /* The "BurstMode" option informs the serial driver that it should continue looping,*/
+ /* reading incoming characters, rather than waiting for an interrupt for each character.*/
+ /* This option may not be supported by all Serial driver*/
+ SERIAL_OPT_DUMMY = 0x010A /* placeholder*/
+};
+
+typedef UInt32 ParityOptionValues;
+enum {
+ kOTSerialNoParity = 0,
+ kOTSerialOddParity = 1,
+ kOTSerialEvenParity = 2
+};
+
+enum {
+ kOTSerialSwOverRunErr = 0x01,
+ kOTSerialBreakOn = 0x08,
+ kOTSerialParityErr = 0x10,
+ kOTSerialOverrunErr = 0x20,
+ kOTSerialFramingErr = 0x40,
+ kOTSerialXOffSent = 0x00010000,
+ kOTSerialDTRNegated = 0x00020000,
+ kOTSerialCTLHold = 0x00040000,
+ kOTSerialXOffHold = 0x00080000,
+ kOTSerialOutputBreakOn = 0x01000000
+};
+
+enum {
+ kOTSerialXOnOffInputHandshake = 1, /* Want XOn/XOff handshake for incoming characters */
+ kOTSerialXOnOffOutputHandshake = 2, /* Want XOn/XOff handshake for outgoing characters */
+ kOTSerialCTSInputHandshake = 4, /* Want CTS handshake for incoming characters */
+ kOTSerialDTROutputHandshake = 8 /* Want DTR handshake for outoing characters */
+};
+
+
+#ifdef __cplusplus
+
+ inline UInt32 OTSerialHandshakeData(UInt16 type, UInt8 onChar, UInt8 offChar)
+ {
+ return (((UInt32)type) << 16) | (((UInt32)onChar) << 8) | offChar;
+ }
+
+#else
+
+ #define OTSerialHandshakeData(type, onChar, offChar) \
+ ((((UInt32)type) << 16) | (((UInt32)onChar) << 8) | offChar)
+
+#endif
+
+
+#ifdef __cplusplus
+
+inline UInt32 OTSerialSetErrorCharacter(UInt8 rep)
+{
+ return (UInt32)rep & 0x000000ff;
+}
+
+inline UInt32 OTSerialSetErrorCharacterWithAlternate(UInt8 rep, UInt8 alternate)
+{
+ return (((rep & 0xff) | ((alternate & 0xff) << 8)) | 0x80000000L);
+}
+
+#else
+
+#define OTSerialSetErrorCharacter(rep) \
+ ((rep) & 0xff)
+
+#define OTSerialSetErrorCharacterWithAlternate(rep, alternate) \
+ ((((rep) & 0xff) | (((alternate) & 0xff) << 8)) | 0x80000000L)
+
+#endif
+
+/* Default attributes for the serial ports*/
+
+enum {
+ kOTSerialDefaultBaudRate = 19200,
+ kOTSerialDefaultDataBits = 8,
+ kOTSerialDefaultStopBits = 10,
+ kOTSerialDefaultParity = kOTSerialNoParity,
+ kOTSerialDefaultHandshake = 0,
+ kOTSerialDefaultOnChar = ('Q' & 0xFFFFFFBF),
+ kOTSerialDefaultOffChar = ('S' & 0xFFFFFFBF),
+ kOTSerialDefaultSndBufSize = 1024,
+ kOTSerialDefaultRcvBufSize = 1024,
+ kOTSerialDefaultSndLoWat = 96,
+ kOTSerialDefaultRcvLoWat = 1,
+ kOTSerialDefaultRcvTimeout = 10
+};
+
+/* ***** ISDN ******/
+
+/* Module Definitions*/
+
+/* XTI Level*/
+
+enum {
+ COM_ISDN = FOUR_CHAR_CODE('ISDN')
+};
+
+/* Module Names*/
+
+#define kISDNName "isdn"
+enum {
+ kISDNModuleID = 7300
+};
+
+
+/* ISDN framing methods, set using the I_OTSetFramingType IOCTL*/
+
+enum {
+ kOTISDNFramingTransparentSupported = 0x0010, /* Support Transparent mode */
+ kOTISDNFramingHDLCSupported = 0x0020, /* Support HDLC Synchronous mode */
+ kOTISDNFramingV110Supported = 0x0040, /* Support V.110 Asynchronous mode */
+ kOTISDNFramingV14ESupported = 0x0080 /* Support V.14 Asynchronous mode */
+};
+
+/* Miscellaneous equates*/
+
+/* Disconnect reason codes (from Q.931)*/
+
+enum {
+ kOTISDNUnallocatedNumber = 1,
+ kOTISDNNoRouteToSpecifiedTransitNetwork = 2,
+ kOTISDNNoRouteToDestination = 3,
+ kOTISDNChannelUnacceptable = 6,
+ kOTISDNNormal = 16,
+ kOTISDNUserBusy = 17,
+ kOTISDNNoUserResponding = 18,
+ kOTISDNNoAnswerFromUser = 19,
+ kOTISDNCallRejected = 21,
+ kOTISDNNumberChanged = 22,
+ kOTISDNNonSelectedUserClearing = 26,
+ kOTISDNDestinationOutOfOrder = 27,
+ kOTISDNInvalidNumberFormat = 28,
+ kOTISDNFacilityRejected = 29,
+ kOTISDNNormalUnspecified = 31,
+ kOTISDNNoCircuitChannelAvailable = 34,
+ kOTISDNNetworkOutOfOrder = 41,
+ kOTISDNSwitchingEquipmentCongestion = 42,
+ kOTISDNAccessInformationDiscarded = 43,
+ kOTISDNRequestedCircuitChannelNotAvailable = 44,
+ kOTISDNResourceUnavailableUnspecified = 45,
+ kOTISDNQualityOfServiceUnvailable = 49,
+ kOTISDNRequestedFacilityNotSubscribed = 50,
+ kOTISDNBearerCapabilityNotAuthorized = 57,
+ kOTISDNBearerCapabilityNotPresentlyAvailable = 58,
+ kOTISDNCallRestricted = 59,
+ kOTISDNServiceOrOptionNotAvilableUnspecified = 63,
+ kOTISDNBearerCapabilityNotImplemented = 65,
+ kOTISDNRequestedFacilityNotImplemented = 69,
+ kOTISDNOnlyRestrictedDigitalBearer = 70,
+ kOTISDNServiceOrOptionNotImplementedUnspecified = 79,
+ kOTISDNCallIdentityNotUsed = 83,
+ kOTISDNCallIdentityInUse = 84,
+ kOTISDNNoCallSuspended = 85,
+ kOTISDNCallIdentityCleared = 86,
+ kOTISDNIncompatibleDestination = 88,
+ kOTISDNInvalidTransitNetworkSelection = 91,
+ kOTISDNInvalidMessageUnspecified = 95,
+ kOTISDNMandatoryInformationElementIsMissing = 96,
+ kOTISDNMessageTypeNonExistentOrNotImplemented = 97,
+ kOTISDNInterworkingUnspecified = 127
+};
+
+/* OTISDNAddress*/
+
+/*
+ The OTISDNAddress has the following format:
+ "xxxxxx*yy"
+ where 'x' is the phone number and 'y' is the sub address (if available
+ in the network. The characters are coded in ASCII (IA5), and valid
+ characters are: '0'-'9','#','*'.
+ The max length of the each phone number is 21 characters (?) and the max
+ subaddress length is network dependent.
+ When using bonded channels the phone numbers are separated by '&'.
+ The X.25 user data is preceded by '@'.
+*/
+
+enum {
+ kAF_ISDN = 0x2000
+};
+
+enum {
+ AF_ISDN = kAF_ISDN
+};
+
+enum {
+ kOTISDNMaxPhoneSize = 32,
+ kOTISDNMaxSubSize = 4
+};
+
+struct OTISDNAddress {
+ OTAddressType fAddressType;
+ UInt16 fPhoneLength;
+ char fPhoneNumber[37];
+};
+typedef struct OTISDNAddress OTISDNAddress;
+/* IOCTL Calls for ISDN*/
+/* ISDN shares the same ioctl space as serial.*/
+
+enum {
+ MIOC_ISDN = 'U' /* ISDN ioctl() cmds */
+};
+
+enum {
+ I_OTISDNAlerting = ((MIOC_ISDN << 8) | 100), /* Send or receive an ALERTING message*/
+ I_OTISDNSuspend = ((MIOC_ISDN << 8) | 101), /* Send a SUSPEND message*/
+ /* The parameter is the Call Identity (Maximum 8 octets)*/
+ I_OTISDNSuspendAcknowledge = ((MIOC_ISDN << 8) | 102), /* Receive a SUSPEND ACKNOWLEDGE message*/
+ I_OTISDNSuspendReject = ((MIOC_ISDN << 8) | 103), /* Receive a SUSPEND REJECT message*/
+ I_OTISDNResume = ((MIOC_ISDN << 8) | 104), /* Send a RESUME message*/
+ /* The parameter is the Call Identity (Maximum 8 octets)*/
+ I_OTISDNResumeAcknowledge = ((MIOC_ISDN << 8) | 105), /* Receive a RESUME ACKNOWLEDGE message*/
+ I_OTISDNResumeReject = ((MIOC_ISDN << 8) | 106), /* Receive a RESUME REJECT message*/
+ I_OTISDNFaciltity = ((MIOC_ISDN << 8) | 107) /* Send or receive a FACILITY message*/
+};
+
+/* Connect user data size*/
+
+enum {
+ kOTISDNMaxUserDataSize = 32
+};
+
+/* Option management calls for ISDN*/
+
+enum {
+ ISDN_OPT_COMMTYPE = 0x0200,
+ ISDN_OPT_FRAMINGTYPE = 0x0201,
+ ISDN_OPT_56KADAPTATION = 0x0202
+};
+
+/* For ISDN_OPT_COMMTYPE...*/
+
+enum {
+ kOTISDNTelephoneALaw = 1, /* G.711 A-law */
+ kOTISDNTelephoneMuLaw = 26, /* G.711 .-law */
+ kOTISDNDigital64k = 13, /* unrestricted digital (default) */
+ kOTISDNDigital56k = 37, /* user rate 56Kb/s */
+ kOTISDNVideo64k = 41, /* video terminal at 64Kb/s */
+ kOTISDNVideo56k = 42 /* video terminal at 56Kb/s */
+};
+
+/* For ISDN_OPT_FRAMINGTYPE...*/
+
+enum {
+ kOTISDNFramingTransparent = 0x0010, /* Transparent mode */
+ kOTISDNFramingHDLC = 0x0020, /* HDLC synchronous mode (default) */
+ kOTISDNFramingV110 = 0x0040, /* V.110 asynchronous mode */
+ kOTISDNFramingV14E = 0x0080 /* V.14E asynchronous mode */
+};
+
+/* For ISDN_OPT_56KADAPTATION...*/
+
+enum {
+ kOTISDNNot56KAdaptation = false, /* not 56K Adaptation (default) */
+ kOTISDN56KAdaptation = true /* 56K Adaptation */
+};
+
+/* Default options, you do not need to set these*/
+
+enum {
+ kOTISDNDefaultCommType = kOTISDNDigital64k,
+ kOTISDNDefaultFramingType = kOTISDNFramingHDLC,
+ kOTISDNDefault56KAdaptation = kOTISDNNot56KAdaptation
+};
+
+
+/*******************************************************************************
+* Constants for Open Transport-based Remote Access/PPP API
+********************************************************************************/
+
+/* OTCreateConfiguration name for PPP control endpoint*/
+
+#define kPPPControlName "ppp"
+
+/* XTI Level*/
+
+enum {
+ COM_PPP = FOUR_CHAR_CODE('PPPC')
+};
+
+/* Options limits*/
+
+enum {
+ kPPPMaxIDLength = 255,
+ kPPPMaxPasswordLength = 255,
+ kPPPMaxDTEAddressLength = 127,
+ kPPPMaxCallInfoLength = 255
+};
+
+
+/* Various XTI option value constants*/
+
+enum {
+ kPPPStateInitial = 1,
+ kPPPStateClosed = 2,
+ kPPPStateClosing = 3,
+ kPPPStateOpening = 4,
+ kPPPStateOpened = 5
+};
+
+enum {
+ kPPPConnectionStatusIdle = 1,
+ kPPPConnectionStatusConnecting = 2,
+ kPPPConnectionStatusConnected = 3,
+ kPPPConnectionStatusDisconnecting = 4
+};
+
+enum {
+ kPPPMinMRU = 0,
+ kPPPMaxMRU = 4500
+};
+
+enum {
+ kIPCPTCPHdrCompressionDisabled = 0,
+ kIPCPTCPHdrCompressionEnabled = 1
+};
+
+enum {
+ kPPPCompressionDisabled = 0x00000000,
+ kPPPProtoCompression = 0x00000001,
+ kPPPAddrCompression = 0x00000002
+};
+
+enum {
+ kPPPNoOutAuthentication = 0,
+ kPPPCHAPOrPAPOutAuthentication = 1
+};
+
+enum {
+ kCCReminderTimerDisabled = 0,
+ kCCIPIdleTimerDisabled = 0
+};
+
+enum {
+ kPPPScriptTypeModem = 1,
+ kPPPScriptTypeConnect = 2,
+ kPPPMaxScriptSize = 32000
+};
+
+enum {
+ kE164Address = 1,
+ kPhoneAddress = 1,
+ kCompoundPhoneAddress = 2,
+ kX121Address = 3
+};
+
+enum {
+ kPPPConnectionStatusDialogsFlag = 0x00000001,
+ kPPPConnectionRemindersFlag = 0x00000002,
+ kPPPConnectionFlashingIconFlag = 0x00000004,
+ kPPPOutPasswordDialogsFlag = 0x00000008,
+ kPPPAllAlertsDisabledFlag = 0x00000000,
+ kPPPAllAlertsEnabledFlag = 0x0000000F
+};
+
+enum {
+ kPPPAsyncMapCharsNone = 0x00000000,
+ kPPPAsyncMapCharsXOnXOff = 0x000A0000,
+ kPPPAsyncMapCharsAll = (unsigned long)0xFFFFFFFF
+};
+
+
+/* Option names*/
+
+enum {
+ IPCP_OPT_GETREMOTEPROTOADDR = 0x00007000,
+ IPCP_OPT_GETLOCALPROTOADDR = 0x00007001,
+ IPCP_OPT_TCPHDRCOMPRESSION = 0x00007002,
+ LCP_OPT_PPPCOMPRESSION = 0x00007003,
+ LCP_OPT_MRU = 0x00007004,
+ LCP_OPT_RCACCMAP = 0x00007005,
+ LCP_OPT_TXACCMAP = 0x00007006,
+ SEC_OPT_OUTAUTHENTICATION = 0x00007007,
+ SEC_OPT_ID = 0x00007008,
+ SEC_OPT_PASSWORD = 0x00007009,
+ CC_OPT_REMINDERTIMER = 0x00007010,
+ CC_OPT_IPIDLETIMER = 0x00007011,
+ CC_OPT_DTEADDRESSTYPE = 0x00007012,
+ CC_OPT_DTEADDRESS = 0x00007013,
+ CC_OPT_CALLINFO = 0x00007014,
+ CC_OPT_GETMISCINFO = 0x00007015,
+ PPP_OPT_GETCURRENTSTATE = 0x00007016,
+ LCP_OPT_ECHO = 0x00007017, /* Available on Mac OS X only */
+ CC_OPT_SERIALPORTNAME = 0x00007200
+};
+
+/* Endpoint events*/
+
+enum {
+ kPPPEvent = kPROTOCOLEVENT | 0x000F0000,
+ kPPPConnectCompleteEvent = kPPPEvent + 1,
+ kPPPSetScriptCompleteEvent = kPPPEvent + 2,
+ kPPPDisconnectCompleteEvent = kPPPEvent + 3,
+ kPPPDisconnectEvent = kPPPEvent + 4,
+ kPPPIPCPUpEvent = kPPPEvent + 5,
+ kPPPIPCPDownEvent = kPPPEvent + 6,
+ kPPPLCPUpEvent = kPPPEvent + 7,
+ kPPPLCPDownEvent = kPPPEvent + 8,
+ kPPPLowerLayerUpEvent = kPPPEvent + 9,
+ kPPPLowerLayerDownEvent = kPPPEvent + 10,
+ kPPPAuthenticationStartedEvent = kPPPEvent + 11,
+ kPPPAuthenticationFinishedEvent = kPPPEvent + 12,
+ kPPPDCEInitStartedEvent = kPPPEvent + 13,
+ kPPPDCEInitFinishedEvent = kPPPEvent + 14,
+ kPPPDCECallStartedEvent = kPPPEvent + 15,
+ kPPPDCECallFinishedEvent = kPPPEvent + 16
+};
+
+
+#if CALL_NOT_IN_CARBON
+
+/* Support for modem script endpoints: */
+
+/* The Configuration name for the Opentransport Modem/Script engine. */
+
+#define kScriptName "Script"
+
+/* To check if the Modem/Script engine is installed you should interrogate
+ the proper Gestalt Selectors for Open Transport-based Modem libraries. */
+
+#define gestaltOpenTptModem 'otmo'
+#define gestaltOpenTptModemPresent 0
+
+#define gestaltOpenTptModemVersion 'otmv'
+#define kGestaltOpenTptModemVersion 0x01000080
+
+/* These are the Modem/Script Configurator error codes. Other codes may be
+ returned from Open Transport and operating system routines. */
+
+#define kModemNoError 0
+#define kModemOutOfMemory -14000
+#define kModemPreferencesMissing -14001
+#define kModemScriptMissing -14002
+
+/* The Modem Configuration pref resource file constants. */
+
+#define kModemConfigFileCreator 'modm'
+#define kModemConfigFileType 'mdpf'
+#define kModemConfigVersion 0x00010000
+#define kModemConfigExportType 'mdex'
+#define kModemScriptType 'mlts' /* Same as ARA 1.0/2.0 */
+#define kModemScriptCreator 'slnk' /* Same as ARA 1.0/2.0 */
+
+/* Configuration resource constants. */
+
+#define kModemConfigTypeModem 'ccl ' /* Type for Modem config resource */
+#define kModemSelectedConfigID 1 /* ID of resource containing.. */
+#define kModemSelectedConfigType 'ccfg' /* the ID of current selected CCL */
+#define kModemConfigNameType 'cnam' /* type of config name rez */
+#define kModemConfigTypeLocks 'lkmd' /* Types for lock rez */
+#define kModemConfigFirstID 128 /* lowest id for configuration rez */
+
+/* Maximum script file name size. Same as "name" field of FSSpec. */
+
+#define kMaxScriptNameSize 64
+
+/* File name to use only if the internationalized one can't be read
+ from the resource fork. */
+
+#define kDefaultModemPrefsFileName "\pModem Preferences"
+
+
+/* Dial tone modes */
+
+enum
+{
+ kDialToneNormal = 0,
+ kDialToneIgnore = 1,
+ kDialToneManual = 2
+};
+
+/* Modem Configuration Resource format for Modem configuration info. */
+
+typedef struct
+{
+ UInt32 version;
+ Boolean useModemScript;
+ FSSpec modemScript;
+ Boolean modemSpeakerOn;
+ Boolean modemPulseDial;
+ UInt32 modemDialToneMode;
+ SInt8 lowerLayerName[kMaxProviderNameSize];
+} RAConfigModem;
+
+#endif /* CALL_NOT_IN_CARBON */
+
+/*******************************************************************************
+* IOCTL constants for I_OTConnect, I_OTDisconnect and I_OTScript
+* are defined in OpenTransport.h
+********************************************************************************/
+
+/*******************************************************************************
+* PPPMRULimits
+********************************************************************************/
+struct PPPMRULimits {
+ UInt32 mruSize; /* proposed or actual*/
+ UInt32 upperMRULimit;
+ UInt32 lowerMRULimit;
+};
+typedef struct PPPMRULimits PPPMRULimits;
+
+/*******************************************************************************
+* CCMiscInfo
+********************************************************************************/
+struct CCMiscInfo {
+ UInt32 connectionStatus;
+ UInt32 connectionTimeElapsed;
+ UInt32 connectionTimeRemaining;
+ UInt32 bytesTransmitted;
+ UInt32 bytesReceived;
+ UInt32 reserved;
+};
+typedef struct CCMiscInfo CCMiscInfo;
+
+/*******************************************************************************
+* LCPEcho
+********************************************************************************/
+/* Set both fields to zero to disable sending of LCP echo requests*/
+
+struct LCPEcho {
+ UInt32 retryCount;
+ UInt32 retryPeriod; /* in milliseconds*/
+};
+typedef struct LCPEcho LCPEcho;
+
+/*******************************************************************************
+* Bits used to tell kind of product
+********************************************************************************/
+enum {
+ kRAProductClientOnly = 2,
+ kRAProductOnePortServer = 3,
+ kRAProductManyPortServer = 4
+};
+
+
+#if defined(__MWERKS__) && TARGET_CPU_68K
+ #pragma pop
+#endif
+
+
+#if PRAGMA_STRUCT_ALIGN
+ #pragma options align=reset
+#elif PRAGMA_STRUCT_PACKPUSH
+ #pragma pack(pop)
+#elif PRAGMA_STRUCT_PACK
+ #pragma pack()
+#endif
+
+#ifdef PRAGMA_IMPORT_OFF
+#pragma import off
+#elif PRAGMA_IMPORT
+#pragma import reset
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __OPENTRANSPORTPROVIDERS__ */
+