Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

154 lines
3.2 KiB

/*++
Copyright (c) 1998, Microsoft Corporation
Module Name:
natconn.h
Abstract:
This module contains declarations for the NAT's RAS connection management.
Outgoing RAS client connections may be shared by associating them with
a router-interface of type ROUTER_IF_TYPE_HOME_ROUTER.
When such a connection is established by the user, we detect the connection
and create a corresponding NAT interface with the kernel-mode translator.
Author:
Abolade Gbadegesin (aboladeg) 2-May-1998
Revision History:
--*/
#ifndef _NATHLP_NATCONN_H_
#define _NATHLP_NATCONN_H_
extern HANDLE NatConnectionNotifyEvent;
extern HANDLE NatConfigurationChangedEvent;
//
// Structure : NAT_UDP_BROADCAST_MAPPING
//
typedef struct _NAT_UDP_BROADCAST_MAPPING
{
LIST_ENTRY Link;
USHORT usPublicPort;
PVOID pvCookie;
} NAT_UDP_BROADCAST_MAPPING, *PNAT_UDP_BROADCAST_MAPPING;
//
// Structure: NAT_PORT_MAPPING_ENTRY
//
typedef struct _NAT_PORT_MAPPING_ENTRY
{
LIST_ENTRY Link;
UCHAR ucProtocol;
USHORT usPublicPort;
ULONG ulPrivateAddress;
USHORT usPrivatePort;
BOOLEAN fNameActive;
BOOLEAN fUdpBroadcastMapping;
PVOID pvBroadcastCookie;
GUID *pProtocolGuid;
IHNetPortMappingProtocol *pProtocol;
IHNetPortMappingBinding *pBinding;
} NAT_PORT_MAPPING_ENTRY, *PNAT_PORT_MAPPING_ENTRY;
//
// Structure: NAT_CONNECTION_ENTRY
//
typedef struct _NAT_CONNECTION_INFO
{
LIST_ENTRY Link;
//
// Information needed to configure kernel driver
//
PIP_NAT_INTERFACE_INFO pInterfaceInfo;
PIP_ADAPTER_BINDING_INFO pBindingInfo;
NAT_INTERFACE Interface;
ULONG AdapterIndex;
//
// HNetCfg interfaces for the connection
//
IHNetConnection *pHNetConnection;
IHNetFirewalledConnection *pHNetFwConnection;
IHNetIcsPublicConnection *pHNetIcsPublicConnection;
//
// Cached information describing the connection. Storing
// this allows us to reduce roundtrips to the store.
//
HNET_CONN_PROPERTIES HNetProperties;
GUID Guid;
LPWSTR wszPhonebookPath;
//
// Stored port mapping information
//
LIST_ENTRY PortMappingList; // The length of this list is the sum of the counts
ULONG PortMappingCount;
ULONG UdpBroadcastPortMappingCount;
} NAT_CONNECTION_ENTRY, *PNAT_CONNECTION_ENTRY;
PNAT_CONNECTION_ENTRY
NatFindConnectionEntry(
GUID *pGuid
);
PNAT_PORT_MAPPING_ENTRY
NatFindPortMappingEntry(
PNAT_CONNECTION_ENTRY pConnection,
GUID *pGuid
);
VOID
NatFreePortMappingEntry(
PNAT_PORT_MAPPING_ENTRY pEntry
);
PCHAR
NatQuerySharedConnectionDomainName(
VOID
);
ULONG
NatStartConnectionManagement(
VOID
);
VOID
NatStopConnectionManagement(
VOID
);
BOOLEAN
NatUnbindAllConnections(
VOID
);
HRESULT
NatpGetTargetAddressForPortMappingEntry(
BOOLEAN fPublic,
BOOLEAN fNameActive,
ULONG BindingAddress,
IHNetPortMappingBinding *pBinding,
OUT ULONG *pPrivateAddress
);
#endif // _NATHLP_NATCONN_H_