mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
302 lines
6.2 KiB
302 lines
6.2 KiB
/*++
|
|
|
|
Copyright (c) 1989 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
depend.h
|
|
|
|
Abstract:
|
|
|
|
|
|
Author:
|
|
|
|
Garth Conboy (Pacer Software)
|
|
Nikhil Kamkolkar (NikhilK)
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
typedef enum {
|
|
ADD_ADDRESSTOLIST,
|
|
REMOVE_ADDRESSFROMLIST,
|
|
} SET_LIST;
|
|
|
|
//
|
|
// Most all ndis requests execute asynchronously. All requests made
|
|
// through NdisRequest can potentially return STATUS_PENDING. We only
|
|
// use SET/GET multicast, SET packet filter, GET Address calls. The
|
|
// portable stack has no capability to handle asynchronous completion
|
|
// of these routines. So we need to block until completion if STATUS_PENDING
|
|
// is returned.
|
|
//
|
|
// The problem is that NdisRequest does not have any context field that we
|
|
// could pass. So we use the ATALK_NDIS_REQUEST structure with an event
|
|
// field inside of it that can be cleard in the completion routine.
|
|
//
|
|
// The other problem is that GET/SET multicast could potentially be called
|
|
// at DPC level. We cannot block at DPC level, so we use the flag in the
|
|
// structure to indicate that we don't care about the completion status
|
|
// if the request completes asynchronously. As far as the portable stack
|
|
// is concerned, STATUS_SUCCESS and STATUS_PENDING translate to SUCCESSFUL.
|
|
//
|
|
// Synchronous: Request must execute synchronously. This must only be used
|
|
// for calls made at init time only.
|
|
//
|
|
// SynchronousIfPossible: Request can execute asynchronously, STATUS_PENDING
|
|
// is success, completion routine must handle any errors. BUT
|
|
// if irql level allows, then this will execute synchronously.
|
|
//
|
|
|
|
|
|
typedef enum {
|
|
|
|
SYNC,
|
|
SYNC_IF_POSSIBLE,
|
|
ASYNC
|
|
|
|
} REQUEST_METHOD;
|
|
|
|
|
|
#define Build802dot2header(Packet, Protocol) \
|
|
{ \
|
|
(Packet)[IEEE8022_DSAPOFFSET] = SNAP_SAP; \
|
|
(Packet)[IEEE8022_SSAPOFFSET] = SNAP_SAP; \
|
|
(Packet)[IEEE8022_CONTROLOFFSET] = UNNUMBERED_INFORMATION; \
|
|
if (Protocol == AppleTalk) { \
|
|
MoveMem( \
|
|
(Packet) + IEEE8022_PROTOCOLOFFSET, \
|
|
appleTalkProtocolType, \
|
|
IEEE8022_PROTOCOLTYPELENGTH); \
|
|
} else { \
|
|
MoveMem( \
|
|
(Packet) + IEEE8022_PROTOCOLOFFSET, \
|
|
aarpProtocolType, \
|
|
IEEE8022_PROTOCOLTYPELENGTH); \
|
|
} \
|
|
}
|
|
|
|
typedef VOID TRANSMIT_COMPLETION(
|
|
APPLETALK_ERROR Error,
|
|
ULONG UserData,
|
|
PVOID Chain);
|
|
|
|
//
|
|
// ETHERNET Depend level routines
|
|
//
|
|
|
|
VOID
|
|
NTEthernetPacketInAARP(
|
|
int Port,
|
|
PCHAR Packet,
|
|
int Length);
|
|
|
|
VOID
|
|
NTEthernetPacketInAT(
|
|
int Port,
|
|
PCHAR Packet,
|
|
int Length);
|
|
|
|
BOOLEAN
|
|
NTEthernetPacketOut(
|
|
int Port,
|
|
BufferDescriptor Chain,
|
|
int Length,
|
|
TRANSMIT_COMPLETION *TransmitCompleteRoutine,
|
|
ULONG UserData);
|
|
|
|
BOOLEAN
|
|
NTFindMyEthernetAddress(
|
|
int Port,
|
|
PCHAR ControllerInfo,
|
|
PCHAR Address);
|
|
|
|
BOOLEAN
|
|
NTRemoveEthernetMulticastAddrs(
|
|
int Port,
|
|
int NumberOfAddresses,
|
|
PCHAR AddressList);
|
|
|
|
BOOLEAN
|
|
NTAddEthernetMulticastAddresses(
|
|
int Port,
|
|
int NumberOfAddresses,
|
|
PCHAR AddressList);
|
|
|
|
BOOLEAN
|
|
NTInitializeEthernetController(
|
|
int Port,
|
|
PCHAR ControllerInfo);
|
|
|
|
|
|
PCHAR
|
|
NTBuildEthernetHeader(
|
|
PUCHAR DdpPacket,
|
|
int DdpLength,
|
|
int Port,
|
|
PUCHAR Destination,
|
|
PUCHAR RoutingInfo,
|
|
int RoutingInfoLength,
|
|
LOGICAL_PROTOCOL Protocol);
|
|
|
|
//
|
|
// TOKENRING Routines
|
|
//
|
|
|
|
|
|
BOOLEAN
|
|
NTInitializeTokenRingController(
|
|
int Port,
|
|
PCHAR ControllerInfo);
|
|
|
|
BOOLEAN
|
|
NTAddTokenRingFunctionalAddresses(
|
|
int Port,
|
|
int NumberOfAddresses,
|
|
PCHAR Address);
|
|
|
|
BOOLEAN
|
|
NTRemoveTokenRingFunctionalAddresses(
|
|
int Port,
|
|
int NumberOfAddresses,
|
|
PCHAR Address);
|
|
|
|
BOOLEAN
|
|
NTFindMyTokenRingAddress(
|
|
int Port,
|
|
PCHAR ControllerInfo,
|
|
PCHAR Address);
|
|
|
|
BOOLEAN
|
|
NTTokenRingPacketOut(
|
|
int Port,
|
|
BufferDescriptor Chain,
|
|
int Length,
|
|
TRANSMIT_COMPLETION *TransmitCompleteRoutine,
|
|
ULONG UserData);
|
|
|
|
PCHAR
|
|
NTBuildTokenRingHeader(
|
|
PCHAR DdpPacket,
|
|
int DdpLength,
|
|
int port,
|
|
PCHAR Destination,
|
|
PCHAR RoutingInfo,
|
|
int RoutingInfoLength,
|
|
LOGICAL_PROTOCOL Protocol);
|
|
|
|
//
|
|
// LOCALTALK Routines
|
|
//
|
|
|
|
BOOLEAN
|
|
NTInitializeLocalTalkController(
|
|
int Port,
|
|
PCHAR ControllerInfo);
|
|
|
|
int
|
|
FindLocalTalkNodeNumber(
|
|
int Port,
|
|
ExtendedAppleTalkNodeNumber desiredAddress,
|
|
PCHAR ControllerInfo);
|
|
|
|
BOOLEAN
|
|
NTLocalTalkPacketOut(
|
|
int Port,
|
|
BufferDescriptor Chain,
|
|
int Length,
|
|
TRANSMIT_COMPLETION *TransmitCompleteRoutine,
|
|
ULONG UserData);
|
|
|
|
BOOLEAN
|
|
NTFindMyLocalTalkAddress(
|
|
int Port,
|
|
PCHAR ControllerInfo,
|
|
PCHAR Address);
|
|
|
|
PCHAR
|
|
NTBuildLocalTalkHeader(
|
|
PCHAR DdpPacket,
|
|
int ExtendedDdpHeaderFlag,
|
|
int Port,
|
|
PCHAR Destination,
|
|
PCHAR RoutingInfo,
|
|
int RoutingInfoLength,
|
|
LOGICAL_PROTOCOL Protocol);
|
|
|
|
//
|
|
// FDDI Routines
|
|
//
|
|
|
|
|
|
BOOLEAN
|
|
NTInitializeFddiController(
|
|
int Port,
|
|
PCHAR ControllerInfo);
|
|
|
|
BOOLEAN
|
|
NTAddFddiMulticastAddresses(
|
|
int Port,
|
|
int NumberOfAddresses,
|
|
PCHAR AddressList);
|
|
|
|
BOOLEAN
|
|
NTRemoveFddiMulticastAddrs(
|
|
INT Port,
|
|
INT NumberOfAddresses,
|
|
PCHAR AddressList);
|
|
|
|
BOOLEAN
|
|
NTFindMyFddiAddress(
|
|
int Port,
|
|
PCHAR ControllerInfo,
|
|
PCHAR Address);
|
|
|
|
BOOLEAN
|
|
NTFddiPacketOut(
|
|
int Port,
|
|
BufferDescriptor Chain,
|
|
int Length,
|
|
TRANSMIT_COMPLETION *TransmitCompleteRoutine,
|
|
ULONG UserData);
|
|
|
|
PCHAR
|
|
NTBuildFddiHeader(
|
|
PCHAR DdpPacket,
|
|
int DdpLength,
|
|
int port,
|
|
PCHAR Destination,
|
|
PCHAR RoutingInfo,
|
|
int RoutingInfoLength,
|
|
LOGICAL_PROTOCOL Protocol);
|
|
|
|
//
|
|
// HALF-PORT SUPPORT
|
|
//
|
|
|
|
BOOLEAN
|
|
NTInitializeHalfPort(
|
|
int Port,
|
|
PCHAR controllerInfo);
|
|
|
|
BOOLEAN
|
|
NTHalfPortPacketOut(
|
|
int Port,
|
|
BufferDescriptor Chain,
|
|
int Length,
|
|
TRANSMIT_COMPLETION
|
|
*TransmitCompleteHandler,
|
|
ULONG UserData);
|
|
|
|
|
|
PCHAR
|
|
NTBuildHalfPortHeader(
|
|
PCHAR DdpPacket,
|
|
int DdpLength,
|
|
int port,
|
|
PCHAR Destination,
|
|
PCHAR RoutingInfo,
|
|
int RoutingInfoLength,
|
|
LOGICAL_PROTOCOL Protocol);
|
|
|