windows-nt/Source/XPSP1/NT/net/atm/arp/atmarpc/space.c
2020-09-26 16:20:57 +08:00

313 lines
7.5 KiB
C

/*++
Copyright (c) 1996 Microsoft Corporation
Module Name:
space.c
Abstract:
All globals and tunable variables are here.
Revision History:
Who When What
-------- -------- ----------------------------------------------
arvindm 08-08-96 Created
Notes:
--*/
#include <precomp.h>
#define _FILENUMBER 'CAPS'
//
// The Global Info structure is initialized in our DriverEntry.
//
ATMARP_GLOBALS AtmArpGlobalInfo;
PATMARP_GLOBALS pAtmArpGlobalInfo = &AtmArpGlobalInfo;
//
// Generic NDIS protocol characteristics structure: this defines
// our handler routines for various common protocol functions.
// We pass this to NDIS when we register ourselves as a protocol.
//
NDIS_PROTOCOL_CHARACTERISTICS AtmArpProtocolCharacteristics;
//
// Connection Oriented Client specific NDIS characteristics structure.
// This contains our handlers for Connection-Oriented functions. We pass
// this structure to NDIS when we open the Q.2931 Address Family.
//
NDIS_CLIENT_CHARACTERISTICS AtmArpClientCharacteristics;
#ifdef OLDSAP
ATM_BLLI_IE AtmArpDefaultBlli =
{
(ULONG)BLLI_L2_LLC, // Layer2Protocol
(UCHAR)0x00, // Layer2Mode
(UCHAR)0x00, // Layer2WindowSize
(ULONG)0x00000000, // Layer2UserSpecifiedProtocol
(ULONG)BLLI_L3_ISO_TR9577, // Layer3Protocol
(UCHAR)0x01, // Layer3Mode
(UCHAR)0x00, // Layer3DefaultPacketSize
(UCHAR)0x00, // Layer3PacketWindowSize
(ULONG)0x00000000, // Layer3UserSpecifiedProtocol
(ULONG)BLLI_L3_IPI_IP, // Layer3IPI,
(UCHAR)0x00, // SnapID[5]
(UCHAR)0x00,
(UCHAR)0x00,
(UCHAR)0x00,
(UCHAR)0x00
};
#else
ATM_BLLI_IE AtmArpDefaultBlli =
{
(ULONG)BLLI_L2_LLC, // Layer2Protocol
(UCHAR)0x00, // Layer2Mode
(UCHAR)0x00, // Layer2WindowSize
(ULONG)0x00000000, // Layer2UserSpecifiedProtocol
(ULONG)SAP_FIELD_ABSENT, // Layer3Protocol
(UCHAR)0x00, // Layer3Mode
(UCHAR)0x00, // Layer3DefaultPacketSize
(UCHAR)0x00, // Layer3PacketWindowSize
(ULONG)0x00000000, // Layer3UserSpecifiedProtocol
(ULONG)0x00000000, // Layer3IPI,
(UCHAR)0x00, // SnapID[5]
(UCHAR)0x00,
(UCHAR)0x00,
(UCHAR)0x00,
(UCHAR)0x00
};
#endif
ATM_BHLI_IE AtmArpDefaultBhli =
{
(ULONG)SAP_FIELD_ABSENT, // HighLayerInfoType
(ULONG)0x00000000, // HighLayerInfoLength
(UCHAR)0x00, // HighLayerInfo[8]
(UCHAR)0x00,
(UCHAR)0x00,
(UCHAR)0x00,
(UCHAR)0x00,
(UCHAR)0x00,
(UCHAR)0x00,
(UCHAR)0x00
};
AA_PKT_LLC_SNAP_HEADER AtmArpLlcSnapHeader =
{
(UCHAR)0xAA,
(UCHAR)0xAA,
(UCHAR)0x03,
(UCHAR)0x00,
(UCHAR)0x00,
(UCHAR)0x00,
(USHORT)AA_PKT_ETHERTYPE_IP_NS
};
#ifdef IPMCAST
AA_MC_PKT_TYPE1_SHORT_HEADER AtmArpMcType1ShortHeader =
{
(UCHAR)MC_LLC_SNAP_LLC0,
(UCHAR)MC_LLC_SNAP_LLC1,
(UCHAR)MC_LLC_SNAP_LLC2,
(UCHAR)MC_LLC_SNAP_OUI0,
(UCHAR)MC_LLC_SNAP_OUI1,
(UCHAR)MC_LLC_SNAP_OUI2,
(USHORT)AA_PKT_ETHERTYPE_MC_TYPE1_NS,
(USHORT)0x0, // CMI
(USHORT)AA_PKT_ETHERTYPE_IP_NS
};
AA_MARS_PKT_FIXED_HEADER AtmArpMcMARSFixedHeader =
{
(UCHAR)MC_LLC_SNAP_LLC0,
(UCHAR)MC_LLC_SNAP_LLC1,
(UCHAR)MC_LLC_SNAP_LLC2,
(UCHAR)MC_LLC_SNAP_OUI0,
(UCHAR)MC_LLC_SNAP_OUI1,
(UCHAR)MC_LLC_SNAP_OUI2,
(USHORT)AA_PKT_ETHERTYPE_MARS_CONTROL_NS,
(USHORT)AA_MC_MARS_HEADER_AFN_NS,
(UCHAR)0x08, // this and the next == 0x800 (IPv4)
(UCHAR)0x00,
(UCHAR)0x00,
(UCHAR)0x00,
(UCHAR)0x00,
(UCHAR)0x00,
(UCHAR)0x00,
(UCHAR)0x00, // hdrrsv[0]
(UCHAR)0x00, // hdrrsv[1]
(UCHAR)0x00, // hdrrsv[2]
(USHORT)0x0000, // check-sum
(USHORT)0x0000, // extensions offset
(USHORT)0x0000, // Op code
(UCHAR)0x00, // Source ATM Number type+len
(UCHAR)0x00 // Source ATM Subaddress type+len
};
#endif // IPMCAST
#ifdef QOS_HEURISTICS
ATMARP_FLOW_INFO AtmArpDefaultFlowInfo =
{
(PATMARP_FLOW_INFO)NULL, // pNextFlow
(PATMARP_FLOW_INFO)NULL, // pPrevFlow
#ifdef GPC
(PVOID)0, // VcContext
(GPC_HANDLE)NULL, // CfInfoHandle
{0}, // FlowInstanceName
#endif // GPC
(ULONG)AAF_DEF_LOWBW_SEND_THRESHOLD, // Max Send Size
{ // Filter Spec:
(ULONG)-1, // DestinationPort
},
{ // Flow Spec:
(ULONG)AAF_DEF_LOWBW_SEND_BANDWIDTH,
(ULONG)65535,
(ULONG)AAF_DEF_LOWBW_RECV_BANDWIDTH,
(ULONG)65535,
ENCAPSULATION_TYPE_LLCSNAP,
AAF_DEF_LOWBW_AGING_TIME
}
};
#endif // QOS_HEURISTICS
#ifdef GPC
GPC_CLASSIFY_PACKET_HANDLER AtmArpGpcClassifyPacketHandler;
GPC_GET_CFINFO_CLIENT_CONTEXT_HANDLER AtmArpGpcGetCfInfoClientContextHandler;
#endif // GPC
//
// Timer configuration.
//
#define AAT_MAX_TIMER_SHORT_DURATION 60 // Seconds
#define AAT_MAX_TIMER_LONG_DURATION (30*60) // Seconds
#define AAT_SHORT_DURATION_TIMER_PERIOD 1 // Second
#define AAT_LONG_DURATION_TIMER_PERIOD 10 // Seconds
//
// Max timeout value (in seconds) for each class.
//
ULONG AtmArpMaxTimerValue[AAT_CLASS_MAX] =
{
AAT_MAX_TIMER_SHORT_DURATION,
AAT_MAX_TIMER_LONG_DURATION
};
//
// Size of each timer wheel.
//
ULONG AtmArpTimerListSize[AAT_CLASS_MAX] =
{
SECONDS_TO_SHORT_TICKS(AAT_MAX_TIMER_SHORT_DURATION),
SECONDS_TO_LONG_TICKS(AAT_MAX_TIMER_LONG_DURATION)
};
//
// Interval between ticks, in seconds, for each class.
//
ULONG AtmArpTimerPeriod[AAT_CLASS_MAX] =
{
AAT_SHORT_DURATION_TIMER_PERIOD,
AAT_LONG_DURATION_TIMER_PERIOD
};
#ifdef ATMARP_WMI
ATMARP_WMI_GUID AtmArpGuidList[] = {
{
0, // MyId
//
// GUID_QOS_TC_SUPPORTED:
//
{0xe40056dcL,0x40c8,0x11d1,0x2c,0x91,0x00,0xaa,0x00,0x57,0x59,0x15},
0, // Flags
AtmArpWmiQueryTCSupported,
AtmArpWmiSetTCSupported,
AtmArpWmiEnableEventTCSupported
},
{
1,
//
// GUID_QOS_TC_INTERFACE_UP_INDICATION:
//
{0x0ca13af0L,0x46c4,0x11d1,0x78,0xac,0x00,0x80,0x5f,0x68,0x35,0x1e},
AWGF_EVENT_ENABLED, // Flags
AtmArpWmiQueryTCIfIndication,
AtmArpWmiSetTCIfIndication,
AtmArpWmiEnableEventTCIfIndication
},
{
2,
//
// GUID_QOS_TC_INTERFACE_DOWN_INDICATION:
//
{0xaf5315e4L,0xce61,0x11d1,0x7c,0x8a,0x00,0xc0,0x4f,0xc9,0xb5,0x7c},
AWGF_EVENT_ENABLED, // Flags
AtmArpWmiQueryTCIfIndication,
AtmArpWmiSetTCIfIndication,
AtmArpWmiEnableEventTCIfIndication
},
{
3,
//
// GUID_QOS_TC_INTERFACE_CHANGE_INDICATION:
//
{0xda76a254L,0xce61,0x11d1,0x7c,0x8a,0x00,0xc0,0x4f,0xc9,0xb5,0x7c},
AWGF_EVENT_ENABLED, // Flags
AtmArpWmiQueryTCIfIndication,
AtmArpWmiSetTCIfIndication,
AtmArpWmiEnableEventTCIfIndication
}
#if 0
,
{
4,
//
// GUID_QOS_STATISTICS_BUFFER:
//
{0xbb2c0980L,0xe900,0x11d1,0xb0,0x7e,0x00,0x80,0xc7,0x13,0x82,0xbf},
0, // Flags
AtmArpWmiQueryStatisticsBuffer,
AtmArpWmiSetStatisticsBuffer,
NULL
}
#endif // 0
};
ULONG AtmArpGuidCount = sizeof(AtmArpGuidList) / sizeof(ATMARP_WMI_GUID);
#ifdef BACK_FILL
#ifdef ATMARP_WIN98
ULONG AtmArpDoBackFill = 0;
#else
ULONG AtmArpDoBackFill = 0;
#endif
ULONG AtmArpBackFillCount = 0;
#endif // BACK_FILL
#endif // ATMARP_WMI