jwaws2atm.pas 27 KB

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