226 lines
4.1 KiB
C
226 lines
4.1 KiB
C
/*++
|
|
|
|
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)
|
|
|
|
// MASK 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_
|