Windows NT 4.0 source code leak
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

/*++
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);