jwaws2atm.pas 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773
  1. {******************************************************************************}
  2. { }
  3. { Winsock2 ATM API interface Unit for Object Pascal }
  4. { }
  5. { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
  6. { Corporation. All Rights Reserved. }
  7. { }
  8. { The original file is: ws2atm.h, released June 2000. The original Pascal }
  9. { code is: WS2atm.pas, released December 2000. The initial developer of the }
  10. { Pascal code is Marcel van Brakel (brakelm att chello dott nl). }
  11. { }
  12. { Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
  13. { Marcel van Brakel. All Rights Reserved. }
  14. { }
  15. { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
  16. { }
  17. { You may retrieve the latest version of this file at the Project JEDI }
  18. { APILIB home page, located at http://jedi-apilib.sourceforge.net }
  19. { }
  20. { The contents of this file are used with permission, subject to the Mozilla }
  21. { Public License Version 1.1 (the "License"); you may not use this file except }
  22. { in compliance with the License. You may obtain a copy of the License at }
  23. { http://www.mozilla.org/MPL/MPL-1.1.html }
  24. { }
  25. { Software distributed under the License is distributed on an "AS IS" basis, }
  26. { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
  27. { the specific language governing rights and limitations under the License. }
  28. { }
  29. { Alternatively, the contents of this file may be used under the terms of the }
  30. { GNU Lesser General Public License (the "LGPL License"), in which case the }
  31. { provisions of the LGPL License are applicable instead of those above. }
  32. { If you wish to allow use of your version of this file only under the terms }
  33. { of the LGPL License and not to allow others to use your version of this file }
  34. { under the MPL, indicate your decision by deleting the provisions above and }
  35. { replace them with the notice and other provisions required by the LGPL }
  36. { License. If you do not delete the provisions above, a recipient may use }
  37. { your version of this file under either the MPL or the LGPL License. }
  38. { }
  39. { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
  40. { }
  41. {******************************************************************************}
  42. unit JwaWS2atm;
  43. {$WEAKPACKAGEUNIT}
  44. {$HPPEMIT ''}
  45. {$HPPEMIT '#include "ws2atm.h"'}
  46. {$HPPEMIT ''}
  47. {$I jediapilib.inc}
  48. interface
  49. uses
  50. JwaWinType, JwaWinSock2;
  51. //#include <pshpack4.h>
  52. {$ALIGN ON}
  53. const
  54. ATMPROTO_AALUSER = $00; (* User-defined AAL *)
  55. {$EXTERNALSYM ATMPROTO_AALUSER}
  56. ATMPROTO_AAL1 = $01; (* AAL 1 *)
  57. {$EXTERNALSYM ATMPROTO_AAL1}
  58. ATMPROTO_AAL2 = $02; (* AAL 2 *)
  59. {$EXTERNALSYM ATMPROTO_AAL2}
  60. ATMPROTO_AAL34 = $03; (* AAL 3/4 *)
  61. {$EXTERNALSYM ATMPROTO_AAL34}
  62. ATMPROTO_AAL5 = $05; (* AAL 5 *)
  63. {$EXTERNALSYM ATMPROTO_AAL5}
  64. SAP_FIELD_ABSENT = DWORD($FFFFFFFE);
  65. {$EXTERNALSYM SAP_FIELD_ABSENT}
  66. SAP_FIELD_ANY = DWORD($FFFFFFFF);
  67. {$EXTERNALSYM SAP_FIELD_ANY}
  68. SAP_FIELD_ANY_AESA_SEL = DWORD($FFFFFFFA);
  69. {$EXTERNALSYM SAP_FIELD_ANY_AESA_SEL}
  70. SAP_FIELD_ANY_AESA_REST = DWORD($FFFFFFFB);
  71. {$EXTERNALSYM SAP_FIELD_ANY_AESA_REST}
  72. (*
  73. * values used for AddressType in struct ATM_ADDRESS
  74. *)
  75. ATM_E164 = $01 (* E.164 addressing scheme *);
  76. {$EXTERNALSYM ATM_E164}
  77. ATM_NSAP = $02 (* NSAP-style ATM Endsystem Address scheme *);
  78. {$EXTERNALSYM ATM_NSAP}
  79. ATM_AESA = $02 (* NSAP-style ATM Endsystem Address scheme *);
  80. {$EXTERNALSYM ATM_AESA}
  81. ATM_ADDR_SIZE = 20;
  82. {$EXTERNALSYM ATM_ADDR_SIZE}
  83. type
  84. ATM_ADDRESS = record
  85. AddressType: DWORD; (* E.164 or NSAP-style ATM Endsystem Address *)
  86. NumofDigits: DWORD; (* number of digits; *)
  87. Addr: array [0..ATM_ADDR_SIZE - 1] of UCHAR; (* IA5 digits for E164, BCD encoding for NSAP *)
  88. (* format as defined in the ATM Forum UNI 3.1 *)
  89. end;
  90. {$EXTERNALSYM ATM_ADDRESS}
  91. TAtmAddress = ATM_ADDRESS;
  92. PAtmAddress = ^ATM_ADDRESS;
  93. (*
  94. * values used for Layer2Protocol in B-LLI
  95. *)
  96. const
  97. BLLI_L2_ISO_1745 = $01; (* Basic mode ISO 1745 *)
  98. {$EXTERNALSYM BLLI_L2_ISO_1745}
  99. BLLI_L2_Q921 = $02; (* CCITT Rec. Q.921 *)
  100. {$EXTERNALSYM BLLI_L2_Q921}
  101. BLLI_L2_X25L = $06; (* CCITT Rec. X.25, link layer *)
  102. {$EXTERNALSYM BLLI_L2_X25L}
  103. BLLI_L2_X25M = $07; (* CCITT Rec. X.25, multilink *)
  104. {$EXTERNALSYM BLLI_L2_X25M}
  105. BLLI_L2_ELAPB = $08; (* Extended LAPB; for half duplex operation *)
  106. {$EXTERNALSYM BLLI_L2_ELAPB}
  107. BLLI_L2_HDLC_ARM = $09; (* HDLC ARM (ISO 4335) *)
  108. {$EXTERNALSYM BLLI_L2_HDLC_ARM}
  109. BLLI_L2_HDLC_NRM = $0A; (* HDLC NRM (ISO 4335) *)
  110. {$EXTERNALSYM BLLI_L2_HDLC_NRM}
  111. BLLI_L2_HDLC_ABM = $0B; (* HDLC ABM (ISO 4335) *)
  112. {$EXTERNALSYM BLLI_L2_HDLC_ABM}
  113. BLLI_L2_LLC = $0C; (* LAN logical link control (ISO 8802/2) *)
  114. {$EXTERNALSYM BLLI_L2_LLC}
  115. BLLI_L2_X75 = $0D; (* CCITT Rec. X.75, single link procedure *)
  116. {$EXTERNALSYM BLLI_L2_X75}
  117. BLLI_L2_Q922 = $0E; (* CCITT Rec. Q.922 *)
  118. {$EXTERNALSYM BLLI_L2_Q922}
  119. BLLI_L2_USER_SPECIFIED = $10; (* User Specified *)
  120. {$EXTERNALSYM BLLI_L2_USER_SPECIFIED}
  121. BLLI_L2_ISO_7776 = $11; (* ISO 7776 DTE-DTE operation *)
  122. {$EXTERNALSYM BLLI_L2_ISO_7776}
  123. (*
  124. * values used for Layer3Protocol in B-LLI
  125. *)
  126. BLLI_L3_X25 = $06; (* CCITT Rec. X.25, packet layer *)
  127. {$EXTERNALSYM BLLI_L3_X25}
  128. BLLI_L3_ISO_8208 = $07; (* ISO/IEC 8208 (X.25 packet layer for DTE *)
  129. {$EXTERNALSYM BLLI_L3_ISO_8208}
  130. BLLI_L3_X223 = $08; (* X.223/ISO 8878 *)
  131. {$EXTERNALSYM BLLI_L3_X223}
  132. BLLI_L3_SIO_8473 = $09; (* ISO/IEC 8473 (OSI connectionless) *)
  133. {$EXTERNALSYM BLLI_L3_SIO_8473}
  134. BLLI_L3_T70 = $0A; (* CCITT Rec. T.70 min. network layer *)
  135. {$EXTERNALSYM BLLI_L3_T70}
  136. BLLI_L3_ISO_TR9577 = $0B; (* ISO/IEC TR 9577 Network Layer Protocol ID*)
  137. {$EXTERNALSYM BLLI_L3_ISO_TR9577}
  138. BLLI_L3_USER_SPECIFIED = $10; (* User Specified *)
  139. {$EXTERNALSYM BLLI_L3_USER_SPECIFIED}
  140. (*
  141. * values used for Layer3IPI in B-LLI
  142. *)
  143. BLLI_L3_IPI_SNAP = $80; (* IEEE 802.1 SNAP identifier *)
  144. {$EXTERNALSYM BLLI_L3_IPI_SNAP}
  145. BLLI_L3_IPI_IP = $CC; (* Internet Protocol (IP) identifier *)
  146. {$EXTERNALSYM BLLI_L3_IPI_IP}
  147. type
  148. ATM_BLLI = record
  149. Layer2Protocol: DWORD; (* User information layer 2 protocol *)
  150. Layer2UserSpecifiedProtocol: DWORD; (* User specified layer 2 protocol information *)
  151. Layer3Protocol: DWORD; (* User information layer 3 protocol *)
  152. Layer3UserSpecifiedProtocol: DWORD; (* User specified layer 3 protocol information *)
  153. Layer3IPI: DWORD; (* ISO/IEC TR 9577 Initial Protocol Identifier *)
  154. SnapID: array [0..4] of UCHAR; (* SNAP ID consisting of OUI and PID *)
  155. end;
  156. {$EXTERNALSYM ATM_BLLI}
  157. TAtmBLLI = ATM_BLLI;
  158. PAtmBLLI = ^ATM_BLLI;
  159. (*
  160. * values used for the HighLayerInfoType field in ATM_BHLI
  161. *)
  162. const
  163. BHLI_ISO = $00; (* ISO *)
  164. {$EXTERNALSYM BHLI_ISO}
  165. BHLI_UserSpecific = $01; (* User Specific *)
  166. {$EXTERNALSYM BHLI_UserSpecific}
  167. BHLI_HighLayerProfile = $02; (* High layer profile (only in UNI3.0) *)
  168. {$EXTERNALSYM BHLI_HighLayerProfile}
  169. BHLI_VendorSpecificAppId = $03; (* Vendor-Specific Application ID *)
  170. {$EXTERNALSYM BHLI_VendorSpecificAppId}
  171. type
  172. ATM_BHLI = record
  173. HighLayerInfoType: DWORD; (* High Layer Information Type *)
  174. HighLayerInfoLength: DWORD; (* number of bytes in HighLayerInfo *)
  175. HighLayerInfo: array [0..7] of UCHAR; (* the value dependent on the *)
  176. (* HighLayerInfoType field *)
  177. end;
  178. {$EXTERNALSYM ATM_BHLI}
  179. TAtmBHLI = ATM_BHLI;
  180. PAtmBHLI = ^ATM_BHLI;
  181. SOCKADDR_ATM = record
  182. satm_family: u_short; (* address family should be AF_ATM *)
  183. satm_number: ATM_ADDRESS; (* ATM address *)
  184. satm_blli: ATM_BLLI; (* B-LLI *)
  185. satm_bhli: ATM_BHLI; (* B-HLI *)
  186. end;
  187. {$EXTERNALSYM SOCKADDR_ATM}
  188. PSOCKADDR_ATM = ^SOCKADDR_ATM;
  189. LPSOCKADDR_ATM = ^SOCKADDR_ATM;
  190. TSockAddrAtm = SOCKADDR_ATM;
  191. PSockAddrAtm = LPSOCKADDR_ATM;
  192. Q2931_IE_TYPE = (
  193. IE_AALParameters,
  194. IE_TrafficDescriptor,
  195. IE_BroadbandBearerCapability,
  196. IE_BHLI,
  197. IE_BLLI,
  198. IE_CalledPartyNumber,
  199. IE_CalledPartySubaddress,
  200. IE_CallingPartyNumber,
  201. IE_CallingPartySubaddress,
  202. IE_Cause,
  203. IE_QOSClass,
  204. IE_TransitNetworkSelection);
  205. {$EXTERNALSYM Q2931_IE_TYPE}
  206. TQ2931IEType = Q2931_IE_TYPE;
  207. PQ2931IEType = ^Q2931_IE_TYPE;
  208. Q2931_IE = record
  209. IEType: Q2931_IE_TYPE;
  210. IELength: ULONG;
  211. IE: array [0..0] of UCHAR;
  212. end;
  213. {$EXTERNALSYM Q2931_IE}
  214. TQ2931IE = Q2931_IE;
  215. PQ2931IE = ^Q2931_IE;
  216. (*
  217. * manifest constants for the AALType field in struct AAL_PARAMETERS_IE
  218. *)
  219. const
  220. AALTYPE_5 = 5; (* AAL 5 *)
  221. {$EXTERNALSYM AALTYPE_5}
  222. AALTYPE_USER = 16; (* user-defined AAL *)
  223. {$EXTERNALSYM AALTYPE_USER}
  224. type
  225. AAL_TYPE = DWORD;
  226. {$EXTERNALSYM AAL_TYPE}
  227. TAALType = AAL_TYPE;
  228. PAALType = ^AAL_TYPE;
  229. (*
  230. * values used for the Mode field in struct AAL5_PARAMETERS
  231. *)
  232. const
  233. AAL5_MODE_MESSAGE = $01;
  234. {$EXTERNALSYM AAL5_MODE_MESSAGE}
  235. AAL5_MODE_STREAMING = $02;
  236. {$EXTERNALSYM AAL5_MODE_STREAMING}
  237. (*
  238. * values used for the SSCSType field in struct AAL5_PARAMETERS
  239. *)
  240. AAL5_SSCS_NULL = $00;
  241. {$EXTERNALSYM AAL5_SSCS_NULL}
  242. AAL5_SSCS_SSCOP_ASSURED = $01;
  243. {$EXTERNALSYM AAL5_SSCS_SSCOP_ASSURED}
  244. AAL5_SSCS_SSCOP_NON_ASSURED = $02;
  245. {$EXTERNALSYM AAL5_SSCS_SSCOP_NON_ASSURED}
  246. AAL5_SSCS_FRAME_RELAY = $04;
  247. {$EXTERNALSYM AAL5_SSCS_FRAME_RELAY}
  248. type
  249. AAL5_PARAMETERS = record
  250. ForwardMaxCPCSSDUSize: ULONG;
  251. BackwardMaxCPCSSDUSize: ULONG;
  252. Mode: UCHAR; (* only available in UNI 3.0 *)
  253. SSCSType: UCHAR;
  254. end;
  255. {$EXTERNALSYM AAL5_PARAMETERS}
  256. TAAL5Parameters = AAL5_PARAMETERS;
  257. PAAL5Parameters = ^AAL5_PARAMETERS;
  258. AALUSER_PARAMETERS = record
  259. UserDefined: ULONG;
  260. end;
  261. {$EXTERNALSYM AALUSER_PARAMETERS}
  262. TAALUserParameters = AALUSER_PARAMETERS;
  263. PAALUserParameters = ^AALUSER_PARAMETERS;
  264. AAL_PARAMETERS_IE = record
  265. AALType: AAL_TYPE;
  266. case Integer of
  267. 0: (AAL5Parameters: AAL5_PARAMETERS);
  268. 1: (AALUserParameters: AALUSER_PARAMETERS);
  269. end;
  270. {$EXTERNALSYM AAL_PARAMETERS_IE}
  271. TAALParametersIE = AAL_PARAMETERS_IE;
  272. PAALParametersIE = ^AAL_PARAMETERS_IE;
  273. ATM_TD = record
  274. PeakCellRate_CLP0: ULONG;
  275. PeakCellRate_CLP01: ULONG;
  276. SustainableCellRate_CLP0: ULONG;
  277. SustainableCellRate_CLP01: ULONG;
  278. MaxBurstSize_CLP0: ULONG;
  279. MaxBurstSize_CLP01: ULONG;
  280. Tagging: BOOL;
  281. end;
  282. {$EXTERNALSYM ATM_TD}
  283. TAtmTD = ATM_TD;
  284. PAtmTD = ^ATM_TD;
  285. ATM_TRAFFIC_DESCRIPTOR_IE = record
  286. Forward_: ATM_TD;
  287. Backward: ATM_TD;
  288. BestEffort: BOOL;
  289. end;
  290. {$EXTERNALSYM ATM_TRAFFIC_DESCRIPTOR_IE}
  291. TAtmTrafficDescriptorIE = ATM_TD;
  292. PAtmTrafficDescriptorIE = ^ATM_TD;
  293. (*
  294. * values used for the BearerClass field in struct ATM_BROADBAND_BEARER_CAPABILITY_IE
  295. *)
  296. const
  297. BCOB_A = $01; (* Bearer class A *)
  298. {$EXTERNALSYM BCOB_A}
  299. BCOB_C = $03; (* Bearer class C *)
  300. {$EXTERNALSYM BCOB_C}
  301. BCOB_X = $10; (* Bearer class X *)
  302. {$EXTERNALSYM BCOB_X}
  303. (*
  304. * values used for the TrafficType field in struct ATM_BROADBAND_BEARER_CAPABILITY_IE
  305. *)
  306. TT_NOIND = $00; (* No indication of traffic type *)
  307. {$EXTERNALSYM TT_NOIND}
  308. TT_CBR = $04; (* Constant bit rate *)
  309. {$EXTERNALSYM TT_CBR}
  310. TT_VBR = $08; (* Variable bit rate *)
  311. {$EXTERNALSYM TT_VBR}
  312. (*
  313. * values used for the TimingRequirements field in struct ATM_BROADBAND_BEARER_CAPABILITY_IE
  314. *)
  315. TR_NOIND = $00; (* No timing requirement indication *)
  316. {$EXTERNALSYM TR_NOIND}
  317. TR_END_TO_END = $01; (* End-to-end timing required *)
  318. {$EXTERNALSYM TR_END_TO_END}
  319. TR_NO_END_TO_END = $02; (* End-to-end timing not required *)
  320. {$EXTERNALSYM TR_NO_END_TO_END}
  321. (*
  322. * values used for the ClippingSusceptability field in struct ATM_BROADBAND_BEARER_CAPABILITY_IE
  323. *)
  324. CLIP_NOT = $00; (* Not susceptible to clipping *)
  325. {$EXTERNALSYM CLIP_NOT}
  326. CLIP_SUS = $20; (* Susceptible to clipping *)
  327. {$EXTERNALSYM CLIP_SUS}
  328. (*
  329. * values used for the UserPlaneConnectionConfig field in
  330. * struct ATM_BROADBAND_BEARER_CAPABILITY_IE
  331. *)
  332. UP_P2P = $00; (* Point-to-point connection *)
  333. {$EXTERNALSYM UP_P2P}
  334. UP_P2MP = $01; (* Point-to-multipoint connection *)
  335. {$EXTERNALSYM UP_P2MP}
  336. type
  337. ATM_BROADBAND_BEARER_CAPABILITY_IE = record
  338. BearerClass: UCHAR;
  339. TrafficType: UCHAR;
  340. TimingRequirements: UCHAR;
  341. ClippingSusceptability: UCHAR;
  342. UserPlaneConnectionConfig: UCHAR;
  343. end;
  344. {$EXTERNALSYM ATM_BROADBAND_BEARER_CAPABILITY_IE}
  345. TAtmBroadbandBearerCapabilityIE = ATM_BROADBAND_BEARER_CAPABILITY_IE;
  346. PAtmBroadbandBearerCapabilityIE = ^ATM_BROADBAND_BEARER_CAPABILITY_IE;
  347. ATM_BHLI_IE = ATM_BHLI;
  348. {$EXTERNALSYM ATM_BHLI_IE}
  349. TAtmBHLIIE = ATM_BHLI_IE;
  350. PAtmBHLIIE = ^ATM_BHLI_IE;
  351. (*
  352. * values used for the Layer2Mode field in struct ATM_BLLI_IE
  353. *)
  354. const
  355. BLLI_L2_MODE_NORMAL = $40;
  356. {$EXTERNALSYM BLLI_L2_MODE_NORMAL}
  357. BLLI_L2_MODE_EXT = $80;
  358. {$EXTERNALSYM BLLI_L2_MODE_EXT}
  359. (*
  360. * values used for the Layer3Mode field in struct ATM_BLLI_IE
  361. *)
  362. BLLI_L3_MODE_NORMAL = $40;
  363. {$EXTERNALSYM BLLI_L3_MODE_NORMAL}
  364. BLLI_L3_MODE_EXT = $80;
  365. {$EXTERNALSYM BLLI_L3_MODE_EXT}
  366. (*
  367. * values used for the Layer3DefaultPacketSize field in struct ATM_BLLI_IE
  368. *)
  369. BLLI_L3_PACKET_16 = $04;
  370. {$EXTERNALSYM BLLI_L3_PACKET_16}
  371. BLLI_L3_PACKET_32 = $05;
  372. {$EXTERNALSYM BLLI_L3_PACKET_32}
  373. BLLI_L3_PACKET_64 = $06;
  374. {$EXTERNALSYM BLLI_L3_PACKET_64}
  375. BLLI_L3_PACKET_128 = $07;
  376. {$EXTERNALSYM BLLI_L3_PACKET_128}
  377. BLLI_L3_PACKET_256 = $08;
  378. {$EXTERNALSYM BLLI_L3_PACKET_256}
  379. BLLI_L3_PACKET_512 = $09;
  380. {$EXTERNALSYM BLLI_L3_PACKET_512}
  381. BLLI_L3_PACKET_1024 = $0A;
  382. {$EXTERNALSYM BLLI_L3_PACKET_1024}
  383. BLLI_L3_PACKET_2048 = $0B;
  384. {$EXTERNALSYM BLLI_L3_PACKET_2048}
  385. BLLI_L3_PACKET_4096 = $0C;
  386. {$EXTERNALSYM BLLI_L3_PACKET_4096}
  387. type
  388. ATM_BLLI_IE = record
  389. Layer2Protocol: DWORD; (* User information layer 2 protocol *)
  390. Layer2Mode: UCHAR;
  391. Layer2WindowSize: UCHAR;
  392. Layer2UserSpecifiedProtocol: DWORD; (* User specified layer 2 protocol information *)
  393. Layer3Protocol: DWORD; (* User information layer 3 protocol *)
  394. Layer3Mode: UCHAR;
  395. Layer3DefaultPacketSize: UCHAR;
  396. Layer3PacketWindowSize: UCHAR;
  397. Layer3UserSpecifiedProtocol: DWORD; (* User specified layer 3 protocol information *)
  398. Layer3IPI: DWORD; (* ISO/IEC TR 9577 Initial Protocol Identifier *)
  399. SnapID: array [0..4] of UCHAR; (* SNAP ID consisting of OUI and PID *)
  400. end;
  401. {$EXTERNALSYM ATM_BLLI_IE}
  402. TAtmBLLIIE = ATM_BLLI_IE;
  403. PAtmBLLIIE = ^ATM_BLLI_IE;
  404. ATM_CALLED_PARTY_NUMBER_IE = ATM_ADDRESS;
  405. {$EXTERNALSYM ATM_CALLED_PARTY_NUMBER_IE}
  406. TAtmCalledPartyNumberIE = ATM_CALLED_PARTY_NUMBER_IE;
  407. PAtmCalledPartyNumberIE = ^ATM_CALLED_PARTY_NUMBER_IE;
  408. ATM_CALLED_PARTY_SUBADDRESS_IE = ATM_ADDRESS;
  409. {$EXTERNALSYM ATM_CALLED_PARTY_SUBADDRESS_IE}
  410. TAtmCalledPartySubAddressIE = ATM_CALLED_PARTY_SUBADDRESS_IE;
  411. PAtmCalledPartySubAddressIE = ^ATM_CALLED_PARTY_SUBADDRESS_IE;
  412. (*
  413. * values used for the Presentation_Indication field in
  414. * struct ATM_CALLING_PARTY_NUMBER_IE
  415. *)
  416. const
  417. PI_ALLOWED = $00;
  418. {$EXTERNALSYM PI_ALLOWED}
  419. PI_RESTRICTED = $40;
  420. {$EXTERNALSYM PI_RESTRICTED}
  421. PI_NUMBER_NOT_AVAILABLE = $80;
  422. {$EXTERNALSYM PI_NUMBER_NOT_AVAILABLE}
  423. (*
  424. * values used for the Screening_Indicator field in
  425. * struct ATM_CALLING_PARTY_NUMBER_IE
  426. *)
  427. SI_USER_NOT_SCREENED = $00;
  428. {$EXTERNALSYM SI_USER_NOT_SCREENED}
  429. SI_USER_PASSED = $01;
  430. {$EXTERNALSYM SI_USER_PASSED}
  431. SI_USER_FAILED = $02;
  432. {$EXTERNALSYM SI_USER_FAILED}
  433. SI_NETWORK = $03;
  434. {$EXTERNALSYM SI_NETWORK}
  435. type
  436. ATM_CALLING_PARTY_NUMBER_IE = record
  437. ATM_Number: ATM_ADDRESS;
  438. Presentation_Indication: UCHAR;
  439. Screening_Indicator: UCHAR;
  440. end;
  441. {$EXTERNALSYM ATM_CALLING_PARTY_NUMBER_IE}
  442. TAtmCallingPartyNumberIE = ATM_CALLING_PARTY_NUMBER_IE;
  443. PAtmCallingPartyNumberIE = ^ATM_CALLING_PARTY_NUMBER_IE;
  444. ATM_CALLING_PARTY_SUBADDRESS_IE = ATM_ADDRESS;
  445. {$EXTERNALSYM ATM_CALLING_PARTY_SUBADDRESS_IE}
  446. TAtmCallingPartySubAddressIE = ATM_CALLING_PARTY_SUBADDRESS_IE;
  447. PAtmCallingPartySubAddressIE = ^ATM_CALLING_PARTY_SUBADDRESS_IE;
  448. (*
  449. * values used for the Location field in struct ATM_CAUSE_IE
  450. *)
  451. const
  452. CAUSE_LOC_USER = $00;
  453. {$EXTERNALSYM CAUSE_LOC_USER}
  454. CAUSE_LOC_PRIVATE_LOCAL = $01;
  455. {$EXTERNALSYM CAUSE_LOC_PRIVATE_LOCAL}
  456. CAUSE_LOC_PUBLIC_LOCAL = $02;
  457. {$EXTERNALSYM CAUSE_LOC_PUBLIC_LOCAL}
  458. CAUSE_LOC_TRANSIT_NETWORK = $03;
  459. {$EXTERNALSYM CAUSE_LOC_TRANSIT_NETWORK}
  460. CAUSE_LOC_PUBLIC_REMOTE = $04;
  461. {$EXTERNALSYM CAUSE_LOC_PUBLIC_REMOTE}
  462. CAUSE_LOC_PRIVATE_REMOTE = $05;
  463. {$EXTERNALSYM CAUSE_LOC_PRIVATE_REMOTE}
  464. CAUSE_LOC_INTERNATIONAL_NETWORK = $07;
  465. {$EXTERNALSYM CAUSE_LOC_INTERNATIONAL_NETWORK}
  466. CAUSE_LOC_BEYOND_INTERWORKING = $0A;
  467. {$EXTERNALSYM CAUSE_LOC_BEYOND_INTERWORKING}
  468. (*
  469. * values used for the Cause field in struct ATM_CAUSE_IE
  470. *)
  471. CAUSE_UNALLOCATED_NUMBER = $01;
  472. {$EXTERNALSYM CAUSE_UNALLOCATED_NUMBER}
  473. CAUSE_NO_ROUTE_TO_TRANSIT_NETWORK = $02;
  474. {$EXTERNALSYM CAUSE_NO_ROUTE_TO_TRANSIT_NETWORK}
  475. CAUSE_NO_ROUTE_TO_DESTINATION = $03;
  476. {$EXTERNALSYM CAUSE_NO_ROUTE_TO_DESTINATION}
  477. CAUSE_VPI_VCI_UNACCEPTABLE = $0A;
  478. {$EXTERNALSYM CAUSE_VPI_VCI_UNACCEPTABLE}
  479. CAUSE_NORMAL_CALL_CLEARING = $10;
  480. {$EXTERNALSYM CAUSE_NORMAL_CALL_CLEARING}
  481. CAUSE_USER_BUSY = $11;
  482. {$EXTERNALSYM CAUSE_USER_BUSY}
  483. CAUSE_NO_USER_RESPONDING = $12;
  484. {$EXTERNALSYM CAUSE_NO_USER_RESPONDING}
  485. CAUSE_CALL_REJECTED = $15;
  486. {$EXTERNALSYM CAUSE_CALL_REJECTED}
  487. CAUSE_NUMBER_CHANGED = $16;
  488. {$EXTERNALSYM CAUSE_NUMBER_CHANGED}
  489. CAUSE_USER_REJECTS_CLIR = $17;
  490. {$EXTERNALSYM CAUSE_USER_REJECTS_CLIR}
  491. CAUSE_DESTINATION_OUT_OF_ORDER = $1B;
  492. {$EXTERNALSYM CAUSE_DESTINATION_OUT_OF_ORDER}
  493. CAUSE_INVALID_NUMBER_FORMAT = $1C;
  494. {$EXTERNALSYM CAUSE_INVALID_NUMBER_FORMAT}
  495. CAUSE_STATUS_ENQUIRY_RESPONSE = $1E;
  496. {$EXTERNALSYM CAUSE_STATUS_ENQUIRY_RESPONSE}
  497. CAUSE_NORMAL_UNSPECIFIED = $1F;
  498. {$EXTERNALSYM CAUSE_NORMAL_UNSPECIFIED}
  499. CAUSE_VPI_VCI_UNAVAILABLE = $23;
  500. {$EXTERNALSYM CAUSE_VPI_VCI_UNAVAILABLE}
  501. CAUSE_NETWORK_OUT_OF_ORDER = $26;
  502. {$EXTERNALSYM CAUSE_NETWORK_OUT_OF_ORDER}
  503. CAUSE_TEMPORARY_FAILURE = $29;
  504. {$EXTERNALSYM CAUSE_TEMPORARY_FAILURE}
  505. CAUSE_ACCESS_INFORMAION_DISCARDED = $2B;
  506. {$EXTERNALSYM CAUSE_ACCESS_INFORMAION_DISCARDED}
  507. CAUSE_NO_VPI_VCI_AVAILABLE = $2D;
  508. {$EXTERNALSYM CAUSE_NO_VPI_VCI_AVAILABLE}
  509. CAUSE_RESOURCE_UNAVAILABLE = $2F;
  510. {$EXTERNALSYM CAUSE_RESOURCE_UNAVAILABLE}
  511. CAUSE_QOS_UNAVAILABLE = $31;
  512. {$EXTERNALSYM CAUSE_QOS_UNAVAILABLE}
  513. CAUSE_USER_CELL_RATE_UNAVAILABLE = $33;
  514. {$EXTERNALSYM CAUSE_USER_CELL_RATE_UNAVAILABLE}
  515. CAUSE_BEARER_CAPABILITY_UNAUTHORIZED = $39;
  516. {$EXTERNALSYM CAUSE_BEARER_CAPABILITY_UNAUTHORIZED}
  517. CAUSE_BEARER_CAPABILITY_UNAVAILABLE = $3A;
  518. {$EXTERNALSYM CAUSE_BEARER_CAPABILITY_UNAVAILABLE}
  519. CAUSE_OPTION_UNAVAILABLE = $3F;
  520. {$EXTERNALSYM CAUSE_OPTION_UNAVAILABLE}
  521. CAUSE_BEARER_CAPABILITY_UNIMPLEMENTED = $41;
  522. {$EXTERNALSYM CAUSE_BEARER_CAPABILITY_UNIMPLEMENTED}
  523. CAUSE_UNSUPPORTED_TRAFFIC_PARAMETERS = $49;
  524. {$EXTERNALSYM CAUSE_UNSUPPORTED_TRAFFIC_PARAMETERS}
  525. CAUSE_INVALID_CALL_REFERENCE = $51;
  526. {$EXTERNALSYM CAUSE_INVALID_CALL_REFERENCE}
  527. CAUSE_CHANNEL_NONEXISTENT = $52;
  528. {$EXTERNALSYM CAUSE_CHANNEL_NONEXISTENT}
  529. CAUSE_INCOMPATIBLE_DESTINATION = $58;
  530. {$EXTERNALSYM CAUSE_INCOMPATIBLE_DESTINATION}
  531. CAUSE_INVALID_ENDPOINT_REFERENCE = $59;
  532. {$EXTERNALSYM CAUSE_INVALID_ENDPOINT_REFERENCE}
  533. CAUSE_INVALID_TRANSIT_NETWORK_SELECTION = $5B;
  534. {$EXTERNALSYM CAUSE_INVALID_TRANSIT_NETWORK_SELECTION}
  535. CAUSE_TOO_MANY_PENDING_ADD_PARTY = $5C;
  536. {$EXTERNALSYM CAUSE_TOO_MANY_PENDING_ADD_PARTY}
  537. CAUSE_AAL_PARAMETERS_UNSUPPORTED = $5D;
  538. {$EXTERNALSYM CAUSE_AAL_PARAMETERS_UNSUPPORTED}
  539. CAUSE_MANDATORY_IE_MISSING = $60;
  540. {$EXTERNALSYM CAUSE_MANDATORY_IE_MISSING}
  541. CAUSE_UNIMPLEMENTED_MESSAGE_TYPE = $61;
  542. {$EXTERNALSYM CAUSE_UNIMPLEMENTED_MESSAGE_TYPE}
  543. CAUSE_UNIMPLEMENTED_IE = $63;
  544. {$EXTERNALSYM CAUSE_UNIMPLEMENTED_IE}
  545. CAUSE_INVALID_IE_CONTENTS = $64;
  546. {$EXTERNALSYM CAUSE_INVALID_IE_CONTENTS}
  547. CAUSE_INVALID_STATE_FOR_MESSAGE = $65;
  548. {$EXTERNALSYM CAUSE_INVALID_STATE_FOR_MESSAGE}
  549. CAUSE_RECOVERY_ON_TIMEOUT = $66;
  550. {$EXTERNALSYM CAUSE_RECOVERY_ON_TIMEOUT}
  551. CAUSE_INCORRECT_MESSAGE_LENGTH = $68;
  552. {$EXTERNALSYM CAUSE_INCORRECT_MESSAGE_LENGTH}
  553. CAUSE_PROTOCOL_ERROR = $6F;
  554. {$EXTERNALSYM CAUSE_PROTOCOL_ERROR}
  555. (*
  556. * values used for the Condition portion of the Diagnostics field
  557. * in struct ATM_CAUSE_IE, for certain Cause values
  558. *)
  559. CAUSE_COND_UNKNOWN = $00;
  560. {$EXTERNALSYM CAUSE_COND_UNKNOWN}
  561. CAUSE_COND_PERMANENT = $01;
  562. {$EXTERNALSYM CAUSE_COND_PERMANENT}
  563. CAUSE_COND_TRANSIENT = $02;
  564. {$EXTERNALSYM CAUSE_COND_TRANSIENT}
  565. (*
  566. * values used for the Rejection Reason portion of the Diagnostics field
  567. * in struct ATM_CAUSE_IE, for certain Cause values
  568. *)
  569. CAUSE_REASON_USER = $00;
  570. {$EXTERNALSYM CAUSE_REASON_USER}
  571. CAUSE_REASON_IE_MISSING = $04;
  572. {$EXTERNALSYM CAUSE_REASON_IE_MISSING}
  573. CAUSE_REASON_IE_INSUFFICIENT = $08;
  574. {$EXTERNALSYM CAUSE_REASON_IE_INSUFFICIENT}
  575. (*
  576. * values used for the P-U flag of the Diagnostics field
  577. * in struct ATM_CAUSE_IE, for certain Cause values
  578. *)
  579. CAUSE_PU_PROVIDER = $00;
  580. {$EXTERNALSYM CAUSE_PU_PROVIDER}
  581. CAUSE_PU_USER = $08;
  582. {$EXTERNALSYM CAUSE_PU_USER}
  583. (*
  584. * values used for the N-A flag of the Diagnostics field
  585. * in struct ATM_CAUSE_IE, for certain Cause values
  586. *)
  587. CAUSE_NA_NORMAL = $00;
  588. {$EXTERNALSYM CAUSE_NA_NORMAL}
  589. CAUSE_NA_ABNORMAL = $04;
  590. {$EXTERNALSYM CAUSE_NA_ABNORMAL}
  591. type
  592. ATM_CAUSE_IE = record
  593. Location: UCHAR;
  594. Cause: UCHAR;
  595. DiagnosticsLength: UCHAR;
  596. Diagnostics: array [0..3] of UCHAR;
  597. end;
  598. {$EXTERNALSYM ATM_CAUSE_IE}
  599. TAtmCauseIE = ATM_CAUSE_IE;
  600. PAtmCauseIE = ^ATM_CAUSE_IE;
  601. (*
  602. * values used for the QOSClassForward and QOSClassBackward
  603. * field in struct ATM_QOS_CLASS_IE
  604. *)
  605. const
  606. QOS_CLASS0 = $00;
  607. {$EXTERNALSYM QOS_CLASS0}
  608. QOS_CLASS1 = $01;
  609. {$EXTERNALSYM QOS_CLASS1}
  610. QOS_CLASS2 = $02;
  611. {$EXTERNALSYM QOS_CLASS2}
  612. QOS_CLASS3 = $03;
  613. {$EXTERNALSYM QOS_CLASS3}
  614. QOS_CLASS4 = $04;
  615. {$EXTERNALSYM QOS_CLASS4}
  616. type
  617. ATM_QOS_CLASS_IE = record
  618. QOSClassForward: UCHAR;
  619. QOSClassBackward: UCHAR;
  620. end;
  621. {$EXTERNALSYM ATM_QOS_CLASS_IE}
  622. TAtmQosClassIE = ATM_QOS_CLASS_IE;
  623. PAtmQosClassIE = ^ATM_QOS_CLASS_IE;
  624. (*
  625. * values used for the TypeOfNetworkId field in struct ATM_TRANSIT_NETWORK_SELECTION_IE
  626. *)
  627. const
  628. TNS_TYPE_NATIONAL = $40;
  629. {$EXTERNALSYM TNS_TYPE_NATIONAL}
  630. (*
  631. * values used for the NetworkIdPlan field in struct ATM_TRANSIT_NETWORK_SELECTION_IE
  632. *)
  633. TNS_PLAN_CARRIER_ID_CODE = $01;
  634. {$EXTERNALSYM TNS_PLAN_CARRIER_ID_CODE}
  635. type
  636. ATM_TRANSIT_NETWORK_SELECTION_IE = record
  637. TypeOfNetworkId: UCHAR;
  638. NetworkIdPlan: UCHAR;
  639. NetworkIdLength: UCHAR;
  640. NetworkId: array [0..0] of UCHAR;
  641. end;
  642. {$EXTERNALSYM ATM_TRANSIT_NETWORK_SELECTION_IE}
  643. TAtmTransitNetworkSelectionIE = ATM_TRANSIT_NETWORK_SELECTION_IE;
  644. PAtmTransitNetworkSelectionIE = ^ATM_TRANSIT_NETWORK_SELECTION_IE;
  645. (*
  646. * ATM specific Ioctl codes
  647. *)
  648. const
  649. SIO_GET_NUMBER_OF_ATM_DEVICES = $50160001;
  650. {$EXTERNALSYM SIO_GET_NUMBER_OF_ATM_DEVICES}
  651. SIO_GET_ATM_ADDRESS = DWORD($d0160002);
  652. {$EXTERNALSYM SIO_GET_ATM_ADDRESS}
  653. SIO_ASSOCIATE_PVC = DWORD($90160003);
  654. {$EXTERNALSYM SIO_ASSOCIATE_PVC}
  655. SIO_GET_ATM_CONNECTION_ID = $50160004;
  656. {$EXTERNALSYM SIO_GET_ATM_CONNECTION_ID}
  657. (* ATM Connection Identifier *)
  658. type
  659. ATM_CONNECTION_ID = record
  660. DeviceNumber: DWORD;
  661. VPI: DWORD;
  662. VCI: DWORD;
  663. end;
  664. {$EXTERNALSYM ATM_CONNECTION_ID}
  665. TAtmConnectionID = ATM_CONNECTION_ID;
  666. PAtmConnectionID = ^ATM_CONNECTION_ID;
  667. (*
  668. * Input buffer format for SIO_ASSOCIATE_PVC
  669. *)
  670. ATM_PVC_PARAMS = record
  671. PvcConnectionId: ATM_CONNECTION_ID;
  672. PvcQos: QOS;
  673. end;
  674. {$EXTERNALSYM ATM_PVC_PARAMS}
  675. TAtmPvcParams = ATM_PVC_PARAMS;
  676. PAtmPvcParams = ^ATM_PVC_PARAMS;
  677. implementation
  678. end.