/*++ Copyright (c) 1992-1996 Microsoft Corporation Module Name: data.c Abstract: This file contains the data declarations for the atmarp server. Author: Jameel Hyder (jameelh@microsoft.com) July 1996 Environment: Kernel mode Revision History: --*/ #include #define _FILENUM_ FILENUM_DATA PDRIVER_OBJECT ArpSDriverObject = NULL; PDEVICE_OBJECT ArpSDeviceObject = NULL; NDIS_HANDLE ArpSProtocolHandle = NULL; NDIS_HANDLE ArpSPktPoolHandle = NULL; NDIS_HANDLE ArpSBufPoolHandle = NULL; NDIS_HANDLE MarsPktPoolHandle = NULL; NDIS_HANDLE MarsBufPoolHandle = NULL; PINTF ArpSIfList = NULL; ULONG ArpSIfListSize = 0; KSPIN_LOCK ArpSIfListLock = { 0 }; KQUEUE ArpSReqQueue = {0}; KQUEUE MarsReqQueue = {0}; LIST_ENTRY ArpSEntryOfDeath = {0}; KEVENT ArpSReqThreadEvent = {0}; SLIST_HEADER ArpSPktList = {0}; KSPIN_LOCK ArpSPktListLock = { 0 }; UINT ArpSBuffers = NUM_ARPS_DESC; UINT MarsPackets = NUM_MARS_DESC; PVOID ArpSBufferSpace = NULL; USHORT ArpSFlushTime = FLUSH_TIME; USHORT ArpSNumEntriesInBlock[ARP_BLOCK_TYPES] = { (BLOCK_ALLOC_SIZE - sizeof(ARP_BLOCK))/(sizeof(ARP_ENTRY) + 0), (BLOCK_ALLOC_SIZE - sizeof(ARP_BLOCK))/(sizeof(ARP_ENTRY) + sizeof(ATM_ADDRESS)), (BLOCK_ALLOC_SIZE - sizeof(ARP_BLOCK))/(sizeof(GROUP_MEMBER) + 0), (BLOCK_ALLOC_SIZE - sizeof(ARP_BLOCK))/(sizeof(CLUSTER_MEMBER) + 0), (BLOCK_ALLOC_SIZE - sizeof(ARP_BLOCK))/(sizeof(CLUSTER_MEMBER) + sizeof(ATM_ADDRESS)), (BLOCK_ALLOC_SIZE - sizeof(ARP_BLOCK))/(sizeof(MARS_ENTRY) + 0) }; USHORT ArpSEntrySize[ARP_BLOCK_TYPES] = { sizeof(ARP_ENTRY), sizeof(ARP_ENTRY) + sizeof(ATM_ADDRESS), sizeof(GROUP_MEMBER), sizeof(CLUSTER_MEMBER), sizeof(CLUSTER_MEMBER) + sizeof(ATM_ADDRESS), sizeof(MARS_ENTRY) + 0 }; BOOLEAN ArpSBlockIsPaged[ARP_BLOCK_TYPES] = { TRUE, TRUE, FALSE, FALSE, FALSE, FALSE }; #ifdef OLDSAP ATM_BLLI_IE ArpSDefaultBlli = { (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 ArpSDefaultBlli = { (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 // OLDSAP ATM_BHLI_IE ArpSDefaultBhli = { (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 }; LLC_SNAP_HDR ArpSLlcSnapHdr = { { 0xAA, 0xAA, 0x03 }, { 0x00, 0x00, 0x00 }, { 0x0608 } }; LLC_SNAP_HDR MarsCntrlLlcSnapHdr = { { 0xAA, 0xAA, 0x03 }, { 0x00, 0x00, 0x5E }, { 0x0300 } }; LLC_SNAP_HDR MarsData1LlcSnapHdr = { { 0xAA, 0xAA, 0x03 }, { 0x00, 0x00, 0x5E }, { 0x0100 } }; LLC_SNAP_HDR MarsData2LlcSnapHdr = { { 0xAA, 0xAA, 0x03 }, { 0x00, 0x00, 0x5E }, { 0x0400 } }; MARS_HEADER MarsCntrlHdr = { { { 0xAA, 0xAA, 0x03 } , { 0x00, 0x00, 0x5E } , 0x0300 }, // { 0x00, 0x0f }, // HwType or AFN 0x0f00, // { 0x08, 0x00 }, // Pro.Type 0x0008, { 0x00, 0x00, 0x00, 0x00, 0x00 }, // ProtocolSnap[] { 0x00, 0x00, 0x00 }, // Reserved[] // { 0x00, 0x00 }, // Checksum 0x0000, // { 0x00, 0x00 }, // Extension offset 0x0000, // { 0x00, 0x00 }, // OpCode 0x0000, 0x00, // SrcAddressTL 0x00 // SrcSubAddrTL }; MARS_FLOW_SPEC DefaultCCFlowSpec = { DEFAULT_SEND_BANDWIDTH, DEFAULT_MAX_PACKET_SIZE, 0, // ReceiveBandwidth for PMP is zero 0, // ReceiveMaxSize for PMP is zero SERVICETYPE_BESTEFFORT }; MARS_TLV_MULTI_IS_MCS MultiIsMcsTLV = { MARS_TLVT_MULTI_IS_MCS, 0x0000 // TLV variable part Length }; MARS_TLV_NULL NullTLV = { 0x0000, 0x0000 }; #if DBG ULONG ArpSDebugLevel = DBG_LEVEL_ERROR; ULONG MarsDebugLevel = DBG_LEVEL_ERROR; #endif