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_
|
||
|
||
|