Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenlan.h
Go to the documentation of this file.
00001 /* 00002 * COPYRIGHT: See COPYING in the top level directory 00003 * PROJECT: ReactOS TCP/IP protocol driver 00004 * FILE: include/lan.h 00005 * PURPOSE: LAN adapter definitions 00006 */ 00007 00008 #pragma once 00009 00010 /* NDIS version this driver supports */ 00011 #define NDIS_VERSION_MAJOR 4 00012 #define NDIS_VERSION_MINOR 0 00013 00014 /* Macros */ 00015 00016 #define MIN(value1, value2) \ 00017 ((value1 < value2)? value1 : value2) 00018 00019 #define MAX(value1, value2) \ 00020 ((value1 > value2)? value1 : value2) 00021 00022 #define NDIS_BUFFER_TAG FOURCC('n','b','u','f') 00023 #define NDIS_PACKET_TAG FOURCC('n','p','k','t') 00024 00025 /* Media we support */ 00026 #define MEDIA_ETH 0 00027 00028 #define MAX_MEDIA 1 00029 00030 #define IEEE_802_ADDR_LENGTH 6 00031 00032 /* Ethernet header layout */ 00033 typedef struct ETH_HEADER { 00034 UCHAR DstAddr[IEEE_802_ADDR_LENGTH]; /* Destination MAC address */ 00035 UCHAR SrcAddr[IEEE_802_ADDR_LENGTH]; /* Source MAC address */ 00036 USHORT EType; /* Ethernet protocol type */ 00037 } ETH_HEADER, *PETH_HEADER; 00038 00039 #define MAX_MEDIA_ETH sizeof(ETH_HEADER) 00040 00041 /* Broadcast masks */ 00042 #define BCAST_ETH_MASK 0x01 00043 00044 /* Broadcast values to check against */ 00045 #define BCAST_ETH_CHECK 0x01 00046 00047 /* Offset of broadcast address */ 00048 #define BCAST_ETH_OFFSET 0x00 00049 00050 typedef struct _LAN_ADDRESS_C { 00051 LIST_ENTRY ListEntry; 00052 LAN_ADDRESS ClientPart; 00053 } LAN_ADDRESS_C, *PLAN_ADDRESS_C; 00054 00055 /* Per adapter information */ 00056 typedef struct LAN_ADAPTER { 00057 LIST_ENTRY ListEntry; /* Entry on list */ 00058 LIST_ENTRY AddressList; /* Addresses associated */ 00059 LIST_ENTRY ForeignList; /* List of known addresses */ 00060 KSPIN_LOCK Lock; /* Lock for this structure */ 00061 UINT Index; /* Adapter Index */ 00062 UCHAR State; /* State of the adapter */ 00063 KEVENT Event; /* Opening event */ 00064 PVOID Context; /* Upper layer context information */ 00065 NDIS_HANDLE NdisHandle; /* NDIS binding handle */ 00066 NDIS_STATUS NdisStatus; /* NDIS status of last request */ 00067 NDIS_MEDIUM Media; /* Media type */ 00068 UCHAR HWAddress[IEEE_802_ADDR_LENGTH]; /* Local HW address */ 00069 UINT HWAddressLength; /* Length of HW address */ 00070 UCHAR BCastMask; /* Mask for checking broadcast */ 00071 UCHAR BCastCheck; /* Value to check against */ 00072 UCHAR BCastOffset; /* Offset in frame to check against */ 00073 UCHAR HeaderSize; /* Size of link-level header */ 00074 USHORT MTU; /* Maximum Transfer Unit */ 00075 UINT MinFrameSize; /* Minimum frame size in bytes */ 00076 UINT MaxPacketSize; /* Maximum packet size when sending */ 00077 UINT MaxSendPackets; /* Maximum number of packets per send */ 00078 UINT MacOptions; /* MAC options for NIC driver/adapter */ 00079 UINT Speed; /* Link speed */ 00080 UINT PacketFilter; /* Packet filter for this adapter */ 00081 UINT Lookahead; /* Lookahead for adapter */ 00082 UNICODE_STRING RegistryPath; /* Registry path for later query */ 00083 } LAN_ADAPTER, *PLAN_ADAPTER; 00084 00085 typedef struct _LAN_PACKET { 00086 PNDIS_PACKET NdisPacket; 00087 PETH_HEADER EthHeader; 00088 UINT TotalSize; 00089 } LAN_PACKET, *PLAN_PACKET; 00090 00091 typedef struct _LAN_PROTOCOL { 00092 LIST_ENTRY ListEntry; 00093 LIST_ENTRY ReadIrpListHead; 00094 UINT Id; 00095 UINT LastServicePass; 00096 UINT Buffered; 00097 UINT NumEtherTypes; 00098 USHORT EtherType[1]; 00099 } LAN_PROTOCOL, *PLAN_PROTOCOL; 00100 00101 typedef struct _LAN_DEVICE_EXT { 00102 NDIS_HANDLE NdisProtocolHandle; 00103 KSPIN_LOCK Lock; 00104 LIST_ENTRY AdapterListHead; 00105 LIST_ENTRY ProtocolListHead; 00106 UINT AdapterId; 00107 UINT ProtoId; 00108 } LAN_DEVICE_EXT, *PLAN_DEVICE_EXT; 00109 00110 /* LAN adapter state constants */ 00111 #define LAN_STATE_OPENING 0 00112 #define LAN_STATE_RESETTING 1 00113 #define LAN_STATE_STARTED 2 00114 #define LAN_STATE_STOPPED 3 00115 00116 /* Size of out lookahead buffer */ 00117 #define LOOKAHEAD_SIZE 128 00118 00119 /* Ethernet types. We swap constants so we can compare values at runtime 00120 without swapping them there */ 00121 #define ETYPE_IPv4 WH2N(0x0800) 00122 #define ETYPE_IPv6 WH2N(0x86DD) 00123 #define ETYPE_ARP WH2N(0x0806) 00124 00125 /* Protocols */ 00126 #define LAN_PROTO_IPv4 0x0000 /* Internet Protocol version 4 */ 00127 #define LAN_PROTO_IPv6 0x0001 /* Internet Protocol version 6 */ 00128 #define LAN_PROTO_ARP 0x0002 /* Address Resolution Protocol */ 00129 00130 00131 NDIS_STATUS LANRegisterAdapter( 00132 PNDIS_STRING AdapterName, 00133 PNDIS_STRING RegistryPath); 00134 00135 NDIS_STATUS LANUnregisterAdapter(PLAN_ADAPTER Adapter); 00136 00137 NTSTATUS LANRegisterProtocol(PNDIS_STRING Name); 00138 00139 VOID LANUnregisterProtocol(VOID); 00140 00141 NDIS_STATUS NDISCall( 00142 PLAN_ADAPTER Adapter, 00143 NDIS_REQUEST_TYPE Type, 00144 NDIS_OID OID, 00145 PVOID Buffer, 00146 UINT Length); 00147 00148 void GetDataPtr( PNDIS_PACKET Packet, 00149 UINT Offset, 00150 PCHAR *DataOut, 00151 PUINT Size ); 00152 00153 NDIS_STATUS AllocatePacketWithBufferX( PNDIS_PACKET *NdisPacket, 00154 PCHAR Data, UINT Len, 00155 PCHAR File, UINT Line ); 00156 00157 VOID FreeNdisPacketX( PNDIS_PACKET Packet, PCHAR File, UINT Line ); 00158 00159 NDIS_STATUS InitNdisPools(VOID); 00160 VOID CloseNdisPools(VOID); 00161 00162 PLAN_ADAPTER FindAdapterByIndex( PLAN_DEVICE_EXT DeviceExt, UINT Index ); 00163 00164 /* EOF */ Generated on Sat May 26 2012 04:26:37 for ReactOS by
1.7.6.1
|