Interface for lan.sys

svn path=/trunk/; revision=10886
This commit is contained in:
Art Yerkes 2004-09-17 15:51:52 +00:00
parent 83fc2a9406
commit 77700375d6
2 changed files with 129 additions and 0 deletions

79
reactos/include/net/lan.h Normal file
View file

@ -0,0 +1,79 @@
#ifndef _NET_LAN_H
#include "net/wh.h"
#define FSCTL_LAN_BASE FILE_DEVICE_NETWORK
#define _LAN_CONTROL_CODE(Function, Method) \
CTL_CODE(FSCTL_LAN_BASE, Function, Method, FILE_WRITE_ACCESS)
#define LAN_ENUM_ADAPTERS 0
#define LAN_BUFFERED_MODE 1
#define LAN_ADAPTER_INFO 2
#define IOCTL_IF_ENUM_ADAPTERS \
_LAN_CONTROL_CODE(LAN_ENUM_ADAPTERS,METHOD_BUFFERED)
#define IOCTL_IF_BUFFERED_MODE \
_LAN_CONTROL_CODE(LAN_BUFFERED_MODE,METHOD_BUFFERED)
#define IOCTL_IF_ADAPTER_INFO \
_LAN_CONTROL_CODE(LAN_ADAPTER_INFO,METHOD_BUFFERED)
typedef struct _LAN_PACKET_HEADER_T {
UINT Adapter;
UINT AddressType;
UINT AddressLen;
UINT PacketType;
PVOID Mdl;
} LAN_PACKET_HEADER_T, *PLAN_PACKET_HEADER_T;
typedef struct _LAN_PACKET_HEADER {
LAN_PACKET_HEADER_T Fixed;
CHAR Address[1];
} LAN_PACKET_HEADER, *PLAN_PACKET_HEADER;
typedef struct _LAN_ADDRESS {
UINT Adapter;
UINT Flags;
USHORT AddressType;
USHORT AddressLen;
USHORT HWAddressType;
USHORT HWAddressLen;
CHAR Address[1];
} LAN_ADDRESS, *PLAN_ADDRESS;
typedef struct _LAN_ADAPTER_INFO_S {
UINT Index;
UINT Media;
UINT Speed;
USHORT AddressLen;
USHORT Overhead;
USHORT MTU;
USHORT RegKeySize;
} LAN_ADAPTER_INFO_S, *PLAN_ADAPTER_INFO_S;
#define LAN_DATA_PTR(PH) \
((PH)->Address + (PH)->Fixed.AddressLen)
#define LAN_ALLOC_SIZE(AddrLen,PayloadLen) \
(sizeof(LAN_PACKET_HEADER_T) + (AddrLen) + (PayloadLen))
#define LAN_PAYLOAD_SIZE(PH,Size) \
(Size - (PH)->Fixed.AddressLen - sizeof(LAN_PACKET_HEADER_T))
#define LAN_ADDR_SIZE(AddrLen,HWAddrLen) \
(sizeof(LAN_ADDRESS) - 1 + (AddrLen) + (HWAddrLen))
#define LAN_ADDR_PTR(LA) \
((LA)->Address)
#define LAN_HWADDR_PTR(LA) \
((LA)->Address + (LA)->AddressLen)
#define LAN_EA_INFO_SIZE(NumTypes) \
sizeof(FILE_FULL_EA_INFORMATION) + (6 + sizeof(USHORT) * NumTypes)
#define LAN_FILL_EA_INFO(Ea,NumTypes,Types) \
{ \
RtlCopyMemory( (Ea)->EaName, "TYPES", 6 ); \
(Ea)->EaNameLength = 6; \
(Ea)->EaValueLength = sizeof(USHORT) * (NumTypes); \
RtlCopyMemory( (Ea)->EaName + (Ea)->EaNameLength, \
(Types), \
sizeof(USHORT) * (NumTypes) ); \
}
#endif/*_NET_LAN_H*/

50
reactos/include/net/wh.h Normal file
View file

@ -0,0 +1,50 @@
#ifndef _NET_WH_H
#define _NET_WH_H
#ifdef i386
/* DWORD network to host byte order conversion for i386 */
#define DN2H(dw) \
((((dw) & 0xFF000000L) >> 24) | \
(((dw) & 0x00FF0000L) >> 8) | \
(((dw) & 0x0000FF00L) << 8) | \
(((dw) & 0x000000FFL) << 24))
/* DWORD host to network byte order conversion for i386 */
#define DH2N(dw) \
((((dw) & 0xFF000000L) >> 24) | \
(((dw) & 0x00FF0000L) >> 8) | \
(((dw) & 0x0000FF00L) << 8) | \
(((dw) & 0x000000FFL) << 24))
/* WORD network to host order conversion for i386 */
#define WN2H(w) \
((((w) & 0xFF00) >> 8) | \
(((w) & 0x00FF) << 8))
/* WORD host to network byte order conversion for i386 */
#define WH2N(w) \
((((w) & 0xFF00) >> 8) | \
(((w) & 0x00FF) << 8))
#else /* i386 */
/* DWORD network to host byte order conversion for other architectures */
#define DN2H(dw) \
(dw)
/* DWORD host to network byte order conversion for other architectures */
#define DH2N(dw) \
(dw)
/* WORD network to host order conversion for other architectures */
#define WN2H(w) \
(w)
/* WORD host to network byte order conversion for other architectures */
#define WH2N(w) \
(w)
#endif /* i386 */
#endif/*_NET_WH_H*/