236 lines
5.2 KiB
C
236 lines
5.2 KiB
C
/*++
|
|
|
|
Copyright (c) 1995 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
fwif.h
|
|
|
|
Abstract:
|
|
|
|
This module contains the definitions of the internal Forwarder APIs
|
|
used by the router manager
|
|
|
|
Author:
|
|
|
|
Stefan Solomon 03/16/1995
|
|
|
|
Revision History:
|
|
|
|
|
|
--*/
|
|
|
|
#ifndef _FWIF_
|
|
#define _FWIF_
|
|
|
|
//*********************************************************
|
|
// *
|
|
// Forwarder Module APIs *
|
|
// *
|
|
//*********************************************************
|
|
|
|
//
|
|
// Forwarder Interface Management
|
|
//
|
|
|
|
// Forwarder if config info
|
|
typedef struct _FW_IF_INFO {
|
|
ULONG NetbiosAccept;
|
|
ULONG NetbiosDeliver;
|
|
} FW_IF_INFO, *PFW_IF_INFO;
|
|
|
|
// Forwarder if statistics
|
|
typedef IPX_IF_STATS FW_IF_STATS, *PFW_IF_STATS;
|
|
|
|
typedef struct _FW_DIAL_REQUEST {
|
|
ULONG IfIndex; // Interface from which packet came
|
|
UCHAR Packet[30]; // Packet that caused the
|
|
// the connection (at least size of the
|
|
// IPX header)
|
|
} FW_DIAL_REQUEST, *PFW_DIAL_REQUEST;
|
|
|
|
|
|
DWORD
|
|
FwStart (
|
|
ULONG RouteHashTableSize,
|
|
BOOL ThisMachineOnly // allow access to this machine only
|
|
); // for dialin clients
|
|
|
|
DWORD
|
|
FwStop (
|
|
void
|
|
);
|
|
|
|
DWORD
|
|
FwUpdateConfig(
|
|
BOOL ThisMachineOnly
|
|
);
|
|
|
|
DWORD
|
|
FwCreateInterface (
|
|
IN ULONG InterfaceIndex,
|
|
IN NET_INTERFACE_TYPE InterfaceType,
|
|
IN PFW_IF_INFO FwIfInfo
|
|
);
|
|
|
|
DWORD
|
|
FwDeleteInterface (
|
|
IN ULONG InterfaceIndex);
|
|
|
|
DWORD
|
|
FwSetInterface (
|
|
IN ULONG InterfaceIndex,
|
|
IN PFW_IF_INFO FwIfInfo
|
|
);
|
|
|
|
DWORD
|
|
FwGetInterface (
|
|
IN ULONG InterfaceIndex,
|
|
OUT PFW_IF_INFO FwIfInfo,
|
|
OUT PFW_IF_STATS FwIfStats
|
|
);
|
|
|
|
//
|
|
// This call tells the forwarder that the respective interface is connected
|
|
// via the specified adapter
|
|
//
|
|
DWORD
|
|
FwBindFwInterfaceToAdapter (
|
|
IN ULONG InterfaceIndex,
|
|
IN PIPX_ADAPTER_BINDING_INFO AdptBindingInfo
|
|
);
|
|
|
|
//
|
|
// This call tells the forwarder that the connected interface has been
|
|
// disconnected.
|
|
//
|
|
|
|
DWORD
|
|
FwUnbindFwInterfaceFromAdapter (
|
|
IN ULONG InterfaceIndex
|
|
);
|
|
|
|
//
|
|
// This call tells the forwarder that the respective interface is disabled
|
|
// and should be ignored by the forwarder
|
|
//
|
|
|
|
DWORD
|
|
FwDisableFwInterface (
|
|
IN ULONG InterfaceIndex
|
|
);
|
|
|
|
//
|
|
// This call tells the forwarder that the respective interface is reenabled
|
|
// and should be operated on as ususal
|
|
//
|
|
|
|
DWORD
|
|
FwEnableFwInterface (
|
|
IN ULONG InterfaceIndex
|
|
);
|
|
|
|
// Ioctl is sent to forwarder which completes when an interface
|
|
// requires dial out connection.
|
|
// When Ioctl completes, lpOverlapped->hEvent will be signalled:
|
|
// GetNotificationResult should be called to get final result of the
|
|
// operation and the number bytes placed into the request buffer
|
|
DWORD
|
|
FwNotifyConnectionRequest (
|
|
OUT PFW_DIAL_REQUEST Request, // Buffer to be filled with interface index
|
|
//that requires connection plus packet
|
|
// that forced it
|
|
IN ULONG RequestSize, // Size of the buffer (must at least
|
|
// be sizeof (FW_DIAL_REQUEST)
|
|
IN LPOVERLAPPED lpOverlapped // structure for asyncrhronous
|
|
// operation, hEvent must be set
|
|
);
|
|
|
|
|
|
// Returns result of notification request. Should be called when
|
|
// the event set in the lpOverlapped structure is signalled.
|
|
//
|
|
DWORD
|
|
FwGetNotificationResult (
|
|
IN LPOVERLAPPED lpOverlapped,
|
|
OUT PULONG nBytes // Number of bytes placed into
|
|
// the request buffer
|
|
);
|
|
|
|
//
|
|
// Call to tell the forwarder that its connection request on a certain interface
|
|
// cannot be completed.
|
|
// The reason this cannot get completed is one of:
|
|
//
|
|
// 1. The physical connection failed. This is made known to the router manager
|
|
// by DDM calling InterfaceNotReachable.
|
|
// 2. The physical connection succeded ok but the IPXCP negotiation failed.
|
|
// 3. IPXCP negotiation completed ok but IPXWAN negotiation failed.
|
|
//
|
|
|
|
DWORD
|
|
FwConnectionRequestFailed (
|
|
IN ULONG InterfaceIndex
|
|
);
|
|
|
|
|
|
//
|
|
// Informs forwarder that route to the destination network has changed
|
|
//
|
|
VOID
|
|
FwUpdateRouteTable (
|
|
DWORD ChangeFlags,
|
|
PVOID CurRoute,
|
|
PVOID PrevRoute
|
|
);
|
|
|
|
//
|
|
// Sets the netbios static routing information on this interface
|
|
//
|
|
|
|
DWORD
|
|
FwSetStaticNetbiosNames(ULONG InterfaceIndex,
|
|
ULONG NetbiosNamesCount,
|
|
PIPX_STATIC_NETBIOS_NAME_INFO NetbiosName);
|
|
|
|
//
|
|
// Gets the netbios static routing information on this interface
|
|
//
|
|
// If NetbiosNamesCount < nr of names or NetbiosName == NULL then set the
|
|
// correct value in NetbiosNamesCount and return ERROR_INSUFFICIENT_BUFFER
|
|
|
|
DWORD
|
|
FwGetStaticNetbiosNames(ULONG InterfaceIndex,
|
|
PULONG NetbiosNamesCount,
|
|
PIPX_STATIC_NETBIOS_NAME_INFO NetbiosName);
|
|
|
|
|
|
|
|
//
|
|
// *** Traffic Filters ***
|
|
//
|
|
|
|
|
|
#define IPX_TRAFFIC_FILTER_INBOUND 1
|
|
#define IPX_TRAFFIC_FILTER_OUTBOUND 2
|
|
|
|
DWORD
|
|
SetFilters(ULONG InterfaceIndex,
|
|
ULONG FilterMode, // inbound, outbound
|
|
ULONG FilterAction,
|
|
ULONG FilterSize,
|
|
LPVOID FilterInfo,
|
|
ULONG FilterInfoSize);
|
|
|
|
DWORD
|
|
GetFilters(IN ULONG InterfaceIndex,
|
|
IN ULONG FilterMode, // inbound, outbound
|
|
OUT PULONG FilterAction,
|
|
OUT PULONG FilterSize,
|
|
OUT LPVOID FilterInfo,
|
|
IN OUT PULONG FilterInfoSize);
|
|
|
|
|
|
|
|
#endif // _FWIF_
|