jwaws2atm.pas 26 KB

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