windows-nt/Source/XPSP1/NT/net/rras/ipx/inc/fwif.h
2020-09-26 16:20:57 +08:00

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_