home *** CD-ROM | disk | FTP | other *** search
/ PC Format (South-Africa) 2001 May / PCFMay2001.iso / Xenon / C++ / FreeCommandLineTools.exe / Include / ws2atm.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-01-31  |  16.6 KB  |  466 lines

  1. /*++
  2.  
  3. Copyright (c) 1997-1999  Microsoft Corporation
  4.  
  5. Module Name:
  6.  
  7.     ws2atm.h
  8.  
  9. Abstract:
  10.  
  11.     Winsock 2 ATM Annex definitions.
  12.  
  13. Revision History:
  14.  
  15. Notes:
  16.  
  17. --*/
  18.  
  19. #ifndef _WS2ATM_H_
  20. #pragma option push -b -a8 -pc -A- /*P_O_Push*/
  21. #define _WS2ATM_H_
  22.  
  23. #if _MSC_VER > 1000
  24. #pragma once
  25. #endif
  26.  
  27. #include <pshpack4.h>
  28.  
  29. #define ATMPROTO_AALUSER           0x00   /* User-defined AAL */
  30. #define ATMPROTO_AAL1              0x01   /* AAL 1 */
  31. #define ATMPROTO_AAL2              0x02   /* AAL 2 */
  32. #define ATMPROTO_AAL34             0x03   /* AAL 3/4 */
  33. #define ATMPROTO_AAL5              0x05   /* AAL 5 */
  34.  
  35. #define SAP_FIELD_ABSENT           0xFFFFFFFE
  36. #define SAP_FIELD_ANY              0xFFFFFFFF
  37. #define SAP_FIELD_ANY_AESA_SEL     0xFFFFFFFA
  38. #define SAP_FIELD_ANY_AESA_REST    0xFFFFFFFB
  39.  
  40. /*
  41.  *  values used for AddressType in struct ATM_ADDRESS
  42.  */
  43. #define ATM_E164               0x01   /* E.164 addressing scheme */
  44. #define ATM_NSAP               0x02   /* NSAP-style ATM Endsystem Address scheme */
  45. #define ATM_AESA               0x02   /* NSAP-style ATM Endsystem Address scheme */
  46.  
  47. #define ATM_ADDR_SIZE          20
  48. typedef struct {
  49.     DWORD AddressType;                /* E.164 or NSAP-style ATM Endsystem Address */
  50.     DWORD NumofDigits;                /* number of digits; */
  51.     UCHAR Addr[ATM_ADDR_SIZE];        /* IA5 digits for E164, BCD encoding for NSAP */
  52.                                       /* format as defined in the ATM Forum UNI 3.1 */
  53. } ATM_ADDRESS;
  54.  
  55. /*
  56.  *  values used for Layer2Protocol in B-LLI
  57.  */
  58. #define BLLI_L2_ISO_1745           0x01   /* Basic mode ISO 1745                      */
  59. #define BLLI_L2_Q921               0x02   /* CCITT Rec. Q.921                         */
  60. #define BLLI_L2_X25L               0x06   /* CCITT Rec. X.25, link layer              */
  61. #define BLLI_L2_X25M               0x07   /* CCITT Rec. X.25, multilink               */
  62. #define BLLI_L2_ELAPB              0x08   /* Extended LAPB; for half duplex operation */
  63. #define BLLI_L2_HDLC_ARM           0x09   /* HDLC ARM (ISO 4335)                      */
  64. #define BLLI_L2_HDLC_NRM           0x0A   /* HDLC NRM (ISO 4335)                      */
  65. #define BLLI_L2_HDLC_ABM           0x0B   /* HDLC ABM (ISO 4335)                      */
  66. #define BLLI_L2_LLC                0x0C   /* LAN logical link control (ISO 8802/2)    */
  67. #define BLLI_L2_X75                0x0D   /* CCITT Rec. X.75, single link procedure   */
  68. #define BLLI_L2_Q922               0x0E   /* CCITT Rec. Q.922                         */
  69. #define BLLI_L2_USER_SPECIFIED     0x10   /* User Specified                           */
  70. #define BLLI_L2_ISO_7776           0x11   /* ISO 7776 DTE-DTE operation               */
  71.  
  72. /*
  73.  *  values used for Layer3Protocol in B-LLI
  74.  */
  75. #define BLLI_L3_X25                0x06   /* CCITT Rec. X.25, packet layer            */
  76. #define BLLI_L3_ISO_8208           0x07   /* ISO/IEC 8208 (X.25 packet layer for DTE  */
  77. #define BLLI_L3_X223               0x08   /* X.223/ISO 8878                           */
  78. #define BLLI_L3_SIO_8473           0x09   /* ISO/IEC 8473 (OSI connectionless)        */
  79. #define BLLI_L3_T70                0x0A   /* CCITT Rec. T.70 min. network layer       */
  80. #define BLLI_L3_ISO_TR9577         0x0B   /* ISO/IEC TR 9577 Network Layer Protocol ID*/
  81. #define BLLI_L3_USER_SPECIFIED     0x10   /* User Specified                           */
  82.  
  83. /*
  84.  *  values used for Layer3IPI in B-LLI
  85.  */
  86. #define BLLI_L3_IPI_SNAP           0x80   /* IEEE 802.1 SNAP identifier               */
  87. #define BLLI_L3_IPI_IP             0xCC   /* Internet Protocol (IP) identifier        */
  88.  
  89. typedef struct {
  90.     DWORD Layer2Protocol;                 /* User information layer 2 protocol           */
  91.     DWORD Layer2UserSpecifiedProtocol;    /* User specified layer 2 protocol information */
  92.     DWORD Layer3Protocol;                 /* User information layer 3 protocol           */
  93.     DWORD Layer3UserSpecifiedProtocol;    /* User specified layer 3 protocol information */
  94.     DWORD Layer3IPI;                      /* ISO/IEC TR 9577 Initial Protocol Identifier */
  95.     UCHAR SnapID[5];                      /* SNAP ID consisting of OUI and PID           */
  96. } ATM_BLLI;
  97.  
  98. /*
  99.  *  values used for the HighLayerInfoType field in ATM_BHLI
  100.  */
  101. #define BHLI_ISO                   0x00   /* ISO                                 */
  102. #define BHLI_UserSpecific          0x01   /* User Specific                       */
  103. #define BHLI_HighLayerProfile      0x02   /* High layer profile (only in UNI3.0) */
  104. #define BHLI_VendorSpecificAppId   0x03   /* Vendor-Specific Application ID      */
  105.  
  106. typedef struct {
  107.     DWORD HighLayerInfoType;          /* High Layer Information Type      */
  108.     DWORD HighLayerInfoLength;        /* number of bytes in HighLayerInfo */
  109.     UCHAR HighLayerInfo[8];           /* the value dependent on the       */
  110.                                       /*   HighLayerInfoType field        */
  111. } ATM_BHLI;
  112.  
  113. typedef struct sockaddr_atm {
  114.     u_short satm_family;              /* address family should be AF_ATM  */
  115.     ATM_ADDRESS satm_number;          /* ATM address                      */
  116.     ATM_BLLI satm_blli;               /* B-LLI                            */
  117.     ATM_BHLI satm_bhli;               /* B-HLI                            */
  118. } sockaddr_atm, SOCKADDR_ATM, *PSOCKADDR_ATM, *LPSOCKADDR_ATM;
  119.  
  120. typedef enum {
  121.     IE_AALParameters,
  122.     IE_TrafficDescriptor,
  123.     IE_BroadbandBearerCapability,
  124.     IE_BHLI,
  125.     IE_BLLI,
  126.     IE_CalledPartyNumber,
  127.     IE_CalledPartySubaddress,
  128.     IE_CallingPartyNumber,
  129.     IE_CallingPartySubaddress,
  130.     IE_Cause,
  131.     IE_QOSClass,
  132.     IE_TransitNetworkSelection,
  133. } Q2931_IE_TYPE;
  134.  
  135. typedef struct {
  136.     Q2931_IE_TYPE IEType;
  137.     ULONG         IELength;
  138.     UCHAR         IE[1];
  139. } Q2931_IE;
  140.  
  141. /*
  142.  *  manifest constants for the AALType field in struct AAL_PARAMETERS_IE
  143.  */
  144. typedef enum {
  145.     AALTYPE_5     = 5,   /* AAL 5 */
  146.     AALTYPE_USER  = 16,  /* user-defined AAL */
  147. } AAL_TYPE;
  148.  
  149. /*
  150.  *  values used for the Mode field in struct AAL5_PARAMETERS
  151.  */
  152. #define AAL5_MODE_MESSAGE           0x01
  153. #define AAL5_MODE_STREAMING         0x02
  154.  
  155. /*
  156.  *  values used for the SSCSType field in struct AAL5_PARAMETERS
  157.  */
  158. #define AAL5_SSCS_NULL              0x00
  159. #define AAL5_SSCS_SSCOP_ASSURED     0x01
  160. #define AAL5_SSCS_SSCOP_NON_ASSURED 0x02
  161. #define AAL5_SSCS_FRAME_RELAY       0x04
  162.  
  163. typedef struct {
  164.     ULONG ForwardMaxCPCSSDUSize;
  165.     ULONG BackwardMaxCPCSSDUSize;
  166.     UCHAR Mode;                        /* only available in UNI 3.0 */
  167.     UCHAR SSCSType;
  168. } AAL5_PARAMETERS;
  169.  
  170. typedef struct {
  171.     ULONG UserDefined;
  172. } AALUSER_PARAMETERS;
  173.  
  174. typedef struct {
  175.     AAL_TYPE AALType;
  176.     union {
  177.         AAL5_PARAMETERS     AAL5Parameters;
  178.         AALUSER_PARAMETERS  AALUserParameters;
  179.     } AALSpecificParameters;
  180. } AAL_PARAMETERS_IE;
  181.  
  182. typedef struct {
  183.     ULONG PeakCellRate_CLP0;
  184.     ULONG PeakCellRate_CLP01;
  185.     ULONG SustainableCellRate_CLP0;
  186.     ULONG SustainableCellRate_CLP01;
  187.     ULONG MaxBurstSize_CLP0;
  188.     ULONG MaxBurstSize_CLP01;
  189.     BOOL  Tagging;
  190. } ATM_TD;
  191.  
  192. typedef struct {
  193.     ATM_TD Forward;
  194.     ATM_TD Backward;
  195.     BOOL   BestEffort;
  196. } ATM_TRAFFIC_DESCRIPTOR_IE;
  197.  
  198. /*
  199.  *  values used for the BearerClass field in struct ATM_BROADBAND_BEARER_CAPABILITY_IE
  200.  */
  201. #define BCOB_A                   0x01   /* Bearer class A                      */
  202. #define BCOB_C                   0x03   /* Bearer class C                      */
  203. #define BCOB_X                   0x10   /* Bearer class X                      */
  204.  
  205. /*
  206.  *  values used for the TrafficType field in struct ATM_BROADBAND_BEARER_CAPABILITY_IE
  207.  */
  208. #define TT_NOIND                 0x00   /* No indication of traffic type       */
  209. #define TT_CBR                   0x04   /* Constant bit rate                   */
  210. #define TT_VBR                   0x08   /* Variable bit rate                   */
  211.  
  212. /*
  213.  *  values used for the TimingRequirements field in struct ATM_BROADBAND_BEARER_CAPABILITY_IE
  214.  */
  215. #define TR_NOIND                 0x00   /* No timing requirement indication    */
  216. #define TR_END_TO_END            0x01   /* End-to-end timing required          */
  217. #define TR_NO_END_TO_END         0x02   /* End-to-end timing not required      */
  218.  
  219. /*
  220.  *  values used for the ClippingSusceptability field in struct ATM_BROADBAND_BEARER_CAPABILITY_IE
  221.  */
  222. #define CLIP_NOT                 0x00   /* Not susceptible to clipping         */
  223. #define CLIP_SUS                 0x20   /* Susceptible to clipping             */
  224.  
  225. /*
  226.  *  values used for the UserPlaneConnectionConfig field in
  227.  *  struct ATM_BROADBAND_BEARER_CAPABILITY_IE
  228.  */
  229. #define UP_P2P                   0x00   /* Point-to-point connection           */
  230. #define UP_P2MP                  0x01   /* Point-to-multipoint connection      */
  231.  
  232. typedef struct {
  233.     UCHAR BearerClass;
  234.     UCHAR TrafficType;
  235.     UCHAR TimingRequirements;
  236.     UCHAR ClippingSusceptability;
  237.     UCHAR UserPlaneConnectionConfig;
  238. } ATM_BROADBAND_BEARER_CAPABILITY_IE;
  239.  
  240. typedef ATM_BHLI ATM_BHLI_IE;
  241.  
  242. /*
  243.  *  values used for the Layer2Mode field in struct ATM_BLLI_IE
  244.  */
  245. #define BLLI_L2_MODE_NORMAL         0x40
  246. #define BLLI_L2_MODE_EXT            0x80
  247.  
  248. /*
  249.  *  values used for the Layer3Mode field in struct ATM_BLLI_IE
  250.  */
  251. #define BLLI_L3_MODE_NORMAL         0x40
  252. #define BLLI_L3_MODE_EXT            0x80
  253.  
  254. /*
  255.  *  values used for the Layer3DefaultPacketSize field in struct ATM_BLLI_IE
  256.  */
  257. #define BLLI_L3_PACKET_16           0x04
  258. #define BLLI_L3_PACKET_32           0x05
  259. #define BLLI_L3_PACKET_64           0x06
  260. #define BLLI_L3_PACKET_128          0x07
  261. #define BLLI_L3_PACKET_256          0x08
  262. #define BLLI_L3_PACKET_512          0x09
  263. #define BLLI_L3_PACKET_1024         0x0A
  264. #define BLLI_L3_PACKET_2048         0x0B
  265. #define BLLI_L3_PACKET_4096         0x0C
  266.  
  267. typedef struct {
  268.     DWORD Layer2Protocol;                 /* User information layer 2 protocol           */
  269.     UCHAR Layer2Mode;
  270.     UCHAR Layer2WindowSize;
  271.     DWORD Layer2UserSpecifiedProtocol;    /* User specified layer 2 protocol information */
  272.     DWORD Layer3Protocol;                 /* User information layer 3 protocol           */
  273.     UCHAR Layer3Mode;
  274.     UCHAR Layer3DefaultPacketSize;
  275.     UCHAR Layer3PacketWindowSize;
  276.     DWORD Layer3UserSpecifiedProtocol;    /* User specified layer 3 protocol information */
  277.     DWORD Layer3IPI;                      /* ISO/IEC TR 9577 Initial Protocol Identifier */
  278.     UCHAR SnapID[5];                      /* SNAP ID consisting of OUI and PID           */
  279. } ATM_BLLI_IE;
  280.  
  281. typedef ATM_ADDRESS ATM_CALLED_PARTY_NUMBER_IE;
  282.  
  283. typedef ATM_ADDRESS ATM_CALLED_PARTY_SUBADDRESS_IE;
  284.  
  285. /*
  286.  *  values used for the Presentation_Indication field in
  287.  *  struct ATM_CALLING_PARTY_NUMBER_IE
  288.  */
  289. #define PI_ALLOWED                  0x00
  290. #define PI_RESTRICTED               0x40
  291. #define PI_NUMBER_NOT_AVAILABLE     0x80
  292.  
  293. /*
  294.  *  values used for the Screening_Indicator field in
  295.  *  struct ATM_CALLING_PARTY_NUMBER_IE
  296.  */
  297. #define SI_USER_NOT_SCREENED        0x00
  298. #define SI_USER_PASSED              0x01
  299. #define SI_USER_FAILED              0x02
  300. #define SI_NETWORK                  0x03
  301.  
  302. typedef struct {
  303.     ATM_ADDRESS ATM_Number;
  304.     UCHAR       Presentation_Indication;
  305.     UCHAR       Screening_Indicator;
  306. } ATM_CALLING_PARTY_NUMBER_IE;
  307.  
  308. typedef ATM_ADDRESS ATM_CALLING_PARTY_SUBADDRESS_IE;
  309.  
  310. /*
  311.  *  values used for the Location field in struct ATM_CAUSE_IE
  312.  */
  313. #define CAUSE_LOC_USER                      0x00
  314. #define CAUSE_LOC_PRIVATE_LOCAL             0x01
  315. #define CAUSE_LOC_PUBLIC_LOCAL              0x02
  316. #define CAUSE_LOC_TRANSIT_NETWORK           0x03
  317. #define CAUSE_LOC_PUBLIC_REMOTE             0x04
  318. #define CAUSE_LOC_PRIVATE_REMOTE            0x05
  319. #define CAUSE_LOC_INTERNATIONAL_NETWORK     0x07
  320. #define CAUSE_LOC_BEYOND_INTERWORKING       0x0A
  321.  
  322. /*
  323.  *  values used for the Cause field in struct ATM_CAUSE_IE
  324.  */
  325. #define CAUSE_UNALLOCATED_NUMBER                0x01
  326. #define CAUSE_NO_ROUTE_TO_TRANSIT_NETWORK       0x02
  327. #define CAUSE_NO_ROUTE_TO_DESTINATION           0x03
  328. #define CAUSE_VPI_VCI_UNACCEPTABLE              0x0A
  329. #define CAUSE_NORMAL_CALL_CLEARING              0x10
  330. #define CAUSE_USER_BUSY                         0x11
  331. #define CAUSE_NO_USER_RESPONDING                0x12
  332. #define CAUSE_CALL_REJECTED                     0x15
  333. #define CAUSE_NUMBER_CHANGED                    0x16
  334. #define CAUSE_USER_REJECTS_CLIR                 0x17
  335. #define CAUSE_DESTINATION_OUT_OF_ORDER          0x1B
  336. #define CAUSE_INVALID_NUMBER_FORMAT             0x1C
  337. #define CAUSE_STATUS_ENQUIRY_RESPONSE           0x1E
  338. #define CAUSE_NORMAL_UNSPECIFIED                0x1F
  339. #define CAUSE_VPI_VCI_UNAVAILABLE               0x23
  340. #define CAUSE_NETWORK_OUT_OF_ORDER              0x26
  341. #define CAUSE_TEMPORARY_FAILURE                 0x29
  342. #define CAUSE_ACCESS_INFORMAION_DISCARDED       0x2B
  343. #define CAUSE_NO_VPI_VCI_AVAILABLE              0x2D
  344. #define CAUSE_RESOURCE_UNAVAILABLE              0x2F
  345. #define CAUSE_QOS_UNAVAILABLE                   0x31
  346. #define CAUSE_USER_CELL_RATE_UNAVAILABLE        0x33
  347. #define CAUSE_BEARER_CAPABILITY_UNAUTHORIZED    0x39
  348. #define CAUSE_BEARER_CAPABILITY_UNAVAILABLE     0x3A
  349. #define CAUSE_OPTION_UNAVAILABLE                0x3F
  350. #define CAUSE_BEARER_CAPABILITY_UNIMPLEMENTED   0x41
  351. #define CAUSE_UNSUPPORTED_TRAFFIC_PARAMETERS    0x49
  352. #define CAUSE_INVALID_CALL_REFERENCE            0x51
  353. #define CAUSE_CHANNEL_NONEXISTENT               0x52
  354. #define CAUSE_INCOMPATIBLE_DESTINATION          0x58
  355. #define CAUSE_INVALID_ENDPOINT_REFERENCE        0x59
  356. #define CAUSE_INVALID_TRANSIT_NETWORK_SELECTION 0x5B
  357. #define CAUSE_TOO_MANY_PENDING_ADD_PARTY        0x5C
  358. #define CAUSE_AAL_PARAMETERS_UNSUPPORTED        0x5D
  359. #define CAUSE_MANDATORY_IE_MISSING              0x60
  360. #define CAUSE_UNIMPLEMENTED_MESSAGE_TYPE        0x61
  361. #define CAUSE_UNIMPLEMENTED_IE                  0x63
  362. #define CAUSE_INVALID_IE_CONTENTS               0x64
  363. #define CAUSE_INVALID_STATE_FOR_MESSAGE         0x65
  364. #define CAUSE_RECOVERY_ON_TIMEOUT               0x66
  365. #define CAUSE_INCORRECT_MESSAGE_LENGTH          0x68
  366. #define CAUSE_PROTOCOL_ERROR                    0x6F
  367.  
  368. /*
  369.  *  values used for the Condition portion of the Diagnostics field
  370.  *  in struct ATM_CAUSE_IE, for certain Cause values
  371.  */
  372. #define CAUSE_COND_UNKNOWN                  0x00
  373. #define CAUSE_COND_PERMANENT                0x01
  374. #define CAUSE_COND_TRANSIENT                0x02
  375.  
  376. /*
  377.  *  values used for the Rejection Reason portion of the Diagnostics field
  378.  *  in struct ATM_CAUSE_IE, for certain Cause values
  379.  */
  380. #define CAUSE_REASON_USER                   0x00
  381. #define CAUSE_REASON_IE_MISSING             0x04
  382. #define CAUSE_REASON_IE_INSUFFICIENT        0x08
  383.  
  384. /*
  385.  *  values used for the P-U flag of the Diagnostics field
  386.  *  in struct ATM_CAUSE_IE, for certain Cause values
  387.  */
  388. #define CAUSE_PU_PROVIDER                   0x00
  389. #define CAUSE_PU_USER                       0x08
  390.  
  391. /*
  392.  *  values used for the N-A flag of the Diagnostics field
  393.  *  in struct ATM_CAUSE_IE, for certain Cause values
  394.  */
  395. #define CAUSE_NA_NORMAL                     0x00
  396. #define CAUSE_NA_ABNORMAL                   0x04
  397.  
  398. typedef struct {
  399.     UCHAR Location;
  400.     UCHAR Cause;
  401.     UCHAR DiagnosticsLength;
  402.     UCHAR Diagnostics[4];
  403. } ATM_CAUSE_IE;
  404.  
  405. /*
  406.  *  values used for the QOSClassForward and QOSClassBackward
  407.  *  field in struct ATM_QOS_CLASS_IE
  408.  */
  409. #define QOS_CLASS0                  0x00
  410. #define QOS_CLASS1                  0x01
  411. #define QOS_CLASS2                  0x02
  412. #define QOS_CLASS3                  0x03
  413. #define QOS_CLASS4                  0x04
  414.  
  415. typedef struct {
  416.     UCHAR QOSClassForward;
  417.     UCHAR QOSClassBackward;
  418. } ATM_QOS_CLASS_IE;
  419.  
  420. /*
  421.  *  values used for the TypeOfNetworkId field in struct ATM_TRANSIT_NETWORK_SELECTION_IE
  422.  */
  423. #define TNS_TYPE_NATIONAL           0x40
  424.  
  425. /*
  426.  *  values used for the NetworkIdPlan field in struct ATM_TRANSIT_NETWORK_SELECTION_IE
  427.  */
  428. #define TNS_PLAN_CARRIER_ID_CODE    0x01
  429.  
  430. typedef struct {
  431.     UCHAR TypeOfNetworkId;
  432.     UCHAR NetworkIdPlan;
  433.     UCHAR NetworkIdLength;
  434.     UCHAR NetworkId[1];
  435. } ATM_TRANSIT_NETWORK_SELECTION_IE;
  436.  
  437. /*
  438.  *  ATM specific Ioctl codes
  439.  */
  440. #define SIO_GET_NUMBER_OF_ATM_DEVICES   0x50160001
  441. #define SIO_GET_ATM_ADDRESS             0xd0160002
  442. #define SIO_ASSOCIATE_PVC               0x90160003
  443. #define SIO_GET_ATM_CONNECTION_ID       0x50160004
  444.  
  445. /* ATM Connection Identifier */
  446.  
  447. typedef struct {
  448.     DWORD  DeviceNumber;
  449.     DWORD  VPI;
  450.     DWORD  VCI;
  451. } ATM_CONNECTION_ID;
  452.  
  453. /*
  454.  * Input buffer format for SIO_ASSOCIATE_PVC
  455.  */
  456.  
  457. typedef struct {
  458.    ATM_CONNECTION_ID   PvcConnectionId;
  459.    QOS                 PvcQos;
  460. } ATM_PVC_PARAMS;
  461.  
  462. #include <poppack.h>
  463.  
  464. #pragma option pop /*P_O_Pop*/
  465. #endif   /* _WS2ATM_H_ */
  466.