1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657 |
- {$MACRO ON}
- {$define Rsc := }
- (******************************************************************************
- *
- * Copyright (c) 1996-2000 Palm, Inc. or its subsidiaries.
- * All rights reserved.
- *
- * File: NetMgr.h
- *
- * Release: Palm OS SDK 4.0 (63220)
- *
- * Description:
- * This module contains the interface definition for the TCP/IP
- * library on Pilot.
- *
- * History:
- * 2/14/96 Created by Ron Marianetti
- * Name Date Description
- * ---- ---- -----------
- * jrb 3/13/98 Removed NetIFSettings that are Mobitex specific.
- * Added RadioStateEnum for the setting.
- * Added NetIFSettingSpecificMobitex
- * Added what are considered "generic" wirless settings.
- * jaq 10/1/98 added netMaxIPAddrStrLen constant
- * scl 3/ 5/99 integrated Eleven's changes into Main
- * jhl 7/14/00 added net notice
- *
- *****************************************************************************)
- unit netmgr;
- interface
- uses palmos, libtraps, errorbase, sysevent, event_;
- (********************************************************************
- * Type and creator of Net Library database
- ********************************************************************)
- // Creator. Used for both the database that contains the Net Library and
- // it's preferences database.
- const
- netCreator = Rsc('netl'); // Our Net Library creator
- // Feature Creators and numbers, for use with the FtrGet() call. This
- // feature can be obtained to get the current version of the Net Library
- netFtrCreator = netCreator;
- netFtrNumVersion = 0; // get version of Net Library
- // 0xMMmfsbbb, where MM is major version, m is minor version
- // f is bug fix, s is stage: 3-release,2-beta,1-alpha,0-development,
- // bbb is build number for non-releases
- // V1.12b3 would be: 0x01122003
- // V2.00a2 would be: 0x02001002
- // V1.01 would be: 0x01013000
- // Begin Change (BGT)
- // Feature for defining the number of command blocks to allocate
- netFtrCommandBlocks = 1; // get the number of command blocks
- // Types. Used to identify the Net Library from it's prefs.
- netLibType = Rsc('libr'); // Our Net Code Resources Database type
- netPrefsType = Rsc('rsrc'); // Our Net Preferences Database type
- // All Network interface's have the following type:
- netIFFileType = Rsc('neti'); // The filetype of all Network Interfaces
- // Each Network interface has a unique creator:
- netIFCreatorLoop = Rsc('loop'); // Loopback network interface creator.
- netIFCreatorSLIP = Rsc('slip'); // SLIP network interface creator.
- netIFCreatorPPP = Rsc('ppp_'); // PPP network interface creator.
- //<chg 1-28-98 RM>
- netIFCreatorRAM = Rsc('ram_'); // Mobitex network interface creator
- // Special value for configIndex parameter to NetLibOpenConfig that tells it
- // to use the current settings - even if they are not the defined default settings
- // This is provided for testing purposes
- netConfigIndexCurSettings = $FFFF;
- // <SCL 3/5/99> Commented out netMaxNetIFs since Tim says it should NOT be here!!
- // Still need to fix (Eleven) code that currently depends on it...
- // Max # of interfaces that can be installed
- // netMaxNetIFs = 4;
- //-----------------------------------------------------------------------------
- // Misc. constants
- //-----------------------------------------------------------------------------
- const
- netDrvrTypeNameLen = 8; // Maximum driver type length
- netDrvrHWNameLen = 16; // Maximum driver hardware name length
- netIFNameLen = 10; // Maximum interface name (driver type + instance num)
- netIFMaxHWAddrLen = 14; // Maximum size of a hardware address
- netMaxIPAddrStrLen = 16; // Max length of an IP address string with null terminator (255.255.255.255)
- //-----------------------------------------------------------------------------
- // Names of built-in configuration aliases available through the
- // NetLibConfigXXX calls
- //-----------------------------------------------------------------------------
- netCfgNameDefault = '.Default'; // The default configuration
- netCfgNameDefWireline = '.DefWireline'; // The default wireline configuration
- netCfgNameDefWireless = '.DefWireless'; // The default wireless configuration
- netCfgNameCTPWireline = '.CTPWireline'; // Wireline through the Jerry Proxy
- netCfgNameCTPWireless = '.CTPWireless'; // Wireless through the Jerry Proxy
- //-----------------------------------------------------------------------------
- //Flags for the NetUWirelessAppHandleEvent() utility routine
- //-----------------------------------------------------------------------------
- const
- netWLAppEventFlagCTPOnly = $00000001; // using wireless radio for CTP protocol only
- netWLAppEventFlagDisplayErrs = $00000002; // Show error alerts for any errors
- //-----------------------------------------------------------------------------
- // Option constants that can be passed to NetSocketOptionSet and NetSocketOptionGet
- // When an option is set or retrieved, both the level of the option and the
- // option number must be specified. The level refers to which layer the option
- // refers to, like the uppermost socket layer, for example.
- //-----------------------------------------------------------------------------
- // Socket level options
- type
- NetSocketOptEnum = WordEnum;
- const
- // IP Level options
- netSocketOptIPOptions = 1; // options in IP header (IP_OPTIONS)
- // TCP Level options
- netSocketOptTCPNoDelay = 1; // don't delay send to coalesce packets
- netSocketOptTCPMaxSeg = 2; // TCP maximum segment size (TCP_MAXSEG)
- // Socket level options
- netSocketOptSockDebug = $0001; // turn on debugging info recording
- netSocketOptSockAcceptConn = $0002; // socket has had listen
- netSocketOptSockReuseAddr = $0004; // allow local address reuse
- netSocketOptSockKeepAlive = $0008; // keep connections alive
- netSocketOptSockDontRoute = $0010; // just use interface addresses
- netSocketOptSockBroadcast = $0020; // permit sending of broadcast msgs
- netSocketOptSockUseLoopback = $0040; // bypass hardware when possible
- netSocketOptSockLinger = $0080; // linger on close if data present
- netSocketOptSockOOBInLine = $0100; // leave received OutOfBand data in line
- netSocketOptSockSndBufSize = $1001; // send buffer size
- netSocketOptSockRcvBufSize = $1002; // receive buffer size
- netSocketOptSockSndLowWater = $1003; // send low-water mark
- netSocketOptSockRcvLowWater = $1004; // receive low-water mark
- netSocketOptSockSndTimeout = $1005; // send timeout
- netSocketOptSockRcvTimeout = $1006; // receive timeout
- netSocketOptSockErrorStatus = $1007; // get error status and clear
- netSocketOptSockSocketType = $1008; // get socket type
- // The following are Pilot specific options
- netSocketOptSockNonBlocking = $2000; // set non-blocking mode on or off
- netSocketOptSockRequireErrClear = $2001; // return error from all further calls to socket
- // unless netSocketOptSockErrorStatus is cleared.
- netSocketOptSockMultiPktAddr = $2002; // for SOCK_RDM (RMP) sockets. This is the
- // fixed IP addr (i.e. Mobitex MAN #) to use
- // for multiple packet requests.
- // for socket notification
- // 05/20/00 jhl
- netSocketOptSockNotice = $2003; // prime socket for notification
- // Option levels for SocketOptionSet and SocketOptionGet
- type
- NetSocketOptLevelEnum = WordEnum;
- const
- netSocketOptLevelIP = 0; // IP level options (IPPROTO_IP)
- netSocketOptLevelTCP = 6; // TCP level options (IPPROTO_TCP)
- netSocketOptLevelSocket = $FFFF; // Socket level options (SOL_SOCKET)
- // Structure used for manipulating the linger option
- type
- NetSocketLingerType = record
- onOff: Int16; // option on/off
- time: Int16; // linger time in seconds
- end;
- //-----------------------------------------------------------------------------
- // Enumeration of Socket domains and types passed to NetSocketOpen
- //-----------------------------------------------------------------------------
- type
- NetSocketAddrEnum = Enum;
- const
- netSocketAddrRaw = 0; // (AF_UNSPEC, AF_RAW)
- netSocketAddrINET = 2; // (AF_INET)
- type
- NetSocketTypeEnum = Enum;
- const
- netSocketTypeStream = 1; // (SOCK_STREAM)
- netSocketTypeDatagram = 2; // (SOCK_DGRAM)
- netSocketTypeRaw = 3; // (SOCK_RAW)
- netSocketTypeReliableMsg = 4; // (SOCK_RDM)
- netSocketTypeLicensee = 8; // Socket entry reserved for licensees.
- // Protocols, passed in the protocol parameter to NetLibSocketOpen
- const
- netSocketProtoIPICMP = 1; // IPPROTO_ICMP
- netSocketProtoIPTCP = 6; // IPPROTO_TCP
- netSocketProtoIPUDP = 17; // IPPROTO_UDP
- netSocketProtoIPRAW = 255; // IPPROTO_RAW
- //-----------------------------------------------------------------------------
- // Enumeration of Socket direction, passed to NetSocketShutdown
- //-----------------------------------------------------------------------------
- type
- NetSocketDirEnum = Enum;
- const
- netSocketDirInput = 0;
- netSocketDirOutput = 1;
- netSocketDirBoth = 2;
- //-----------------------------------------------------------------------------
- // Basic Types
- //-----------------------------------------------------------------------------
- // Socket refnum
- type
- NetSocketRef = Int16;
- // Type used to hold internet addresses
- NetIPAddr = UInt32; // a 32-bit IP address.
- // IFMediaEvent notifications types
- type
- NetLibIFMediaEventNotificationTypeEnum = Enum;
- const
- netIFMediaUp = 1; // Usually sent by Network interfaces
- // after they have displayed the UI for displaying
- // connection establishment progress.
- netIFMediaDown = Succ(netIFMediaUp);
- // Sent by Network interface's when their inactivity timer
- // is ellapsed.
- // Notification structure sent in SysNotifyNetLibIFMedia.
- type
- SysNotifyNetLibIFMediaTag = record
- eType: NetLibIFMediaEventNotificationTypeEnum;
- ifCreator: UInt32; // interface creator
- ifInstance: UInt16; // interface instance
- end;
- SysNotifyNetLibIFMediaType = SysNotifyNetLibIFMediaTag;
- //-----------------------------------------------------------------------------
- // For socket notification
- // 05/20/00 jhl
- //-----------------------------------------------------------------------------
- // Notice types
- type
- NoticeTypeEnum = Enum;
- const
- netSocketNoticeNotify = 1;
- // ummmm...
- // shouldn't do this - must fix EventMgr before background/ISR events can be posted
- netSocketNoticeEvent = Succ(netSocketNoticeNotify);
- netSocketNoticeMailbox = Succ(netSocketNoticeEvent);
- netSocketNoticeCallback = Succ(netSocketNoticeMailbox);
- netSocketNoticeWake = Succ(netSocketNoticeCallback);
- // Notification structure sent for netSocketNoticeNotify.
- type
- SysNotifyNetSocketType = record
- socketRef: NetSocketRef; // Socket sending the notification
- condition: UInt32; // Bit field reporting trigger conditions
- end;
- // Event structure sent for netSocketNoticeEvent.
- // This should be defined via Event.h, so it stays in sync.
- type
- netSocketNotice = record
- socketRef: NetSocketRef; // Socket sending the notification
- condition: UInt32; // Bit field reporting trigger conditions
- end;
- type
- NetSocketNoticeEventType = record
- eType: eventsEnum; // User specified event type
- penDown: Boolean;
- tapCount: UInt8;
- screenX: Int16;
- screenY: Int16;
- case Integer of
- 1: (generic: _GenericEventType); // Establish size of union
- 2: (netSocketNotice: netSocketNotice);
- end;
- // Mailbox structure sent for netSocketNoticeMailbox.
- type
- NetSocketNoticeMailboxType = record
- message_: UInt32; // User specified message
- reserved: UInt16;
- socketRef: NetSocketRef; // Socket sending the notification
- condition: UInt32; // Bit field reporting trigger conditions
- end;
- // Callback definition for netSocketNoticeCallback.
- type
- NetSocketNoticeCallbackPtr = function(userDataP: Pointer; socketRef: UInt16; condition: UInt32): Err;
- type
- notify = record
- notifyType: UInt32; // Notification type
- // sends SysNotifyNetSocketType in notification
- end;
- type
- event = record
- eType: eventsEnum; // Event type
- // adds NetSocketNoticeEventType event to UI event queue
- end;
- type
- mailbox = record
- mailboxID: UInt32; // ID of mailbox for send
- message_: UInt32; // first element of mailbox message
- wAck: UInt32; // third argument to SysMailboxSend()
- // sends NetSocketNoticeMailboxType message to specified mailboxID
- end;
- type
- callback = record
- callbackP: NetSocketNoticeCallbackPtr; // Callback proc pointer
- userDataP: Pointer; // User specified ptr passed as callback parameter
- // (*callbackP)(userDataP,socketRef,condition)
- end;
- type
- wake = record
- taskID: UInt32; // ID of task to wake
- socketRefP: ^NetSocketRef; // address to receive socketRef
- conditionP: ^UInt32; // address to receive trigger condition
- end;
- // Structure used to register for a notice
- type
- NetSocketNoticeType = record
- condition: UInt32; // Bit field specifying trigger conditions
- type_: NoticeTypeEnum; // Notice type
- case Integer of
- 1: (notify: notify);
- // ummmm...
- // shouldn't do this - must fix EventMgr before background/ISR events can be posted
- 2: (event: event);
- 3: (mailbox: mailbox);
- 4: (callback: callback);
- 5: (wake: wake); // SysTaskWake(taskID)
- end;
- // Bit values for specifying and reporting trigger conditions
- const
- netSocketNoticeErr = $00000001;
- netSocketNoticeUDPReceive = $00000002;
- netSocketNoticeTCPReceive = $00000004;
- netSocketNoticeTCPTransmit = $00000008;
- netSocketNoticeTCPRemoteClosed = $00000010;
- netSocketNoticeTCPClosed = $00000020;
- netSocketNoticeConnectInbound = $00000040;
- netSocketNoticeConnectOutbound = $00000080;
- //-----------------------------------------------------------------------------
- // Structure used to hold an internet socket address. This includes the internet
- // address and the port number. This structure directly maps to the BSD unix
- // struct sockaddr_in.
- //-----------------------------------------------------------------------------
- type
- NetSocketAddrINType = record
- family: Int16; // Address family in HBO (Host UInt8 Order)
- port: UInt16; // the UDP port in NBO (Network UInt8 Order)
- addr: NetIPAddr; // IP address in NBO (Network UInt8 Order)
- end;
- // Constant that means "use the local machine's IP address"
- const
- netIPAddrLocal = 0; // Can be used in NetSockAddrINType.addr
- // Structure used to hold a generic socket address. This is a generic struct
- // designed to hold any type of address including internet addresses. This
- // structure directly maps to the BSD unix struct sockaddr.
- type
- NetSocketAddrType = record
- family: Int16; // Address family
- data: array [0..14-1] of UInt8; // 14 bytes of address
- end;
- NetSocketAddrPtr = ^NetSocketAddrType;
- // Structure used to hold a raw socket address. When using the netSocketAddrRaw
- // protocol family, the caller must bind() the socket to an interface and
- // specifies the interface using this structure. IMPORTANT: NUMEROUS
- // ROUTINES IN NETLIB RELY ON THE FACT THAT THIS STRUCTURE IS THE SAME
- // SIZE AS A NetSocketAddrINType STRUCTURE.
- type
- NetSocketAddrRawType = record
- family: Int16; // Address family in HBO (Host UInt8 Order)
- ifInstance: UInt16; // the interface instance number
- ifCreator: UInt32; // the interface creator
- end;
- //-----------------------------------------------------------------------------
- // Structure used to hold information about data to be sent. This structure
- // is passed to NetLibSendMsg and contains the optional address to send to,
- // a scatter-write array of data to be sent, and optional access rights
- //-----------------------------------------------------------------------------
- // Scatter/Gather array type. A pointer to an array of these structs is
- // passed to the NetLibSendPB and NetLibRecvPB calls. It specifies where
- // data should go to or come from as a list of buffer addresses and sizes.
- type
- NetIOVecType = record
- bufP: ^UInt8; // buffer address
- bufLen: UInt16; // buffer length
- end;
- NetIOVecPtr = ^NetIOVecType;
- const
- netIOVecMaxLen = 16; // max# of NetIOVecTypes in an array
- // Read/Write ParamBlock type. Passed directly to the SendPB and RecvPB calls.
- type
- NetIOParamType = record
- addrP: ^UInt8; // address - or 0 for default
- addrLen: UInt16; // length of address
- iov: NetIOVecPtr; // scatter/gather array
- iovLen: UInt16; // length of above array
- accessRights: ^UInt8; // access rights
- accessRightsLen: UInt16; // length of accessrights
- end;
- NetIOParamPtr = ^NetIOParamType;
- // Flags values for the NetLibSend, NetLibReceive calls
- const
- netIOFlagOutOfBand = $01; // process out-of-band data
- netIOFlagPeek = $02; // peek at incoming message
- netIOFlagDontRoute = $04; // send without using routing
- //-----------------------------------------------------------------------------
- // Structures used for looking up a host by name or address (NetLibGetHostByName)
- //-----------------------------------------------------------------------------
- // Equates for DNS names, from RFC-1035
- netDNSMaxDomainName = 255;
- netDNSMaxDomainLabel = 63;
- netDNSMaxAliases = 1; // max # of aliases for a host
- netDNSMaxAddresses = 4; // max # of addresses for a host
- // The actual results of NetLibGetHostByName() are returned in this structure.
- // This structure is designed to match the "struct hostent" structure in Unix.
- type
- NetHostInfoType = record
- nameP: PChar; // official name of host
- nameAliasesP: ^PChar; // array of alias's for the name
- addrType: UInt16; // address type of return addresses
- addrLen: UInt16; // the length, in bytes, of the addresses
- // Note this denotes length of a address, not # of addresses.
- addrListP: ^UInt8Ptr; // array of ptrs to addresses in HBO
- end;
- NetHostInfoPtr = ^NetHostInfoType;
- // "Buffer" passed to call as a place to store the results
- NetHostInfoBufType = record
- hostInfo: NetHostInfoType; // high level results of call are here
- // The following fields contain the variable length data that
- // hostInfo points to
- name: array [0..netDNSMaxDomainName] of Char; // hostInfo->name
- aliasList: array [0..netDNSMaxAliases] of PChar; // +1 for 0 termination.
- aliases: array [0..netDNSMaxAliases-1, 0..netDNSMaxDomainName] of Char;
- addressList: array [0..netDNSMaxAddresses-1] of ^NetIPAddr;
- address: array [0..netDNSMaxAddresses-1] of NetIPAddr;
- end;
- NetHostInfoBufPtr = ^NetHostInfoBufType;
- //-----------------------------------------------------------------------------
- // Structures used for looking up a service (NetLibGetServByName)
- //-----------------------------------------------------------------------------
- // Equates for service names
- const
- netServMaxName = 15; // max # characters in service name
- netProtoMaxName = 15; // max # characters in protocol name
- netServMaxAliases = 1; // max # of aliases for a service
- // The actual results of NetLibGetServByName() are returned in this structure.
- // This structure is designed to match the "struct servent" structure in Unix.
- type
- NetServInfoType = record
- nameP: PChar; // official name of service
- nameAliasesP: ^PChar; // array of alias's for the name
- port: UInt16; // port number for this service
- protoP: PChar; // name of protocol to use
- end;
- NetServInfoPtr = ^NetServInfoType;
- // "Buffer" passed to call as a place to store the results
- NetServInfoBufType = record
- servInfo: NetServInfoType; // high level results of call are here
- // The following fields contain the variable length data that
- // servInfo points to
- name: array [0..netServMaxName] of Char; // hostInfo->name
- aliasList: array [0..netServMaxAliases] of PChar; // +1 for 0 termination.
- aliases: array [0..netServMaxAliases-1, 0..netServMaxName-1] of Char;
- protoName: array [0..netProtoMaxName] of Char;
- reserved: UInt8;
- end;
- NetServInfoBufPtr = ^NetServInfoBufType;
- //--------------------------------------------------------------------
- // Structure of a configuration name. Used by NetLibConfigXXX calls
- // <chg 1-28-98 RM> added for the new Config calls.
- //---------------------------------------------------------------------
- const
- netConfigNameSize = 32;
- type
- NetConfigNameType = record
- name: array [0..netConfigNameSize-1] of Char; // name of configuration
- end;
- NetConfigNamePtr = ^NetConfigNameType;
- (********************************************************************
- * Tracing Flags. These flags are ORed together and passed as a UInt32
- * in the netSettingTraceFlags setting and netIFSettingTraceFlags to
- * enable/disable various trace options.
- ********************************************************************)
- const
- netTracingErrors = $00000001; // record errors
- netTracingMsgs = $00000002; // record messages
- netTracingPktIP = $00000004; // record packets sent/received
- // to/from interfaces at the IP layer
- // NOTE: netTracingPktData40 & netTracingPktData
- // will control how much data of each packet is
- // recorded.
- netTracingFuncs = $00000008; // record function flow
- netTracingAppMsgs = $00000010; // record application messages
- // (NetLibTracePrintF, NetLibTracePutS)
- netTracingPktData40 = $00000020; // record first 40 bytes of packets
- // when netTracingPktsXX is also on.
- // NOTE: Mutually exclusive with
- // netTracingPktData and only applicable if
- // one of the netTracingPktsXX bits is also set
- netTracingPktData = $00000040; // record all bytes of IP packets
- // sent/received to/from interfaces
- // NOTE: Mutually exclusive with
- // netTracingPkts & netTracingPktData64
- netTracingPktIFHi = $00000080; // record packets sent/received at highest layer
- // of interface (just below IP layer).
- // NOTE: netTracingPktData40 & netTracingPktData
- // will control how much data of each packet is
- // recorded.
- netTracingPktIFMid = $00000100; // record packets sent/received at mid layer
- // of interface (just below IFHi layer).
- // NOTE: netTracingPktData40 & netTracingPktData
- // will control how much data of each packet is
- // recorded.
- netTracingPktIFLow = $00000200; // record packets sent/received at low layer
- // of interface (just below IFMid layer).
- // NOTE: netTracingPktData40 & netTracingPktData
- // will control how much data of each packet is
- // recorded.
- // OBSOLETE tracing bit, still used by Network Panel
- netTracingPkts = netTracingPktIP;
- (********************************************************************
- * Command numbers and parameter blocks for the NetLibMaster() call.
- * This call is used to put the Net library into certain debugging modes
- * or for obtaining statistics from the Net Library.
- *
- ********************************************************************)
- type
- NetMasterEnum = Enum;
- const
- // These calls return info
- netMasterInterfaceInfo = 0;
- netMasterInterfaceStats = Succ(netMasterInterfaceInfo);
- netMasterIPStats = Succ(netMasterInterfaceStats);
- netMasterICMPStats = Succ(netMasterIPStats);
- netMasterUDPStats = Succ(netMasterICMPStats);
- netMasterTCPStats = Succ(netMasterUDPStats);
- // This call used to read the trace buffer.
- netMasterTraceEventGet = Succ(netMasterTCPStats); // get trace event by index
- type
- //.............................................................
- // InterfaceInfo command
- //.............................................................
- interfaceInfo = record
- index: UInt16; // -> index of interface
- creator: UInt32; // <- creator
- instance: UInt16; // <- instance
- netIFP: Pointer; // <- net_if pointer
- // driver level info
- drvrName: array [0..netDrvrTypeNameLen-1] of Char; // <- type of driver (SLIP,PPP, etc)
- hwName: array [0..netDrvrHWNameLen-1] of Char; // <- hardware name (Serial Library, etc)
- localNetHdrLen: UInt8; // <- local net header length
- localNetTrailerLen: UInt8; // <- local net trailer length
- localNetMaxFrame: UInt16; // <- local net maximum frame size
- // media layer info
- ifName: array [0..netIFNameLen-1] of Char; // <- interface name w/instance
- driverUp: Boolean; // <- true if interface driver up
- ifUp: Boolean; // <- true if interface is up
- hwAddrLen: UInt16; // <- length of hardware address
- hwAddr: array [0..netIFMaxHWAddrLen-1] of UInt8; // <- hardware address
- mtu: UInt16; // <- maximum transfer unit of interface
- speed: UInt32; // <- speed in bits/sec.
- lastStateChange: UInt32; // <- time in milliseconds of last state change
- // Address info
- ipAddr: NetIPAddr; // Address of this interface
- subnetMask: NetIPAddr; // subnet mask of local network
- broadcast: NetIPAddr; // broadcast address of local network
- end;
- //.............................................................
- // InterfaceStats command
- //.............................................................
- interfaceStats = record
- index: UInt16; // -> index of interface
- inOctets: UInt32; // <- ....
- inUcastPkts: UInt32;
- inNUcastPkts: UInt32;
- inDiscards: UInt32;
- inErrors: UInt32;
- inUnknownProtos: UInt32;
- outOctets: UInt32;
- outUcastPkts: UInt32;
- outNUcastPkts: UInt32;
- outDiscards: UInt32;
- outErrors: UInt32;
- end;
- //.............................................................
- // IPStats command
- //.............................................................
- ipStats = record
- ipInReceives: UInt32;
- ipInHdrErrors: UInt32;
- ipInAddrErrors: UInt32;
- ipForwDatagrams: UInt32;
- ipInUnknownProtos: UInt32;
- ipInDiscards: UInt32;
- ipInDelivers: UInt32;
- ipOutRequests: UInt32;
- ipOutDiscards: UInt32;
- ipOutNoRoutes: UInt32;
- ipReasmReqds: UInt32;
- ipReasmOKs: UInt32;
- ipReasmFails: UInt32;
- ipFragOKs: UInt32;
- ipFragFails: UInt32;
- ipFragCreates: UInt32;
- ipRoutingDiscards: UInt32;
- ipDefaultTTL: UInt32;
- ipReasmTimeout: UInt32;
- end;
- //.............................................................
- // ICMPStats command
- //.............................................................
- icmpStats = record
- icmpInMsgs: UInt32;
- icmpInErrors: UInt32;
- icmpInDestUnreachs: UInt32;
- icmpInTimeExcds: UInt32;
- icmpInParmProbs: UInt32;
- icmpInSrcQuenchs: UInt32;
- icmpInRedirects: UInt32;
- icmpInEchos: UInt32;
- icmpInEchoReps: UInt32;
- icmpInTimestamps: UInt32;
- icmpInTimestampReps: UInt32;
- icmpInAddrMasks: UInt32;
- icmpInAddrMaskReps: UInt32;
- icmpOutMsgs: UInt32;
- icmpOutErrors: UInt32;
- icmpOutDestUnreachs: UInt32;
- icmpOutTimeExcds: UInt32;
- icmpOutParmProbs: UInt32;
- icmpOutSrcQuenchs: UInt32;
- icmpOutRedirects: UInt32;
- icmpOutEchos: UInt32;
- icmpOutEchoReps: UInt32;
- icmpOutTimestamps: UInt32;
- icmpOutTimestampReps: UInt32;
- icmpOutAddrMasks: UInt32;
- icmpOutAddrMaskReps: UInt32;
- end;
- //.............................................................
- // UDPStats command
- //.............................................................
- udpStats = record
- udpInDatagrams: UInt32;
- udpNoPorts: UInt32;
- udpInErrors: UInt32;
- udpOutDatagrams: UInt32;
- end;
- //.............................................................
- // TCPStats command
- //.............................................................
- tcpStats = record
- tcpRtoAlgorithm: UInt32;
- tcpRtoMin: UInt32;
- tcpRtoMax: UInt32;
- tcpMaxConn: UInt32;
- tcpActiveOpens: UInt32;
- tcpPassiveOpens: UInt32;
- tcpAttemptFails: UInt32;
- tcpEstabResets: UInt32;
- tcpCurrEstab: UInt32;
- tcpInSegs: UInt32;
- tcpOutSegs: UInt32;
- tcpRetransSegs: UInt32;
- tcpInErrs: UInt32;
- tcpOutRsts: UInt32;
- end;
- //.............................................................
- // TraceEventGet command
- //.............................................................
- traceEventGet = record
- index: UInt16; // which event
- textP: PChar; // ptr to text string to return it in
- end;
- type
- NetMasterPBType = record
- // These fields are specific to each command
- case Integer of
- 0: (interfaceInfo: interfaceInfo);
- 1: (interfaceStats: interfaceStats);
- 2: (ipStats: ipStats);
- 3: (icmpStats: icmpStats);
- 4: (udpStats: udpStats);
- 5: (tcpStats: tcpStats);
- 6: (traceEventGet: traceEventGet);
- end;
- NetMasterPBPtr = ^NetMasterPBType;
- //-----------------------------------------------------------------------------
- // Enumeration of Net settings as passed to NetLibSettingGet/Set.
- //-----------------------------------------------------------------------------
- //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- // Global environment settings common to all attached network interfaces,
- // passed to NetLibSettingGet/Set
- //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- type
- NetSettingEnum = WordEnum;
- const
- netSettingResetAll = 0; // void, NetLibSettingSet only, resets all settings
- // to their defaults.
- netSettingPrimaryDNS = Succ(netSettingResetAll); // UInt32, IP address of Primary DN Server
- netSettingSecondaryDNS = Succ(netSettingPrimaryDNS); // UInt32, IP address of Secondary DN Server
- netSettingDefaultRouter = Succ(netSettingSecondaryDNS); // UInt32, IP address of Default router
- netSettingDefaultIFCreator = Succ(netSettingDefaultRouter); // UInt32, Creator type of default interface
- netSettingDefaultIFInstance = Succ(netSettingDefaultIFCreator); // UInt16, Instance# of default interface
- netSettingHostName = Succ(netSettingDefaultIFInstance); // Char[64], name of host (not including domain)
- netSettingDomainName = Succ(netSettingHostName); // Char[256], domain name of hosts's domain
- netSettingHostTbl = Succ(netSettingDomainName); // Char[], host table
- netSettingCloseWaitTime = Succ(netSettingHostTbl); // UInt32, time in milliseconds to stay in close-wait state
- netSettingInitialTCPResendTime = Succ(netSettingCloseWaitTime); // UInt32, time in milliseconds before TCP resends a packet.
- // This is just the initial value, the timeout is adjusted
- // from this initial value depending on history of ACK times.
- // This is sometimes referred to as the RTO (Roundtrip Time Out)
- // See RFC-1122 for additional information.
- // The following settings are not used for configuration, but rather put the
- // stack into various modes for debugging, etc.
- netSettingTraceBits = $1000; // UInt32, enable/disable various trace flags (netTraceBitXXXX)
- netSettingTraceSize = Succ(netSettingTraceBits); // UInt32, max trace buffer size in bytes. Default 0x800.
- // Setting this will also clear the trace buffer.
- netSettingTraceStart = Succ(netSettingTraceSize); // UInt32, for internal use ONLY!!
- netSettingTraceRoll = Succ(netSettingTraceStart); // UInt8, if true, trace buffer will rollover after it fills.
- // Default is true.
- netSettingRTPrimaryDNS = Succ(netSettingTraceRoll); // used internally by Network interfaces
- // that dynamically obtain the DNS address
- netSettingRTSecondaryDNS = Succ(netSettingRTPrimaryDNS); // used internally by Network interfaces
- // that dynamically obtain the DNS address
- netSettingConfigTable = Succ(netSettingRTSecondaryDNS); // used internally by NetLib - NOT FOR USE BY
- // APPLICATIONS!!
- //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- // Settings for each Network Interface, passed to NetLibIFSettingGet/Set
- //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- type
- NetIFSettingEnum = WordEnum;
- const
- //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- // Reset all settings to defaults
- //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- netIFSettingResetAll = 0; // void, NetLibIFSettingSet only, resets all settings
- // to their defaults.
- //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- // Status - read only
- //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- netIFSettingUp = Succ(netIFSettingResetAll); // UInt8, true if interface is UP.
- netIFSettingName = Succ(netIFSettingUp); // Char[32], name of interface
- //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- // Addressing
- //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- netIFSettingReqIPAddr = Succ(netIFSettingName); // UInt32, requested IP address of this interface
- netIFSettingSubnetMask = Succ(netIFSettingReqIPAddr); // UInt32, subnet mask of this interface
- netIFSettingBroadcast = Succ(netIFSettingSubnetMask); // UInt32, broadcast address for this interface
- //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- // User Info
- //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- netIFSettingUsername = Succ(netIFSettingBroadcast); // Char[], login script user name
- // If 0 length, then user will be prompted for it
- netIFSettingPassword = Succ(netIFSettingUsername); // Char[], login script user password
- // If 0 length, then user will be prompted for it
- netIFSettingDialbackUsername = Succ(netIFSettingPassword); // Char[], login script dialback user name.
- // If 0 length, then netIFSettingUsername is used
- netIFSettingDialbackPassword = Succ(netIFSettingDialbackUsername); // Char[], login script dialback user password.
- // If 0 length, then user will be prompted for it
- netIFSettingAuthUsername = Succ(netIFSettingDialbackPassword); // Char[], PAP/CHAP name.
- // If 0 length, then netIFSettingUsername is used
- netIFSettingAuthPassword = Succ(netIFSettingAuthUsername); // Char[], PAP/CHAP password.
- // If "$", then user will be prompted for it
- // else If 0 length, then netIFSettingPassword or result
- // of it's prompt (if it was empty) will be used
- // else it is used as-is.
- //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- // Connect Settings
- //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- netIFSettingServiceName = Succ(netIFSettingAuthPassword); // Char[], name of service
- netIFSettingLoginScript = Succ(netIFSettingServiceName); // Char[], login script
- netIFSettingConnectLog = Succ(netIFSettingLoginScript); // Char[], connect log
- netIFSettingInactivityTimeout = Succ(netIFSettingConnectLog); // UInt16, # of seconds of inactivity allowed before
- // interface is brought down. If 0 then
- // no inactivity timeout enforced.
- netIFSettingEstablishmentTimeout = Succ(netIFSettingInactivityTimeout); // UInt16, max delay in seconds between connection
- // establishment stages
- // Serial based protocol options
- netIFSettingDynamicIP = Succ(netIFSettingEstablishmentTimeout); // UInt8, if true, get IP address from server
- // N/A for SLIP
- netIFSettingVJCompEnable = Succ(netIFSettingDynamicIP); // UInt8, if true enable VJ Header compression
- // Default is on for PPP, off for SLIP
- netIFSettingVJCompSlots = Succ(netIFSettingVJCompEnable); // UInt8, # of slots to use for VJ compression.
- // Default is 4 for PPP, 16 for SLIP
- // (each slot uses 256 bytes of RAM).
- netIFSettingMTU = Succ(netIFSettingVJCompSlots); // UInt16, maximum transmission unit in bytes
- // ignored in current PPP and SLIP interfaces
- netIFSettingAsyncCtlMap = Succ(netIFSettingMTU); // UInt32, bitmask of characters to escape
- // ignored in current PPP interfaces
- // Serial settings, used by serial based network interfaces
- netIFSettingPortNum = Succ(netIFSettingAsyncCtlMap); // UInt16, port number to use
- netIFSettingBaudRate = Succ(netIFSettingPortNum); // UInt32, baud rate in bits/sec.
- netIFSettingFlowControl = Succ(netIFSettingBaudRate); // UInt8, flow control setting bits. Set to 0x01 for
- // hardware flow control, else set to 0x00.
- netIFSettingStopBits = Succ(netIFSettingFlowControl); // UInt8, # of stop bits
- netIFSettingParityOn = Succ(netIFSettingStopBits); // UInt8, true if parity on
- netIFSettingParityEven = Succ(netIFSettingParityOn); // UInt8, true if parity even
- // Modem settings, optionally used by serial based network interfaces
- netIFSettingUseModem = Succ(netIFSettingParityEven); // UInt8, if true dial-up through modem
- netIFSettingPulseDial = Succ(netIFSettingUseModem); // UInt8, if true use pulse dial, else tone
- netIFSettingModemInit = Succ(netIFSettingPulseDial); // Char[], modem initialization string
- netIFSettingModemPhone = Succ(netIFSettingModemInit); // Char[], modem phone number string
- netIFSettingRedialCount = Succ(netIFSettingModemPhone); // UInt16, # of times to redial
- //---------------------------------------------------------------------------------
- // New Settings as of PalmOS 3.0
- // Power control, usually only implemented by wireless interfaces
- //---------------------------------------------------------------------------------
- netIFSettingPowerUp = Succ(netIFSettingRedialCount); // UInt8, true if this interface is powered up
- // false if this interface is in power-down mode
- // interfaces that don't support power modes should
- // quietly ignore this setting.
- // Wireless or Wireline, read-only, returns true for wireless interfaces. this
- // setting is used by application level functions to determine which interface(s)
- // to attach/detach given user preference and/or state of the antenna.
- netIFSettingWireless = Succ(netIFSettingPowerUp); // UInt8, true if this interface is wireless
- // Option to query server for address of DNS servers
- netIFSettingDNSQuery = Succ(netIFSettingWireless); // UInt8, if true PPP queries for DNS address. Default true
- //---------------------------------------------------------------------------------
- // New Settings as of PalmOS 3.2
- // Power control, usually only implemented by wireless interfaces
- //---------------------------------------------------------------------------------
- netIFSettingQuitOnTxFail = Succ(netIFSettingDNSQuery); // BYTE W-only. Power down RF on tx fail
- netIFSettingQueueSize = Succ(netIFSettingQuitOnTxFail); // UInt8 R-only. The size of the Tx queue in the RF interface
- netIFSettingTxInQueue = Succ(netIFSettingQueueSize); // BYTE R-only. Packets remaining to be sent
- netIFSettingTxSent = Succ(netIFSettingTxInQueue); // BYTE R-only. Packets sent since SocketOpen
- netIFSettingTxDiscard = Succ(netIFSettingTxSent); // BYTE R-only. Packets discarded on SocketClose
- netIFSettingRssi = Succ(netIFSettingTxDiscard); // char R-only. signed value in dBm.
- netIFSettingRssiAsPercent = Succ(netIFSettingRssi); // char R-only. signed value in percent, with 0 being no coverage and 100 being excellent.
- netIFSettingRadioState = Succ(netIFSettingRssiAsPercent); // enum R-only. current state of the radio
- netIFSettingBase = Succ(netIFSettingRadioState); // UInt32 R-only. Interface specific
- netIFSettingRadioID = Succ(netIFSettingBase); // UInt32[2] R-only, two 32-bit. interface specific
- netIFSettingBattery = Succ(netIFSettingRadioID); // UInt8, R-only. percentage of battery left
- netIFSettingNetworkLoad = Succ(netIFSettingBattery); // UInt8, R-only. percent estimate of network loading
- //---------------------------------------------------------------------------------
- // New Settings as of PalmOS 3.3
- //---------------------------------------------------------------------------------
- netIFSettingConnectionName = Succ(netIFSettingNetworkLoad); // Char [] Connection Profile Name
- //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- // The following settings are not used for configuration, but rather put the
- // stack into various modes for debugging, etc.
- //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- netIFSettingTraceBits = $1000; // UInt32, enable/disable various trace flags (netTraceBitXXXX)
- netIFSettingGlobalsPtr = Succ(netIFSettingTraceBits); // UInt32, (Read-Only) sinterface's globals ptr
- netIFSettingActualIPAddr = Succ(netIFSettingGlobalsPtr); // UInt32, (Read-Only) the actual IP address that the interface
- // ends up using. The login script executor stores
- // the result of the "g" script command here as does
- // the PPP negotiations.
- netIFSettingServerIPAddr = Succ(netIFSettingActualIPAddr); // UInt32, (Read-Only) the IP address of the PPP server
- // we're connected to
- // The following setting should be true if this network interface should be
- // brought down when the Pilot is turned off.
- netIFSettingBringDownOnPowerDown = Succ(netIFSettingServerIPAddr); // UInt8, if true interface will be brought down when
- // Pilot is turned off.
- // The following setting is used by the TCP/IP stack ONLY!! It tells the interface
- // to pass all received packets as-is to the NetIFCallbacksPtr->raw_rcv() routine.
- // This setting gets setup when an application creates a raw socket in the raw domain
- netIFSettingRawMode = Succ(netIFSettingBringDownOnPowerDown); // UInt32, parameter to pass to raw_rcv() along with
- // packet pointer.
- //---------------------------------------------------------------------------------
- // New Settings as of PalmOS 4.0
- //---------------------------------------------------------------------------------
- // The following setting is a new interface in PalmOS 4.0 that allow INetlib
- // or other NetLib clients to get raw location information as described in
- // PalmLocRawData.h.
- // NetLib will return a pointer to a newly allocated memory buffer containing
- // the raw location information to send to Elaine (Web Clipping proxy server).
- // Elaine will then use a Windows DLL to analyse the raw location information
- // in order to transform it into something useful like zipcode, cityname, etc.
- // See PalmLocRawData.h for more details...
- netIFSettingLocRawInfo = Succ(netIFSettingRawMode); // void* R-only: Allocated memory buffer - must be free by caller
- //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- // 3rd party settings start here...
- //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- netIFSettingCustom = $8000;
- //=========================================================================================
- // Enums for the netIFSettingRadioState setting
- //
- // JB added for the radio state setting.
- // <chg 3-17-98 RM> fixed naming conventions.
- //=========================================================================================
- type
- NetRadioStateEnum = Enum;
- const
- netRadioStateOffNotConnected = 0;
- netRadioStateOnNotConnected = Succ(netRadioStateOffNotConnected); // scanning
- netRadioStateOnConnected = Succ(netRadioStateOnNotConnected); // have channel
- netRadioStateOffConnected = Succ(netRadioStateOnConnected);
- (************************************************************
- * Net Library Macros
- *************************************************************)
- // Return current time in milliseconds.
- function NetNow: UInt32;
- // File Descriptor macros used for the NetLibSelect() call
- type
- NetFDSetType = UInt32;
- NetFDSetPtr = ^NetFDSetType;
- const
- netFDSetSize = 32;
- procedure netFDSet(n: UInt8; var p: NetFDSetType);
- procedure nnetFDClr(n: UInt8; var p: NetFDSetType);
- function nnetFDIsSet(n: UInt8; var p: NetFDSetType): Boolean;
- procedure nnetFDZero(var p: NetFDSetType);
- //-----------------------------------------------------------------------------
- // Net error codes
- //-----------------------------------------------------------------------------
- const
- netErrAlreadyOpen = netErrorClass or 1;
- netErrNotOpen = netErrorClass or 2;
- netErrStillOpen = netErrorClass or 3;
- netErrParamErr = netErrorClass or 4;
- netErrNoMoreSockets = netErrorClass or 5;
- netErrOutOfResources = netErrorClass or 6;
- netErrOutOfMemory = netErrorClass or 7; // Might be because free heap space is <32K probably because handheld's RAM <2MB
- netErrSocketNotOpen = netErrorClass or 8;
- netErrSocketBusy = netErrorClass or 9; //EINPROGRESS
- netErrMessageTooBig = netErrorClass or 10;
- netErrSocketNotConnected = netErrorClass or 11;
- netErrNoInterfaces = netErrorClass or 12; //ENETUNREACH
- netErrBufTooSmall = netErrorClass or 13;
- netErrUnimplemented = netErrorClass or 14;
- netErrPortInUse = netErrorClass or 15; //EADDRINUSE
- netErrQuietTimeNotElapsed = netErrorClass or 16; //EADDRINUSE
- netErrInternal = netErrorClass or 17;
- netErrTimeout = netErrorClass or 18; //ETIMEDOUT
- netErrSocketAlreadyConnected = netErrorClass or 19; //EISCONN
- netErrSocketClosedByRemote = netErrorClass or 20;
- netErrOutOfCmdBlocks = netErrorClass or 21;
- netErrWrongSocketType = netErrorClass or 22;
- netErrSocketNotListening = netErrorClass or 23;
- netErrUnknownSetting = netErrorClass or 24;
- netErrInvalidSettingSize = netErrorClass or 25;
- netErrPrefNotFound = netErrorClass or 26;
- netErrInvalidInterface = netErrorClass or 27;
- netErrInterfaceNotFound = netErrorClass or 28;
- netErrTooManyInterfaces = netErrorClass or 29;
- netErrBufWrongSize = netErrorClass or 30;
- netErrUserCancel = netErrorClass or 31;
- netErrBadScript = netErrorClass or 32;
- netErrNoSocket = netErrorClass or 33;
- netErrSocketRcvBufFull = netErrorClass or 34;
- netErrNoPendingConnect = netErrorClass or 35;
- netErrUnexpectedCmd = netErrorClass or 36;
- netErrNoTCB = netErrorClass or 37;
- netErrNilRemoteWindowSize = netErrorClass or 38;
- netErrNoTimerProc = netErrorClass or 39;
- netErrSocketInputShutdown = netErrorClass or 40; // EOF to sockets API
- netErrCmdBlockNotCheckedOut = netErrorClass or 41;
- netErrCmdNotDone = netErrorClass or 42;
- netErrUnknownProtocol = netErrorClass or 43;
- netErrUnknownService = netErrorClass or 44;
- netErrUnreachableDest = netErrorClass or 45;
- netErrReadOnlySetting = netErrorClass or 46;
- netErrWouldBlock = netErrorClass or 47; //EWOULDBLOCK
- netErrAlreadyInProgress = netErrorClass or 48; //EALREADY
- netErrPPPTimeout = netErrorClass or 49;
- netErrPPPBroughtDown = netErrorClass or 50;
- netErrAuthFailure = netErrorClass or 51;
- netErrPPPAddressRefused = netErrorClass or 52;
- // The following map into the Epilogue DNS errors declared in DNS.ep.h:
- // and MUST be kept in this order!!
- netErrDNSNameTooLong = netErrorClass or 53;
- netErrDNSBadName = netErrorClass or 54;
- netErrDNSBadArgs = netErrorClass or 55;
- netErrDNSLabelTooLong = netErrorClass or 56;
- netErrDNSAllocationFailure = netErrorClass or 57;
- netErrDNSTimeout = netErrorClass or 58;
- netErrDNSUnreachable = netErrorClass or 59;
- netErrDNSFormat = netErrorClass or 60;
- netErrDNSServerFailure = netErrorClass or 61;
- netErrDNSNonexistantName = netErrorClass or 62;
- netErrDNSNIY = netErrorClass or 63;
- netErrDNSRefused = netErrorClass or 64;
- netErrDNSImpossible = netErrorClass or 65;
- netErrDNSNoRRS = netErrorClass or 66;
- netErrDNSAborted = netErrorClass or 67;
- netErrDNSBadProtocol = netErrorClass or 68;
- netErrDNSTruncated = netErrorClass or 69;
- netErrDNSNoRecursion = netErrorClass or 70;
- netErrDNSIrrelevant = netErrorClass or 71;
- netErrDNSNotInLocalCache = netErrorClass or 72;
- netErrDNSNoPort = netErrorClass or 73;
- // The following map into the Epilogue IP errors declared in IP.ep.h:
- // and MUST be kept in this order!!
- netErrIPCantFragment = netErrorClass or 74;
- netErrIPNoRoute = netErrorClass or 75;
- netErrIPNoSrc = netErrorClass or 76;
- netErrIPNoDst = netErrorClass or 77;
- netErrIPktOverflow = netErrorClass or 78;
- // End of Epilogue IP errors
- netErrTooManyTCPConnections = netErrorClass or 79;
- netErrNoDNSServers = netErrorClass or 80;
- netErrInterfaceDown = netErrorClass or 81;
- // Mobitex network radio interface error code returns
- netErrNoChannel = netErrorClass or 82; // The datalink layer cannot acquire a channel
- netErrDieState = netErrorClass or 83; // Mobitex network has issued a DIE command.
- netErrReturnedInMail = netErrorClass or 84; // The addressed of the transmitted packet was not available, and the message was placed in the network's mailbox.
- netErrReturnedNoTransfer = netErrorClass or 85; // This message cannot be transferred or put in the network mailbox.
- netErrReturnedIllegal = netErrorClass or 86; // The message could not be switched to the network
- netErrReturnedCongest = netErrorClass or 87; // Line, radio channels, or network nodes are congested.
- netErrReturnedError = netErrorClass or 88; // Technical error in the network.
- netErrReturnedBusy = netErrorClass or 89; // The B-party is busy.
- netErrGMANState = netErrorClass or 90; // The modem has not registered with the network.
- netErrQuitOnTxFail = netErrorClass or 91; // Couldn't get packet through, shutdown.
- netErrFlexListFull = netErrorClass or 92; // raw IF error message: see Mobitex spec.
- netErrSenderMAN = netErrorClass or 93; // ditto
- netErrIllegalType = netErrorClass or 94; // ditto
- netErrIllegalState = netErrorClass or 95; // ditto
- netErrIllegalFlags = netErrorClass or 96; // ditto
- netErrIllegalSendlist = netErrorClass or 97; // ditto
- netErrIllegalMPAKLength = netErrorClass or 98; // ditto
- netErrIllegalAddressee = netErrorClass or 99; // ditto
- netErrIllegalPacketClass = netErrorClass or 100; // ditto
- netErrBufferLength = netErrorClass or 101; // any
- netErrNiCdLowBattery = netErrorClass or 102; // any
- netErrRFinterfaceFatal = netErrorClass or 103; // any
- netErrIllegalLogout = netErrorClass or 104; // raw IF error message
- netErrAAARadioLoad = netErrorClass or 105; // 7/20/98 JB. If there is insufficient AAA
- netErrAntennaDown = netErrorClass or 106;
- netErrNiCdCharging = netErrorClass or 107; // just for charging
- netErrAntennaWentDown = netErrorClass or 108;
- netErrNotActivated = netErrorClass or 109; // The unit has not been FULLY activated. George and Morty completed.
- netErrRadioTemp = netErrorClass or 110; // Radio's temp is too high for FCC compliant TX
- netErrNiCdChargeError = netErrorClass or 111; // Charging stopped due to NiCd charging characteristic
- netErrNiCdSag = netErrorClass or 112; // the computed sag or actual sag indicates a NiCd with diminished capacity.
- netErrNiCdChargeSuspend = netErrorClass or 113; // Charging has been suspended due to low AAA batteries.
- // Left room for more Mobitex errors
- // Configuration errors
- netErrConfigNotFound = netErrorClass or 115;
- netErrConfigCantDelete = netErrorClass or 116;
- netErrConfigTooMany = netErrorClass or 117;
- netErrConfigBadName = netErrorClass or 118;
- netErrConfigNotAlias = netErrorClass or 119;
- netErrConfigCantPointToAlias = netErrorClass or 120;
- netErrConfigEmpty = netErrorClass or 121;
- netErrAlreadyOpenWithOtherConfig = netErrorClass or 122;
- netErrConfigAliasErr = netErrorClass or 123;
- netErrNoMultiPktAddr = netErrorClass or 124;
- netErrOutOfPackets = netErrorClass or 125;
- netErrMultiPktAddrReset = netErrorClass or 126;
- netErrStaleMultiPktAddr = netErrorClass or 127;
- // Login scripting plugin errors
- netErrScptPluginMissing = netErrorClass or 128;
- netErrScptPluginLaunchFail = netErrorClass or 129;
- netErrScptPluginCmdFail = netErrorClass or 130;
- netErrScptPluginInvalidCmd = netErrorClass or 131;
- // Telephony errors
- netErrTelMissingComponent = netErrorClass or 132;
- netErrTelErrorNotHandled = netErrorClass or 133;
- netErrMobitexStart = netErrNoChannel;
- netErrMobitexEnd = netErrNiCdChargeSuspend;
- //-----------------------------------------------------------------------------
- // Net library call ID's. Each library call gets the trap number:
- // netTrapXXXX which serves as an index into the library's dispatch table.
- // The constant sysLibTrapCustom is the first available trap number after
- // the system predefined library traps Open,Close,Sleep & Wake.
- //
- // WARNING!!! This order of these traps MUST match the order of the dispatch
- // table in NetDispatch.c!!!
- //-----------------------------------------------------------------------------
- type
- NetLibTrapNumberEnum = Enum;
- const
- netLibTrapAddrINToA = sysLibTrapCustom;
- netLibTrapAddrAToIN = Succ(netLibTrapAddrINToA);
- netLibTrapSocketOpen = Succ(netLibTrapAddrAToIN);
- netLibTrapSocketClose = Succ(netLibTrapSocketOpen);
- netLibTrapSocketOptionSet = Succ(netLibTrapSocketClose);
- netLibTrapSocketOptionGet = Succ(netLibTrapSocketOptionSet);
- netLibTrapSocketBind = Succ(netLibTrapSocketOptionGet);
- netLibTrapSocketConnect = Succ(netLibTrapSocketBind);
- netLibTrapSocketListen = Succ(netLibTrapSocketConnect);
- netLibTrapSocketAccept = Succ(netLibTrapSocketListen);
- netLibTrapSocketShutdown = Succ(netLibTrapSocketAccept);
- netLibTrapSendPB = Succ(netLibTrapSocketShutdown);
- netLibTrapSend = Succ(netLibTrapSendPB);
- netLibTrapReceivePB = Succ(netLibTrapSend);
- netLibTrapReceive = Succ(netLibTrapReceivePB);
- netLibTrapDmReceive = Succ(netLibTrapReceive);
- netLibTrapSelect = Succ(netLibTrapDmReceive);
- netLibTrapPrefsGet = Succ(netLibTrapSelect);
- netLibTrapPrefsSet = Succ(netLibTrapPrefsGet);
- // The following traps are for internal and Network interface
- // use only.
- netLibTrapDrvrWake = Succ(netLibTrapPrefsSet);
- netLibTrapInterfacePtr = Succ(netLibTrapDrvrWake);
- netLibTrapMaster = Succ(netLibTrapInterfacePtr);
- // New Traps
- netLibTrapGetHostByName = Succ(netLibTrapMaster);
- netLibTrapSettingGet = Succ(netLibTrapGetHostByName);
- netLibTrapSettingSet = Succ(netLibTrapSettingGet);
- netLibTrapIFAttach = Succ(netLibTrapSettingSet);
- netLibTrapIFDetach = Succ(netLibTrapIFAttach);
- netLibTrapIFGet = Succ(netLibTrapIFDetach);
- netLibTrapIFSettingGet = Succ(netLibTrapIFGet);
- netLibTrapIFSettingSet = Succ(netLibTrapIFSettingGet);
- netLibTrapIFUp = Succ(netLibTrapIFSettingSet);
- netLibTrapIFDown = Succ(netLibTrapIFUp);
- netLibTrapIFMediaUp = Succ(netLibTrapIFDown);
- netLibTrapScriptExecuteV32 = Succ(netLibTrapIFMediaUp);
- netLibTrapGetHostByAddr = Succ(netLibTrapScriptExecuteV32);
- netLibTrapGetServByName = Succ(netLibTrapGetHostByAddr);
- netLibTrapSocketAddr = Succ(netLibTrapGetServByName);
- netLibTrapFinishCloseWait = Succ(netLibTrapSocketAddr);
- netLibTrapGetMailExchangeByName = Succ(netLibTrapFinishCloseWait);
- netLibTrapPrefsAppend = Succ(netLibTrapGetMailExchangeByName);
- netLibTrapIFMediaDown = Succ(netLibTrapPrefsAppend);
- netLibTrapOpenCount = Succ(netLibTrapIFMediaDown);
- netLibTrapTracePrintF = Succ(netLibTrapOpenCount);
- netLibTrapTracePutS = Succ(netLibTrapTracePrintF);
- netLibTrapOpenIfCloseWait = Succ(netLibTrapTracePutS);
- netLibTrapHandlePowerOff = Succ(netLibTrapOpenIfCloseWait);
- netLibTrapConnectionRefresh = Succ(netLibTrapHandlePowerOff);
- // Traps added after 1.0 release of NetLib
- netLibTrapBitMove = Succ(netLibTrapConnectionRefresh);
- netLibTrapBitPutFixed = Succ(netLibTrapBitMove);
- netLibTrapBitGetFixed = Succ(netLibTrapBitPutFixed);
- netLibTrapBitPutUIntV = Succ(netLibTrapBitGetFixed);
- netLibTrapBitGetUIntV = Succ(netLibTrapBitPutUIntV);
- netLibTrapBitPutIntV = Succ(netLibTrapBitGetUIntV);
- netLibTrapBitGetIntV = Succ(netLibTrapBitPutIntV);
- // Traps added after 2.0 release of NetLib
- netLibOpenConfig_ = Succ(netLibTrapBitGetIntV);
- netLibConfigMakeActive_ = Succ(netLibOpenConfig_);
- netLibConfigList_ = Succ(netLibConfigMakeActive_);
- netLibConfigIndexFromName_ = Succ(netLibConfigList_);
- netLibConfigDelete_ = Succ(netLibConfigIndexFromName_);
- netLibConfigSaveAs_ = Succ(netLibConfigDelete_);
- netLibConfigRename_ = Succ(netLibConfigSaveAs_);
- netLibConfigAliasSet_ = Succ(netLibConfigRename_);
- netLibConfigAliasGet_ = Succ(netLibConfigAliasSet_);
- // Traps added after 3.2 release of NetLib
- netLibTrapScriptExecute = Succ(netLibConfigAliasGet_);
- netLibTrapLast = Succ(netLibTrapScriptExecute);
- (************************************************************
- * Net Library procedures.
- *************************************************************)
- //--------------------------------------------------
- // Library initialization, shutdown, sleep and wake
- //--------------------------------------------------
- function NetLibOpen(libRefnum: UInt16; var netIFErrsP: UInt16): Err; syscall sysLibTrapOpen;
- function NetLibClose(libRefnum: UInt16; immediate: UInt16): Err; syscall sysLibTrapClose;
- function NetLibSleep(libRefnum: UInt16): Err; syscall sysLibTrapSleep;
- function NetLibWake(libRefnum: UInt16): Err; syscall sysLibTrapWake;
- // This call forces the library to complete a close if it's
- // currently in the close-wait state. Returns 0 if library is closed,
- // Returns netErrFullyOpen if library is still open by some other task.
- function NetLibFinishCloseWait(libRefnum: UInt16): Err; syscall netLibTrapFinishCloseWait;
- // This call is for use by the Network preference panel only. It
- // causes the NetLib to fully open if it's currently in the close-wait
- // state. If it's not in the close wait state, it returns an error code
- function NetLibOpenIfCloseWait(libRefnum: UInt16): Err; syscall netLibTrapOpenIfCloseWait;
- // Get the open Count of the NetLib
- function NetLibOpenCount(refNum: UInt16; var countP: UInt16): Err; syscall netLibTrapOpenCount;
- // Give NetLib a chance to close the connection down in response
- // to a power off event. Returns non-zero if power should not be
- // turned off. EventP points to the event that initiated the power off
- // which is either a keyDownEvent of the hardPowerChr or the autoOffChr.
- // Don't include unless building for Viewer
- function NetLibHandlePowerOff(refNum: UInt16; var eventP: SysEventType): Err; syscall netLibTrapHandlePowerOff;
- // Check status or try and reconnect any interfaces which have come down.
- // This call can be made by applications when they suspect that an interface
- // has come down (like PPP or SLIP). NOTE: This call can display UI
- // (if 'refresh' is true) so it MUST be called from the UI task.
- function NetLibConnectionRefresh(refNum: UInt16; refresh: Boolean;
- var allInterfacesUpP: UInt8; var netIFErrP: UInt16): Err; syscall netLibTrapConnectionRefresh;
- //--------------------------------------------------
- // Net address translation and conversion routines.
- //--------------------------------------------------
- // (The NetHToNS, NetHToNL, NetNToHS, and NetNToHL macros which used to be
- // defined here are now defined in NetBitUtils.h. They can still be used
- // by #including <NetMgr.h> (this file), because <NetBitUtils.h> is
- // unconditionally included below.)
- // convert host Int16 to network Int16
- function NetHToNS(x: Int16): Int16;
- // convert host long to network long
- function NetHToNL(x: Int32): Int32;
- // convert network Int16 to host Int16
- function NetNToHS(x: Int16): Int16;
- // convert network long to host long
- function NetNToHL(x: Int32): Int32;
- // Convert 32-bit IP address to ascii dotted decimal form. The Sockets glue
- // macro inet_ntoa will pass the address of an application global string in
- // spaceP.
- function NetLibAddrINToA(libRefnum: UInt16; inet: NetIPAddr; spaceP: PChar): PChar; syscall netLibTrapAddrINToA;
- // Convert a dotted decimal ascii string format of an IP address into
- // a 32-bit value.
- function NetLibAddrAToIN(libRefnum: UInt16; const a: PChar): NetIPAddr; syscall netLibTrapAddrAToIN;
- //--------------------------------------------------
- // Socket creation and option setting
- //--------------------------------------------------
- // Create a socket and return a refnum to it. Protocol is normally 0.
- // Returns 0 on success, -1 on error. If error, *errP gets filled in with error code.
- function NetLibSocketOpen(libRefnum: UInt16; domain: NetSocketAddrEnum;
- type_: NetSocketTypeEnum; protocol: Int16; timeout: Int32;
- var errP: Err): NetSocketRef; syscall netLibTrapSocketOpen;
- // Close a socket.
- // Returns 0 on success, -1 on error. If error, *errP gets filled in with error code.
- function NetLibSocketClose(libRefnum: UInt16; socket: NetSocketRef; timeout: Int32;
- var errP: Err): Int16; syscall netLibTrapSocketClose;
- // Set a socket option. Level is usually netSocketOptLevelSocket. Option is one of
- // netSocketOptXXXXX. OptValueP is a pointer to the new value and optValueLen is
- // the length of the option value.
- // Returns 0 on success, -1 on error. If error, *errP gets filled in with error code.
- function NetLibSocketOptionSet(libRefnum: UInt16; socket: NetSocketRef;
- level: UInt16 {NetSocketOptLevelEnum}; option: UInt16 {NetSocketOptEnum};
- optValueP: Pointer; optValueLen: UInt16;
- timeout: Int32; var errP: Err): Int16; syscall netLibTrapSocketOptionSet;
- // Get a socket option.
- // Returns 0 on success, -1 on error. If error, *errP gets filled in with error code.
- function NetLibSocketOptionGet(libRefnum: UInt16; socket: NetSocketRef;
- level: UInt16 {NetSocketOptLevelEnum}; option: UInt16 {NetSocketOptEnum};
- optValueP: Pointer; var optValueLenP: UInt16;
- timeout: Int32; var errP: Err): Int16; syscall netLibTrapSocketOptionGet;
- //--------------------------------------------------
- // Socket Control
- //--------------------------------------------------
- // Bind a source address and port number to a socket. This makes the
- // socket accept incoming packets destined for the given socket address.
- // Returns 0 on success, -1 on error. If error, *errP gets filled in with error code.
- function NetLibSocketBind(libRefnum: UInt16; socket: NetSocketRef;
- sockAddrP: NetSocketAddrPtr; addrLen: Int16; timeout: Int32;
- var errP: Err): Int16; syscall netLibTrapSocketBind;
- // Connect to a remote socket. For a stream based socket (i.e. TCP), this initiates
- // a 3-way handshake with the remote machine to establish a connection. For
- // non-stream based socket, this merely specifies a destination address and port
- // number for future outgoing packets from this socket.
- // Returns 0 on success, -1 on error. If error, *errP gets filled in with error code.
- function NetLibSocketConnect(libRefnum: UInt16; socket: NetSocketRef;
- sockAddrP: NetSocketAddrPtr; addrLen: Int16; timeout: Int32;
- var errP: Err): Int16; syscall netLibTrapSocketConnect;
- // Makes a socket ready to accept incoming connection requests. The queueLen
- // specifies the max number of pending connection requests that will be enqueued
- // while the server is busy handling other requests.
- // Only applies to stream based (i.e. TCP) sockets.
- // Returns 0 on success, -1 on error. If error, *errP gets filled in with error code.
- function NetLibSocketListen(libRefnum: UInt16; socket: NetSocketRef;
- queueLen: UInt16; timeout: Int32; var errP: Err): Int16; syscall netLibTrapSocketListen;
- // Blocks the current process waiting for an incoming connection request. The socket
- // must have previously be put into listen mode through the NetLibSocketListen call.
- // On return, *sockAddrP will have the remote machines address and port number.
- // Only applies to stream based (i.e. TCP) sockets.
- // Returns 0 on success, -1 on error. If error, *errP gets filled in with error code.
- function NetLibSocketAccept(libRefnum: UInt16; socket: NetSocketRef;
- sockAddrP: NetSocketAddrPtr; var addrLenP: Int16; timeout: Int32;
- var errP: Err): Int16; syscall netLibTrapSocketAccept;
- // Shutdown a connection in one or both directions.
- // Only applies to stream based (i.e. TCP) sockets.
- // Returns 0 on success, -1 on error. If error, *errP gets filled in with error code.
- function NetLibSocketShutdown(libRefnum: UInt16; socket: NetSocketRef;
- direction: Int16 {NetSocketDirEnum}; timeout: Int32; var errP: Err): Int16; syscall netLibTrapSocketShutdown;
- // Gets the local and remote addresses of a socket. Useful for TCP sockets that
- // get dynamically bound at connect time.
- // Returns 0 on success, -1 on error. If error, *errP gets filled in with error code.
- function NetLibSocketAddr(libRefnum: UInt16; socketRef: NetSocketRef;
- locAddrP: NetSocketAddrPtr; var locAddrLenP: Int16;
- remAddrP: NetSocketAddrPtr; var remAddrLenP: Int16;
- timeout: Int32; var errP: Err): Int16; syscall netLibTrapSocketAddr;
- //--------------------------------------------------
- // Sending and Receiving
- //--------------------------------------------------
- // Send data through a socket. The data is specified through the NetIOParamType
- // structure.
- // Flags is one or more of netMsgFlagXXX.
- // Returns # of bytes sent on success, or -1 on error. If error, *errP gets filled
- // in with error code.
- function NetLibSendPB(libRefNum: UInt16; socket: NetSocketRef;
- pbP: NetIOParamPtr; flags: UInt16; timeout: Int32; var errP: Err): Int16; syscall netLibTrapSendPB;
- // Send data through a socket. The data to send is passed in a single buffer,
- // unlike NetLibSendPB. If toAddrP is not nil, the data will be sent to
- // address *toAddrP.
- // Flags is one or more of netMsgFlagXXX.
- // Returns # of bytes sent on success, or -1 on error. If error, *errP gets filled
- // in with error code.
- function NetLibSend(libRefNum: UInt16; socket: NetSocketRef;
- bufP: Pointer; bufLen, flags: UInt16;
- toAddrP: Pointer; toLen: UInt16; timeout: Int32; var errP: Err): Int16; syscall netLibTrapSend;
- // Receive data from a socket. The data is gatthered into buffers specified in the
- // NetIOParamType structure.
- // Flags is one or more of netMsgFlagXXX.
- // Timeout is max # of ticks to wait, or -1 for infinite, or 0 for none.
- // Returns # of bytes received, or -1 on error. If error, *errP gets filled in
- // with error code.
- function NetLibReceivePB(libRefNum: UInt16; socket: NetSocketRef;
- pbP: NetIOParamPtr; flags: UInt16; timeout: Int32; var errP: Err): Int16; syscall netLibTrapReceivePB;
- // Receive data from a socket. The data is read into a single buffer, unlike
- // NetLibReceivePB. If fromAddrP is not nil, *fromLenP must be initialized to
- // the size of the buffer that fromAddrP points to and on exit *fromAddrP will
- // have the address of the sender in it.
- // Flags is one or more of netMsgFlagXXX.
- // Timeout is max # of ticks to wait, or -1 for infinite, or 0 for none.
- // Returns # of bytes received, or -1 on error. If error, *errP gets filled in
- // with error code.
- function NetLibReceive(libRefNum: UInt16; socket: NetSocketRef;
- bufP: Pointer; bufLen, flags: UInt16;
- fromAddrP: Pointer; var fromLenP: UInt16; timeout: Int32; var errP: Err): Int16; syscall netLibTrapReceive;
- // Receive data from a socket directly into a (write-protected) Data Manager
- // record.
- // If fromAddrP is not nil, *fromLenP must be initialized to
- // the size of the buffer that fromAddrP points to and on exit *fromAddrP will
- // have the address of the sender in it.
- // Flags is one or more of netMsgFlagXXX.
- // Timeout is max # of ticks to wait, or -1 for infinite, or 0 for none.
- // Returns # of bytes received, or -1 on error. If error, *errP gets filled in
- // with error code.
- function NetLibDmReceive(libRefNum: UInt16; socket: NetSocketRef;
- recordP: Pointer; recordOffset: UInt32; rcvLen, flags: UInt16;
- fromAddrP: Pointer; var fromLenP: UInt16; timeout: Int32; var errP: Err): Int16; syscall netLibTrapDmReceive;
- //--------------------------------------------------
- // Name Lookups
- //--------------------------------------------------
- function NetLibGetHostByName(libRefNum: UInt16; const nameP: PChar; bufP: NetHostInfoBufPtr; timeout: Int32; var errP: Err): NetHostInfoPtr; syscall netLibTrapGetHostByName;
- function NetLibGetHostByAddr(libRefNum: UInt16; var addrP: UInt8; len, type_: UInt16;
- bufP: NetHostInfoBufPtr; timeout: Int32; var errP: Err): NetHostInfoPtr; syscall netLibTrapGetHostByAddr;
- function NetLibGetServByName(libRefNum: UInt16; const servNameP: PChar;
- const protoNameP: PChar; bufP: NetServInfoBufPtr;
- timeout: Int32; var errP: Err): NetServInfoPtr; syscall netLibTrapGetServByName;
- // Looks up a mail exchange name and returns a list of hostnames for it. Caller
- // must pass space for list of return names (hostNames), space for
- // list of priorities for those hosts (priorities) and max # of names to
- // return (maxEntries).
- // Returns # of entries found, or -1 on error. If error, *errP gets filled in
- // with error code.
- function NetLibGetMailExchangeByName(libRefNum: UInt16; mailNameP: PChar;
- maxEntries: UInt16; hostNames: Pointer{Char hostNames[][netDNSMaxDomainName+1]};
- priorities: Pointer{UInt16 priorities[]};
- timeout: Int32; var errP: Err): Int16; syscall netLibTrapGetMailExchangeByName;
- //--------------------------------------------------
- // Interface setup
- //--------------------------------------------------
- function NetLibIFGet(libRefNum: UInt16; index: UInt16; var ifCreatorP: UInt32; var ifInstanceP: UInt16): Err; syscall netLibTrapIFGet;
- function NetLibIFAttach(libRefNum: UInt16; ifCreator: UInt32; ifInstance: UInt16; timeout: Int32): Err; syscall netLibTrapIFAttach;
- function NetLibIFDetach(libRefNum: UInt16; ifCreator: UInt32; ifInstance: UInt16; timeout: Int32): Err; syscall netLibTrapIFDetach;
- function NetLibIFUp(libRefNum: UInt16; ifCreator: UInt32; ifInstance: UInt16): Err; syscall netLibTrapIFUp;
- function NetLibIFDown(libRefNum: UInt16; ifCreator: UInt32; ifInstance: UInt16; timeout: Int32): Err; syscall netLibTrapIFDown;
- //--------------------------------------------------
- // Settings
- //--------------------------------------------------
- // General settings
- function NetLibSettingGet(libRefNum: UInt16; setting: UInt16 {NetSettingEnum}; valueP: Pointer; var valueLenP: UInt16): Err; syscall netLibTrapSettingGet;
- function NetLibSettingSet(libRefNum: UInt16; setting: UInt16 {NetSettingEnum}; valueP: Pointer; valueLen: UInt16): Err; syscall netLibTrapSettingSet;
- // Network interface specific settings.
- function NetLibIFSettingGet(libRefNum: UInt16; ifCreator: UInt32; ifInstance: UInt16;
- setting: UInt16 {NetIFSettingEnum}; valueP: Pointer; var valueLenP: UInt16): Err; syscall netLibTrapIFSettingGet;
- function NetLibIFSettingSet(libRefNum: UInt16; ifCreator: UInt32; ifInstance: UInt16;
- setting: UInt16 {NetIFSettingEnum}; valueP: Pointer; valueLen: UInt16): Err; syscall netLibTrapIFSettingSet;
- //--------------------------------------------------
- // System level
- //--------------------------------------------------
- function NetLibSelect(libRefNum: UInt16; width: UInt16; readFDs, writeFDs, exceptFDs: NetFDSetPtr;
- timeout: Int32; var errP: Err): Int16; syscall netLibTrapSelect;
- //--------------------------------------------------
- // Debugging support
- //--------------------------------------------------
- function NetLibMaster(libRefNum: UInt16; cmd: UInt16; pbP: NetMasterPBPtr;
- timeout: Int32): Err; syscall netLibTrapMaster;
- {!!!
- function NetLibTracePrintF(libRefNum: UInt16; const formatStr: PChar; ...): Err; syscall netLibTrapTracePrintF;
- !!!}
- function NetLibTracePutS(libRefNum: UInt16; strP: PChar): Err; syscall netLibTrapTracePutS;
- //--------------------------------------------------
- // Configuration Calls
- //--------------------------------------------------
- function NetLibOpenConfig(refNum: UInt16; configIndex: UInt16; openFlags: UInt32;
- var netIFErrP: UInt16): Err; syscall netLibOpenConfig_;
- function NetLibConfigMakeActive(refNum: UInt16; configIndex: UInt16): Err; syscall netLibConfigMakeActive_;
- function NetLibConfigList(refNum: UInt16; nameArray: Pointer {NetConfigNameType nameArray[]};
- var arrayEntriesP: UInt16): Err; syscall netLibConfigList_;
- function NetLibConfigIndexFromName(refNum: UInt16; nameP: NetConfigNamePtr;
- var indexP: UInt16): Err; syscall netLibConfigIndexFromName_;
- function NetLibConfigDelete(refNum: UInt16; index: UInt16): Err; syscall netLibConfigDelete_;
- function NetLibConfigSaveAs(refNum: UInt16; nameP: NetConfigNamePtr): Err; syscall netLibConfigSaveAs_;
- function NetLibConfigRename(refNum: UInt16; index: UInt16; newNameP: NetConfigNamePtr): Err; syscall netLibConfigRename_;
- function NetLibConfigAliasSet(refNum: UInt16; configIndex, aliasToIndex: UInt16): Err; syscall netLibConfigAliasSet_;
- function NetLibConfigAliasGet(refNum: UInt16; aliasIndex: UInt16; var indexP: UInt16; var isAnotherAliasP: Boolean): Err; syscall netLibConfigAliasGet_;
- implementation
- uses SystemMgr, TimeMgr;
- function NetNow: UInt32;
- begin
- NetNow := TimGetTicks * 1000 div sysTicksPerSecond;
- end;
- procedure netFDSet(n: UInt8; var p: NetFDSetType);
- begin
- p := p or (1 shl n);
- end;
- procedure nnetFDClr(n: UInt8; var p: NetFDSetType);
- begin
- p := p and not (1 shl n);
- end;
- function nnetFDIsSet(n: UInt8; var p: NetFDSetType): Boolean;
- begin
- nnetFDIsSet := (p and (1 shl n)) <> 0;
- end;
- procedure nnetFDZero(var p: NetFDSetType);
- begin
- p := 0;
- end;
- // convert host Int16 to network Int16
- function NetHToNS(x: Int16): Int16;
- begin
- NetHToNS := x;
- end;
- // convert host long to network long
- function NetHToNL(x: Int32): Int32;
- begin
- NetHToNL := x;
- end;
- // convert network Int16 to host Int16
- function NetNToHS(x: Int16): Int16;
- begin
- NetNToHS := x;
- end;
- // convert network long to host long
- function NetNToHL(x: Int32): Int32;
- begin
- NetNToHL := x;
- end;
- end.
|