154 lines
2.9 KiB
C
154 lines
2.9 KiB
C
/*++
|
|
|
|
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
|
|
);
|
|
|
|
|
|
#ifdef DIALIN_SHARING
|
|
VOID
|
|
NatProcessClientConnection(
|
|
VOID
|
|
);
|
|
#endif
|
|
|
|
PCHAR
|
|
NatQuerySharedConnectionDomainName(
|
|
VOID
|
|
);
|
|
|
|
ULONG
|
|
NatStartConnectionManagement(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
NatStopConnectionManagement(
|
|
VOID
|
|
);
|
|
|
|
BOOLEAN
|
|
NatUnbindAllConnections(
|
|
VOID
|
|
);
|
|
|
|
#endif // _NATHLP_NATCONN_H_
|