140 lines
3.3 KiB
C
140 lines
3.3 KiB
C
/*++
|
|
|
|
Copyright (c) 1997 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
D:\nt\private\ntos\tdi\rawwan\atm\atmsp.h
|
|
|
|
Abstract:
|
|
|
|
Private data structure definitions for ATM-specific functions
|
|
for Raw WAN.
|
|
|
|
Revision History:
|
|
|
|
Who When What
|
|
-------- -------- ----------------------------------------------
|
|
arvindm 06-03-97 Created
|
|
|
|
Notes:
|
|
|
|
--*/
|
|
|
|
|
|
#ifndef __TDI_ATM_ATMSP__H
|
|
#define __TDI_ATM_ATMSP__H
|
|
|
|
|
|
//
|
|
// ATM-specific module's context for an NDIS AF open.
|
|
//
|
|
typedef struct _ATMSP_AF_BLOCK
|
|
{
|
|
RWAN_HANDLE RWanAFHandle;
|
|
LIST_ENTRY AfBlockLink; // To list of AF Blocks
|
|
NDIS_CO_LINK_SPEED LineRate; // supported by adapter
|
|
ULONG MaxPacketSize; // supported by adapter
|
|
ATMSP_QOS DefaultQoS;
|
|
ULONG DefaultQoSLength;
|
|
|
|
} ATMSP_AF_BLOCK, *PATMSP_AF_BLOCK;
|
|
|
|
|
|
//
|
|
// ATM-specific module's context for a TDI Address Object.
|
|
//
|
|
typedef struct _ATMSP_ADDR_BLOCK
|
|
{
|
|
RWAN_HANDLE RWanAddrHandle;
|
|
ULONG RefCount;
|
|
ULONG Flags;
|
|
ATMSP_CONNECTION_ID ConnectionId; // Set via SIO_ASSOCIATE_PVC
|
|
LIST_ENTRY ConnList; // List of associated conn blocks
|
|
NDIS_SPIN_LOCK Lock; // For above list.
|
|
|
|
} ATMSP_ADDR_BLOCK, *PATMSP_ADDR_BLOCK;
|
|
|
|
#define ATMSPF_ADDR_PVC_ID_SET 0x00000001
|
|
|
|
|
|
//
|
|
// ATM-specific module's context for a TDI Connection Object that is
|
|
// associated with an address object.
|
|
//
|
|
typedef struct _ATMSP_CONN_BLOCK
|
|
{
|
|
RWAN_HANDLE RWanConnHandle;
|
|
PATMSP_ADDR_BLOCK pAddrBlock;
|
|
LIST_ENTRY ConnLink; // To List of Conn Blocks
|
|
ATMSP_CONNECTION_ID ConnectionId; // Set after conn setup
|
|
|
|
} ATMSP_CONN_BLOCK, *PATMSP_CONN_BLOCK;
|
|
|
|
|
|
//
|
|
// Global data structure.
|
|
//
|
|
typedef struct _ATMSP_GLOBAL_INFO
|
|
{
|
|
RWAN_HANDLE RWanSpHandle;
|
|
RWAN_NDIS_AF_CHARS AfChars;
|
|
RWAN_HANDLE RWanProtHandle;
|
|
NDIS_STRING AtmSpDeviceName;
|
|
LARGE_INTEGER StartTime;
|
|
LIST_ENTRY AfList; // List of AF Blocks
|
|
ULONG AfListSize; // Size of above
|
|
RWAN_TDI_PROTOCOL_CHARS TdiChars;
|
|
|
|
} ATMSP_GLOBAL_INFO, *PATMSP_GLOBAL_INFO;
|
|
|
|
|
|
|
|
#define ATMSP_AF_MAJOR_VERSION 3
|
|
#define ATMSP_AF_MINOR_VERSION 1
|
|
|
|
|
|
//
|
|
// Overlayed at the AddressType field of struct _TA_ADDRESS is the
|
|
// Sockets ATM address structure, sockaddr_atm, which is defined as
|
|
//
|
|
// typedef struct sockaddr_atm {
|
|
// u_short satm_family;
|
|
// ATM_ADDRESS satm_number;
|
|
// ATM_BHLI satm_bhli;
|
|
// ATM_BLLI satm_blli;
|
|
// } sockaddr_atm;
|
|
//
|
|
// Ideally we want satm_number to be overlayed with the first byte
|
|
// of Address[] in the _TA_ADDRESS structure, but because of 4-byte
|
|
// packing of sockaddr_atm, there is a hidden u_short just following
|
|
// satm_family.
|
|
//
|
|
// The following macro accesses the "true" local version of the ATM
|
|
// socket address given a pointer to the start of Address[i] within
|
|
// struct _TA_ADDRESS.
|
|
//
|
|
#define TA_POINTER_TO_ATM_ADDR_POINTER(_pTransportAddr) \
|
|
(ATMSP_SOCKADDR_ATM UNALIGNED *)((PUCHAR)(_pTransportAddr) + sizeof(USHORT))
|
|
|
|
//
|
|
// The following macro defines the length of an ATM address as required
|
|
// in a TA_ADDRESS Length field.
|
|
//
|
|
#define TA_ATM_ADDRESS_LENGTH (sizeof(ATMSP_SOCKADDR_ATM) + sizeof(USHORT))
|
|
|
|
|
|
//
|
|
// Header length of a Transport Address.
|
|
//
|
|
#define TA_HEADER_LENGTH (FIELD_OFFSET(TRANSPORT_ADDRESS, Address->Address))
|
|
|
|
typedef struct _ATMSP_EVENT
|
|
{
|
|
NDIS_EVENT Event;
|
|
NDIS_STATUS Status;
|
|
|
|
} ATMSP_EVENT, *PATMSP_EVENT;
|
|
|
|
#endif // __TDI_ATM_ATMSP__H
|