windows-nt/Source/XPSP1/NT/net/config/netcfg/tcpipcfg/tcpip.h
2020-09-26 16:20:57 +08:00

273 lines
7.9 KiB
C++

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1997.
//
// File: T C P I P . H
//
// Contents: Tcpip config memory structure definitions
//
// Notes:
//
// Author: tongl 13 Nov, 1997
//
//----------------------------------------------------------------------------
#pragma once
#include "ncstring.h"
#define ZERO_ADDRESS L"0.0.0.0"
#define FF_ADDRESS L"255.0.0.0"
typedef vector<tstring *> VSTR;
typedef VSTR::iterator VSTR_ITER;
typedef VSTR::const_iterator VSTR_CONST_ITER;
//(08/18/98 nsun): for multiple interfaces of WAN adapters
typedef vector<GUID> IFACECOL; // interface collection
typedef IFACECOL::iterator IFACEITER; // interface iterator
struct HANDLES
{
HWND m_hList;
HWND m_hAdd;
HWND m_hEdit;
HWND m_hRemove;
HWND m_hUp;
HWND m_hDown;
};
//
// ADAPTER_INFO data strucut:
// contains adapter specific info for Tcpip
//
enum BindingState
{
BINDING_ENABLE,
BINDING_DISABLE,
BINDING_UNSET
};
enum ConnectionType
{
CONNECTION_LAN,
CONNECTION_RAS_PPP,
CONNECTION_RAS_SLIP,
CONNECTION_RAS_VPN,
CONNECTION_UNSET
};
struct BACKUP_CFG_INFO
{
tstring m_strIpAddr;
tstring m_strSubnetMask;
tstring m_strDefGw;
tstring m_strPreferredDns;
tstring m_strAlternateDns;
tstring m_strPreferredWins;
tstring m_strAlternateWins;
BOOL m_fAutoNet;
};
struct ADAPTER_INFO
{
private:
ADAPTER_INFO(const& ADAPTER_INFO); // do not allow others to use!
public:
ADAPTER_INFO() {}
~ADAPTER_INFO();
ADAPTER_INFO & operator=(const ADAPTER_INFO & info); // copy operator
HRESULT HrSetDefaults(const GUID* pguid,
PCWSTR szNetCardDescription,
PCWSTR szNetCardBindName,
PCWSTR szNetCardTcpipBindPath);
void ResetOldValues();
public:
//There is no Pnp for the backup config info
BACKUP_CFG_INFO m_BackupInfo;
// If the netcard has been unbound from NCPA (or anywhere else)
BindingState m_BindingState;
// Remember the initial bind state of the adapter
BindingState m_InitialBindingState;
// Inst Guid of net card ( we get the guid to identify cards from answer file )
// tstring m_strServiceName;
GUID m_guidInstanceId;
// Bindname of the net card, such as El59x1{inst guid}
tstring m_strBindName;
// Bind path name from Tcpip's linkage\Bind key to the adapter
tstring m_strTcpipBindPath;
// Bind path name from NetBt's linkage key to the adapter
tstring m_strNetBtBindPath;
// User viewable net card description
tstring m_strDescription;
tstring m_strDnsDomain; // DNS -> Domain name
tstring m_strOldDnsDomain;
VSTR m_vstrIpAddresses; // IP Address
VSTR m_vstrOldIpAddresses;
VSTR m_vstrSubnetMask; // SubnetMask
VSTR m_vstrOldSubnetMask;
VSTR m_vstrDefaultGateway; // Default Gateways
VSTR m_vstrOldDefaultGateway;
VSTR m_vstrDefaultGatewayMetric; // Default gateway metrics
VSTR m_vstrOldDefaultGatewayMetric;
VSTR m_vstrDnsServerList; // DNS -> DNS server Search Order list
VSTR m_vstrOldDnsServerList;
VSTR m_vstrWinsServerList; // WINS -> WINS server Serach Order list
VSTR m_vstrOldWinsServerList;
// $REVIEW (tongl 9/6/98)Filter information (Added per bugs #109161, #216559)
VSTR m_vstrTcpFilterList; // Options -> Filterng -> TCP Ports
VSTR m_vstrOldTcpFilterList;
VSTR m_vstrUdpFilterList; // Options -> Filterng -> UDP Ports
VSTR m_vstrOldUdpFilterList;
VSTR m_vstrIpFilterList; // Options -> Filterng -> IP Protocols
VSTR m_vstrOldIpFilterList;
// ATMARP client configurable parameters ( all per adapter based )
VSTR m_vstrARPServerList; // list of ARP server addresses
VSTR m_vstrOldARPServerList;
VSTR m_vstrMARServerList; // list of MAR server addresses
VSTR m_vstrOldMARServerList;
DWORD m_dwMTU; // Maximum Transmission Unit
DWORD m_dwOldMTU;
DWORD m_dwInterfaceMetric; // metric for interface-local routes
DWORD m_dwOldInterfaceMetric;
DWORD m_dwNetbiosOptions; // (New, added inNT5 Beta2): Option to turn NetBt off
DWORD m_dwOldNetbiosOptions;
// RAS connection specific parameters
// No dynamic reconfig, so no need to remember old values
DWORD m_dwFrameSize;
BOOL m_fUseRemoteGateway : 1;
BOOL m_fUseIPHeaderCompression : 1;
BOOL m_fIsDemandDialInterface : 1;
BOOL m_fEnableDhcp : 1; // DHCP Enable -> Obtain an IP Address from a DHCP Server
BOOL m_fOldEnableDhcp : 1;
BOOL m_fDisableDynamicUpdate : 1; // Disable Ip address dynamic update on DNS server
BOOL m_fOldDisableDynamicUpdate : 1;
BOOL m_fEnableNameRegistration : 1;
BOOL m_fOldEnableNameRegistration : 1;
BOOL m_fPVCOnly : 1; // PVC only
BOOL m_fOldPVCOnly : 1;
// Is this card only added from answerfile,
// i.e. not on binding path to Tcpip yet
BOOL m_fIsFromAnswerFile : 1;
// Is this an ATM card ?
// ( ATM cards needs extra property page for ARP Client configuration)
BOOL m_fIsAtmAdapter : 1;
// Is this a WanAdapter ?
// ( Wan adapters only have static parameters and don't show in UI)
BOOL m_fIsWanAdapter : 1;
// Is this a 1394 NET device?
// (1394 devices currently do not need any special properties,
// but they are associated with a specific arp module).
BOOL m_fIs1394Adapter : 1;
// Is this an fake adapter that represents a RAS connection,
// but is not an adapter and does not bind
BOOL m_fIsRasFakeAdapter : 1;
// Is the card marked as for deletion
BOOL m_fDeleted : 1;
// Has this card been newly added. Valid only after calling
// MarkNewlyAddedCards.
// or Has the interfaces of the card been changed if it is a WAN adapter
// Previously was m_fNewlyAdded
BOOL m_fNewlyChanged : 1;
// (08/18/98 nsun) added for multiple interfaces of WAN adapters
// m_IfaceIds: collection of interface IDs
BOOL m_fIsMultipleIfaceMode : 1;
BOOL m_fBackUpSettingChanged : 1;
IFACECOL m_IfaceIds;
};
typedef vector<ADAPTER_INFO *> VCARD;
//
// GLOBAL_INFO - TCP/IP global information data structure.
struct GLOBAL_INFO
{
public:
tstring m_strHostName; // DNS Host Name
tstring m_strHostNameFromAnswerFile; // DNS Host Name from the answerfile
//IPSec is removed from connection UI
/*
tstring m_strIpsecPol; // the ipsec local policy
GUID m_guidIpsecPol;
*/
VSTR m_vstrDnsSuffixList; // DNS: domain search suffix list
VSTR m_vstrOldDnsSuffixList;
BOOL m_fEnableLmHosts : 1; // WINS -> Enable LMHOSTS Lookup
BOOL m_fOldEnableLmHosts : 1;
BOOL m_fUseDomainNameDevolution : 1; // DNS: whether parent doamins should be searched
BOOL m_fOldUseDomainNameDevolution : 1;
BOOL m_fEnableRouter : 1; // ROUTING -> Enable IP Forwarding
// unattended install for RRAS
BOOL m_fEnableIcmpRedirect : 1;
BOOL m_fDeadGWDetectDefault : 1;
BOOL m_fDontAddDefaultGatewayDefault : 1;
// $REVIEW (tongl 9/6/98)Filter information (Added per bugs #109161, #216559)
BOOL m_fEnableFiltering : 1; // Options -> Filtering -> Enabled Filtering
BOOL m_fOldEnableFiltering : 1;
private:
GLOBAL_INFO(const & GLOBAL_INFO); // no not allow others to use!
public:
GLOBAL_INFO() {};
~GLOBAL_INFO();
GLOBAL_INFO& operator=(GLOBAL_INFO& glb); // copy operator
HRESULT HrSetDefaults();
void ResetOldValues();
};