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 struct LAN_ADAPTER
*Next
; /* Pointer to next adapter */
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 */
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 */
82 extern PLAN_ADAPTER Adapters
;
85 NDIS_STATUS
LANRegisterAdapter(
86 PNDIS_STRING AdapterName
,
87 PLAN_ADAPTER
*Adapter
);
89 NDIS_STATUS
LANUnregisterAdapter(
90 PLAN_ADAPTER Adapter
);
92 NTSTATUS
LANRegisterProtocol(
95 VOID
LANUnregisterProtocol(