ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

lan.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.