|
|
/*++
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_
|