202 lines
4.9 KiB
C
202 lines
4.9 KiB
C
|
/*++
|
|||
|
|
|||
|
Copyright (c) 1992 Microsoft Corporation
|
|||
|
|
|||
|
Module Name:
|
|||
|
|
|||
|
aarp.h
|
|||
|
|
|||
|
Abstract:
|
|||
|
|
|||
|
This module contains information for the Appletalk Address Resolution Protocol.
|
|||
|
|
|||
|
Author:
|
|||
|
|
|||
|
Jameel Hyder (jameelh@microsoft.com)
|
|||
|
Nikhil Kamkolkar (nikhilk@microsoft.com)
|
|||
|
|
|||
|
Revision History:
|
|||
|
19 Jun 1992 Initial Version
|
|||
|
|
|||
|
Notes: Tab stop: 4
|
|||
|
--*/
|
|||
|
|
|||
|
#ifndef _AARP_
|
|||
|
#define _AARP_
|
|||
|
|
|||
|
#define AARP_MAX_HW_ADDR_LEN (MAX_HW_ADDR_LEN)
|
|||
|
#define AARP_MIN_HW_ADDR_LEN 1
|
|||
|
|
|||
|
#define AARP_PROTO_ADDR_LEN 4
|
|||
|
|
|||
|
// AARP offsets (skipping Link/Hardware headers):
|
|||
|
#define AARP_HW_TYPE_OFFSET 0
|
|||
|
#define AARP_PROTO_TYPE_OFFSET 2
|
|||
|
#define AARP_HW_LEN_OFFSET 4
|
|||
|
#define AARP_PROTO_LEN_OFFSET 5
|
|||
|
#define AARP_COMMAND_OFFSET 6
|
|||
|
#define AARP_SRC_ADDR_OFFSET 8
|
|||
|
|
|||
|
// AARP Command types:
|
|||
|
#define AARP_REQUEST 1
|
|||
|
#define AARP_RESPONSE 2
|
|||
|
#define AARP_PROBE 3
|
|||
|
|
|||
|
// Supposed to be (for AppleTalk phase II) 10 * 1/5 seconds... but we'll be
|
|||
|
// a little more patient.
|
|||
|
#define AARP_PROBETIMER 20 // In 100ths of a second
|
|||
|
#define AARP_PROBE_TIMER_MS 200 // In milliseconds
|
|||
|
#define AARP_NUM_PROBES 15
|
|||
|
|
|||
|
#define AARP_OFFCABLE_MASK 0x0F
|
|||
|
|
|||
|
VOID
|
|||
|
AtalkAarpPacketIn(
|
|||
|
IN OUT PPORT_DESCRIPTOR pPortDesc,
|
|||
|
IN PBYTE pLinkHdr,
|
|||
|
IN PBYTE pPkt, // Only Aarp data
|
|||
|
IN USHORT Length);
|
|||
|
|
|||
|
VOID
|
|||
|
AtalkAarpSendComplete(
|
|||
|
NDIS_STATUS Status,
|
|||
|
PBUFFER_DESC pBufDesc,
|
|||
|
struct _SEND_COMPL_INFO * pSendInfo);
|
|||
|
|
|||
|
BOOLEAN
|
|||
|
AtalkAarpGleanInfo(
|
|||
|
IN OUT PPORT_DESCRIPTOR pPortDesc,
|
|||
|
IN PBYTE SrcAddr,
|
|||
|
IN SHORT AddrLen,
|
|||
|
IN OUT PBYTE RouteInfo,
|
|||
|
IN USHORT RouteInfoLen,
|
|||
|
IN PBYTE Pkt,
|
|||
|
IN USHORT Length);
|
|||
|
|
|||
|
VOID
|
|||
|
AtalkAarpOptGleanInfo(
|
|||
|
IN OUT PPORT_DESCRIPTOR pPortDesc,
|
|||
|
IN PBYTE pLinkHdr,
|
|||
|
IN PATALK_ADDR pSrcAddr,
|
|||
|
IN PATALK_ADDR pDestAddr,
|
|||
|
IN BOOLEAN OffCablePkt);
|
|||
|
|
|||
|
ATALK_ERROR
|
|||
|
AtalkInitAarpForNodeOnPort(
|
|||
|
IN PPORT_DESCRIPTOR pPortDesc,
|
|||
|
IN BOOLEAN AllowStartupRange,
|
|||
|
IN ATALK_NODEADDR DesiredNode,
|
|||
|
IN OUT struct _ATALK_NODE ** ppAtalkNode);
|
|||
|
|
|||
|
BOOLEAN
|
|||
|
AtalkInitAarpForNodeInRange(
|
|||
|
IN PPORT_DESCRIPTOR pPortDesc,
|
|||
|
IN PVOID pRasConn,
|
|||
|
IN BOOLEAN fThisIsPPP,
|
|||
|
IN ATALK_NETWORKRANGE NetworkRange,
|
|||
|
OUT PATALK_NODEADDR Node);
|
|||
|
|
|||
|
VOID
|
|||
|
AtalkAarpReleaseAmt(
|
|||
|
IN OUT PPORT_DESCRIPTOR pPortDesc);
|
|||
|
|
|||
|
VOID
|
|||
|
AtalkAarpReleaseBrc(
|
|||
|
IN OUT PPORT_DESCRIPTOR pPortDesc);
|
|||
|
|
|||
|
PBUFFER_DESC
|
|||
|
AtalkAarpBuildPacket(
|
|||
|
IN PPORT_DESCRIPTOR pPortDesc,
|
|||
|
IN USHORT Type,
|
|||
|
IN USHORT HardwareLen,
|
|||
|
IN PBYTE SrcHardwareAddr,
|
|||
|
IN ATALK_NODEADDR SrcLogicalAddr,
|
|||
|
IN PBYTE DestHardwareAddr,
|
|||
|
IN ATALK_NODEADDR DestLogicalAddr,
|
|||
|
IN PBYTE TrueDest,
|
|||
|
IN PBYTE RouteInfo,
|
|||
|
IN USHORT RouteInfoLen);
|
|||
|
|
|||
|
#define BUILD_AARPPROBE(pPortDesc,hardwareLength,Node) \
|
|||
|
AtalkAarpBuildPacket( \
|
|||
|
pPortDesc, \
|
|||
|
AARP_PROBE, \
|
|||
|
hardwareLength, \
|
|||
|
pPortDesc->pd_PortAddr, \
|
|||
|
Node, \
|
|||
|
NULL, \
|
|||
|
Node, \
|
|||
|
NULL, \
|
|||
|
NULL, \
|
|||
|
0);
|
|||
|
|
|||
|
|
|||
|
#define BUILD_AARPRESPONSE(pPortDesc,hardwareLength,hardwareAddress, \
|
|||
|
RoutingInfo,RoutingInfoLength,SourceNode, \
|
|||
|
destinationNode) \
|
|||
|
\
|
|||
|
AtalkAarpBuildPacket( \
|
|||
|
pPortDesc, \
|
|||
|
AARP_RESPONSE, \
|
|||
|
hardwareLength, \
|
|||
|
pPortDesc->pd_PortAddr, \
|
|||
|
SourceNode, \
|
|||
|
hardwareAddress, \
|
|||
|
destinationNode, \
|
|||
|
hardwareAddress, \
|
|||
|
RoutingInfo, \
|
|||
|
RoutingInfoLength);
|
|||
|
|
|||
|
#define BUILD_AARPREQUEST(pPortDesc,hardwareLength,SourceNode, \
|
|||
|
destinationNode ) \
|
|||
|
AtalkAarpBuildPacket( \
|
|||
|
pPortDesc, \
|
|||
|
AARP_REQUEST, \
|
|||
|
hardwareLength, \
|
|||
|
pPortDesc->pd_PortAddr, \
|
|||
|
SourceNode, \
|
|||
|
NULL, \
|
|||
|
destinationNode, \
|
|||
|
NULL, \
|
|||
|
NULL, \
|
|||
|
0);
|
|||
|
|
|||
|
LONG FASTCALL
|
|||
|
AtalkAarpAmtTimer(
|
|||
|
IN PTIMERLIST pTimer,
|
|||
|
IN BOOLEAN TimerShuttingDown);
|
|||
|
|
|||
|
LONG FASTCALL
|
|||
|
AtalkAarpBrcTimer(
|
|||
|
IN PTIMERLIST pTimer,
|
|||
|
IN BOOLEAN TimerShuttingDown);
|
|||
|
|
|||
|
LOCAL VOID
|
|||
|
atalkAarpEnterIntoAmt(
|
|||
|
IN PPORT_DESCRIPTOR pPortDesc,
|
|||
|
IN PATALK_NODEADDR pSrcNode,
|
|||
|
IN PBYTE SrcAddr,
|
|||
|
IN SHORT AddrLen,
|
|||
|
IN PBYTE RouteInfo,
|
|||
|
IN SHORT RouteInfoLen);
|
|||
|
|
|||
|
LOCAL BOOLEAN
|
|||
|
atalkInitAarpForNode(
|
|||
|
IN PPORT_DESCRIPTOR pPortDesc,
|
|||
|
IN PVOID pRasConn,
|
|||
|
IN BOOLEAN fThisIsPPP,
|
|||
|
IN USHORT Network,
|
|||
|
IN BYTE Node);
|
|||
|
|
|||
|
LOCAL VOID FASTCALL
|
|||
|
atalkAarpTuneRouteInfo(
|
|||
|
IN PPORT_DESCRIPTOR pPortDesc,
|
|||
|
IN OUT PBYTE RouteInfo);
|
|||
|
|
|||
|
|
|||
|
#define GET_RANDOM(min, max) (((long)AtalkRandomNumber() % \
|
|||
|
(long)(((max+1) - (min))) + (min)))
|
|||
|
|
|||
|
#endif // _AARP_
|
|||
|
|
|||
|
|