update for HEAD-2003091401
[reactos.git] / drivers / net / tcpip / include / lan.h
1 /*
2  * COPYRIGHT:   See COPYING in the top level directory
3  * PROJECT:     ReactOS TCP/IP protocol driver
4  * FILE:        include/lan.h
5  * PURPOSE:     LAN adapter definitions
6  */
7 #ifndef __LAN_H
8 #define __LAN_H
9
10
11 /* Medias we support */
12 #define MEDIA_ETH 0
13
14 #define MAX_MEDIA 1
15
16 #define IEEE_802_ADDR_LENGTH 6
17
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;
24
25 #define MAX_MEDIA_ETH sizeof(ETH_HEADER)
26
27 /* Broadcast masks */
28 #define BCAST_ETH_MASK 0x01
29
30 /* Broadcast values to check against */
31 #define BCAST_ETH_CHECK 0x01
32
33 /* Offset of broadcast address */
34 #define BCAST_ETH_OFFSET 0x00
35
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;
61
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
67
68 /* Size of out lookahead buffer */
69 #define LOOKAHEAD_SIZE  128
70
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)
76
77 /* Protocols */
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 */
81
82
83 NDIS_STATUS LANRegisterAdapter(
84     PNDIS_STRING AdapterName);
85
86 NDIS_STATUS LANUnregisterAdapter(
87     PLAN_ADAPTER Adapter);
88
89 NTSTATUS LANRegisterProtocol(
90     PNDIS_STRING Name);
91
92 VOID LANUnregisterProtocol(
93     VOID);
94
95 #endif /* __LAN_H */
96
97 /* EOF */