2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS TCP/IP protocol driver
5 * PURPOSE: LAN adapter definitions
11 /* Medias we support */
16 #define IEEE_802_ADDR_LENGTH 6
18 /* Ethernet header layout */
19 typedef struct ETH_HEADER {
20 UCHAR DstAddr[IEEE_802_ADDR_LENGTH]; /* Destination MAC address */
21 UCHAR SrcAddr[IEEE_802_ADDR_LENGTH]; /* Source MAC address */
22 USHORT EType; /* Ethernet protocol type */
23 } ETH_HEADER, *PETH_HEADER;
25 #define MAX_MEDIA_ETH sizeof(ETH_HEADER)
28 #define BCAST_ETH_MASK 0x01
30 /* Broadcast values to check against */
31 #define BCAST_ETH_CHECK 0x01
33 /* Offset of broadcast address */
34 #define BCAST_ETH_OFFSET 0x00
36 /* Per adapter information */
37 typedef struct LAN_ADAPTER {
38 LIST_ENTRY ListEntry; /* Entry on list */
39 KSPIN_LOCK Lock; /* Lock for this structure */
40 UCHAR State; /* State of the adapter */
41 KEVENT Event; /* Opening event */
42 PVOID Context; /* Upper layer context information */
43 NDIS_HANDLE NdisHandle; /* NDIS binding handle */
44 NDIS_STATUS NdisStatus; /* NDIS status of last request */
45 NDIS_MEDIUM Media; /* Media type */
46 UCHAR HWAddress[IEEE_802_ADDR_LENGTH]; /* Local HW address */
47 UINT HWAddressLength; /* Length of HW address */
48 UCHAR BCastMask; /* Mask for checking broadcast */
49 UCHAR BCastCheck; /* Value to check against */
50 UCHAR BCastOffset; /* Offset in frame to check against */
51 UCHAR HeaderSize; /* Size of link-level header */
52 USHORT MTU; /* Maximum Transfer Unit */
53 UINT MinFrameSize; /* Minimum frame size in bytes */
54 UINT MaxPacketSize; /* Maximum packet size when sending */
55 UINT MaxSendPackets; /* Maximum number of packets per send */
56 UINT MacOptions; /* MAC options for NIC driver/adapter */
57 UINT Speed; /* Link speed */
58 UINT PacketFilter; /* Packet filter for this adapter */
59 PNDIS_PACKET TDPackets; /* Transfer Data packets */
60 } LAN_ADAPTER, *PLAN_ADAPTER;
62 /* LAN adapter state constants */
63 #define LAN_STATE_OPENING 0
64 #define LAN_STATE_RESETTING 1
65 #define LAN_STATE_STARTED 2
66 #define LAN_STATE_STOPPED 3
68 /* Size of out lookahead buffer */
69 #define LOOKAHEAD_SIZE 128
71 /* Ethernet types. We swap constants so we can compare values at runtime
72 without swapping them there */
73 #define ETYPE_IPv4 WH2N(0x0800)
74 #define ETYPE_IPv6 WH2N(0x0000) /* FIXME */
75 #define ETYPE_ARP WH2N(0x0806)
78 #define LAN_PROTO_IPv4 0x0000 /* Internet Protocol version 4 */
79 #define LAN_PROTO_IPv6 0x0001 /* Internet Protocol version 6 */
80 #define LAN_PROTO_ARP 0x0002 /* Address Resolution Protocol */
83 NDIS_STATUS LANRegisterAdapter(
84 PNDIS_STRING AdapterName);
86 NDIS_STATUS LANUnregisterAdapter(
87 PLAN_ADAPTER Adapter);
89 NTSTATUS LANRegisterProtocol(
92 VOID LANUnregisterProtocol(