|
|
/*++
Copyright (c) 1998, Microsoft Corporation
Module Name:
natio.h
Abstract:
This module contains declarations for the NAT's I/O interface to the kernel-mode driver. It also contains the user-mode stubs which proxy router-manager requests to the kernel-mode driver.
Author:
Abolade Gbadegesin (aboladeg) 10-Mar-1998
Revision History:
--*/
#ifndef _NATHLP_NATIO_H_
#define _NATHLP_NATIO_H_
//
// Structure: NAT_INTERFACE
//
// This structure describes an interface which has been created with the NAT.
// Each interface is inserted into the list of interfaces, sorted by 'Index'.
// Access to the list of interfaces is controlled by 'NatInterfaceLock'.
//
typedef struct _NAT_INTERFACE { LIST_ENTRY Link; ULONG Index; ULONG AdapterIndex; ROUTER_INTERFACE_TYPE Type; ULONG Flags; PIP_NAT_INTERFACE_INFO Info; } NAT_INTERFACE, *PNAT_INTERFACE;
#define NAT_INTERFACE_FLAG_ADDED_FTP 0x80000000
#define NAT_INTERFACE_ADDED_FTP(i) \
((i)->Flags & NAT_INTERFACE_FLAG_ADDED_FTP)
#define NAT_INTERFACE_FLAG_BOUND 0x40000000
#define NAT_INTERFACE_BOUND(i) \
((i)->Flags & NAT_INTERFACE_FLAG_BOUND)
// 0x20000000 is available
#define NAT_INTERFACE_FLAG_ADDED_H323 0x10000000
#define NAT_INTERFACE_ADDED_H323(i) \
((i)->Flags & NAT_INTERFACE_FLAG_ADDED_H323)
#define NAT_INTERFACE_FLAG_ADDED_ALG 0x08000000
#define NAT_INTERFACE_ADDED_ALG(i) \
((i)->Flags & NAT_INTERFACE_FLAG_ADDED_ALG)
//
// GLOBAL VARIABLE DECLARATIONS
//
extern HANDLE NatFileHandle; extern LIST_ENTRY NatInterfaceList; extern CRITICAL_SECTION NatInterfaceLock;
//
// FUNCTION DECLARATIONS
//
ULONG NatBindInterface( ULONG Index, PNAT_INTERFACE Interfacep OPTIONAL, PIP_ADAPTER_BINDING_INFO BindingInfo, ULONG AdapterIndex );
VOID NatCloseDriver( HANDLE FileHandle );
ULONG NatConfigureDriver( PIP_NAT_GLOBAL_INFO GlobalInfo );
ULONG NatConfigureInterface( ULONG Index, PIP_NAT_INTERFACE_INFO InterfaceInfo );
ULONG NatCreateInterface( ULONG Index, NET_INTERFACE_TYPE Type, PIP_NAT_INTERFACE_INFO InterfaceInfo );
ULONG NatCreateTicket( ULONG InterfaceIndex, UCHAR Protocol, USHORT PublicPort, ULONG PublicAddress, USHORT PrivatePort, ULONG PrivateAddress );
ULONG NatDeleteInterface( ULONG Index );
ULONG NatDeleteTicket( ULONG InterfaceIndex, UCHAR Protocol, USHORT PublicPort, ULONG PublicAddress, USHORT PrivatePort, ULONG PrivateAddress );
#define NAT_IF_CHAR_BOUNDARY 0x00000001
#define NAT_IF_CHAR_PRIVATE 0x00000002
#define NAT_IF_CHAR_FW 0x00000004
#define NAT_IFC_BOUNDARY(_Flags) \
((_Flags) & NAT_IF_CHAR_BOUNDARY)
#define NAT_IFC_PRIVATE(_Flags) \
((_Flags) & NAT_IF_CHAR_PRIVATE)
#define NAT_IFC_FW(_Flags) \
((_Flags) & NAT_IF_CHAR_FW)
ULONG NatGetInterfaceCharacteristics( ULONG Index );
VOID NatInstallApplicationSettings( VOID );
BOOLEAN NatIsBoundaryInterface( ULONG Index, PBOOLEAN IsNatInterface OPTIONAL );
ULONG NatLoadDriver( OUT PHANDLE FileHandle, PIP_NAT_GLOBAL_INFO GlobalInfo );
ULONG NatOpenDriver( OUT PHANDLE FileHandle );
ULONG NatQueryInterface( ULONG Index, PIP_NAT_INTERFACE_INFO InterfaceInfo, PULONG InterfaceInfoSize );
ULONG NatQueryInterfaceMappingTable( ULONG Index, PIP_NAT_ENUMERATE_SESSION_MAPPINGS EnumerateTable, PULONG EnumerateTableSize );
ULONG NatQueryMappingTable( PIP_NAT_ENUMERATE_SESSION_MAPPINGS EnumerateTable, PULONG EnumerateTableSize );
ULONG NatQueryStatisticsInterface( ULONG Index, PIP_NAT_INTERFACE_STATISTICS InterfaceStatistics, PULONG InterfaceStatisticsSize );
VOID NatRemoveApplicationSettings( VOID );
ULONG NatUnbindInterface( ULONG Index, PNAT_INTERFACE Interfacep OPTIONAL );
ULONG NatUnloadDriver( HANDLE FileHandle );
ULONG NatLookupPortMappingAdapter( ULONG AdapterIndex, UCHAR Protocol, ULONG PublicAddress, USHORT PublicPort, PIP_NAT_PORT_MAPPING PortMappingp );
#endif // _NATHLP_NATIO_H_
|