windows-nt/Source/XPSP1/NT/net/mmc/mprsnap/rtrcfg.h

951 lines
21 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
///============================================================================
// Copyright (C) Microsoft Corporation, 1997 - 1999
//
// File: rtrcfg.h
//
// Router configuration property pages
//
//============================================================================
#ifndef _RTRCFG_H
#define _RTRCFG_H
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
#ifndef _INFO_H
#include "info.h"
#endif
#ifndef _RTRSHEET_H
#include "rtrsheet.h"
#endif
#ifndef __IPCTRL_H
#include "ipctrl.h"
#endif
#ifndef __ATLKENV_H
#include "atlkenv.h"
#endif
#ifndef __IPCTRL_H
#include "ipctrl.h"
#endif
#ifndef _DIALOG_H_
#include "dialog.h"
#endif
#ifndef _ADDRPOOL_H
#include "addrpool.h"
#endif
template <class T> class Ptr {
public:
T* p;
Ptr(T* p_=NULL) : p(p_) {}
~Ptr(void) { delete p;}
operator T*(void) { return p; }
T& operator*(void) { return *p; }
T* operator->(void) { return p; }
Ptr& operator=(T* p_)
{
delete p;
p = p_;
return *this;
}
};
class RtrCfgSheet;
/*---------------------------------------------------------------------------
Struct: AdapterData
This structure is used to hold information about NICs and their GUIDs
---------------------------------------------------------------------------*/
struct AdapterData
{
CString m_stFriendlyName;
CString m_stGuid; // the identifying guid
};
typedef CList<AdapterData, AdapterData&> AdapterList;
/*---------------------------------------------------------------------------
Class: DATA_SRV_IP
Data inteface class for IP data.
---------------------------------------------------------------------------*/
class DATA_SRV_IP
{
public:
DWORD m_dwAllowNetworkAccess;
DWORD m_dwOldAllowNetworkAccess;
DWORD m_dwUseDhcp;
AddressPoolList m_addressPoolList;
CString m_stNetworkAdapterGUID;
DWORD m_dwEnableIn;
AdapterList m_adapterList;
//
// Member variable that control forwarding of NETBT
// name request broadcasts
//
DWORD m_dwEnableNetbtBcastFwd;
DWORD m_dwOldEnableNetbtBcastFwd;
// The next two variables are used by the install wizard
// specifically for NAT
CString m_stPrivateAdapterGUID;
CString m_stPublicAdapterGUID;
DATA_SRV_IP();
HRESULT LoadFromReg(LPCTSTR pServerName,
const RouterVersionInfo& routerVersion);
HRESULT SaveToReg(IRouterInfo *pRouter,
const RouterVersionInfo& routerVersion);
HRESULT UseDefaults(LPCTSTR pServerName, BOOL fNT4);
void GetDefault();
BOOL FNeedRestart();
HRESULT LoadAdapters(IRouterInfo *pRouter, AdapterList *pAdapterList);
private:
BOOL m_fNT4;
RegKey m_regkey;
RegKey m_regkeyNT4;
CString m_stServerName;
SPIRouterInfo m_spRouterInfo;
RouterVersionInfo m_routerVersion;
};
/*---------------------------------------------------------------------------
Class: DATA_SRV_IPX
---------------------------------------------------------------------------*/
class DATA_SRV_IPX
{
public:
DWORD m_dwAllowNetworkAccess;
DWORD m_dwUseAutoAddr;
DWORD m_dwUseSameNetNum;
DWORD m_dwAllowClientNetNum;
DWORD m_dwIpxNetFirst;
DWORD m_dwIpxNetLast;
DWORD m_dwEnableIn;
DWORD m_fEnableType20Broadcasts;
DATA_SRV_IPX();
HRESULT LoadFromReg(LPCTSTR pServerName=NULL, BOOL fNT4 =FALSE);
HRESULT SaveToReg(IRouterInfo *pRouter);
HRESULT UseDefaults(LPCTSTR pServerName, BOOL fNT4);
void GetDefault();
static const int mc_nIpxNetNumRadix;
private:
BOOL m_fNT4;
RegKey m_regkeyNT4;
RegKey m_regkey;
};
/*---------------------------------------------------------------------------
Class: DATA_SRV_NBF
---------------------------------------------------------------------------*/
class DATA_SRV_NBF
{
public:
DWORD m_dwAllowNetworkAccess;
DWORD m_dwOldAllowNetworkAccess;
DWORD m_dwEnableIn;
DWORD m_dwOldEnableIn;
DATA_SRV_NBF();
HRESULT LoadFromReg(LPCTSTR pServerName = NULL, BOOL fNT4 = FALSE);
HRESULT SaveToReg();
HRESULT UseDefaults(LPCTSTR pServerName, BOOL fNT4);
void GetDefault();
BOOL FNeedRestart();
private:
BOOL m_fNT4;
RegKey m_regkey;
RegKey m_regkeyNT4;
CString m_stServerName;
};
/*---------------------------------------------------------------------------
Class: DATA_SRV_ARAP
---------------------------------------------------------------------------*/
class DATA_SRV_ARAP
{
public:
DWORD m_dwEnableIn;
DATA_SRV_ARAP();
HRESULT LoadFromReg(LPCTSTR pServerName = NULL, BOOL fNT4 = FALSE);
HRESULT SaveToReg();
HRESULT UseDefaults(LPCTSTR pServerName, BOOL fNT4);
void GetDefault();
private:
RegKey m_regkey;
};
/*---------------------------------------------------------------------------
Class: DATA_SRV_GENERAL
---------------------------------------------------------------------------*/
class DATA_SRV_GENERAL
{
public:
DWORD m_dwRouterType;
DWORD m_dwOldRouterType;
DATA_SRV_GENERAL();
HRESULT LoadFromReg(LPCTSTR pServerName = NULL);
HRESULT SaveToReg();
void GetDefault();
BOOL FNeedRestart();
private:
RegKey m_regkey;
CString m_stServerName;
};
//*****************************************************************
// PPP configuration
//*****************************************************************
class DATA_SRV_PPP
{
public:
BOOL m_fUseMultilink;
BOOL m_fUseBACP;
BOOL m_fUseLCPExtensions;
BOOL m_fUseSwCompression;
DATA_SRV_PPP();
HRESULT LoadFromReg(LPCTSTR pServerName,
const RouterVersionInfo& routerVersion);
HRESULT SaveToReg();
void GetDefault();
private:
RegKey m_regkey;
};
/*---------------------------------------------------------------------------
Struct: AuthProviderData
This structure is used to hold information for Authentication AND
Accounting providers.
---------------------------------------------------------------------------*/
struct AuthProviderData
{
// The following fields will hold data for ALL auth/acct/EAP providers
CString m_stTitle;
CString m_stConfigCLSID; // CLSID for config object
CString m_stProviderTypeGUID; // GUID for the provider type
// These fields are used by auth/acct providers.
CString m_stGuid; // the identifying guid
// This flag is used for EAP providers
CString m_stKey; // name of registry key (for this provider)
BOOL m_fSupportsEncryption; // used by EAP provider data
DWORD m_dwFlags;
BOOL m_fConfiguredInThisSession;
};
typedef CList<AuthProviderData, AuthProviderData&> AuthProviderList;
/*---------------------------------------------------------------------------
Class: DATA_SRV_AUTH
---------------------------------------------------------------------------*/
#define DATA_SRV_AUTH_MAX_SHARED_KEY_LEN 255
class DATA_SRV_AUTH
{
public:
// The authentication data (as read in from the Rasman flags parameter)
DWORD m_dwFlags;
// The original auth provider
CString m_stGuidOriginalAuthProv;
// The original acct provider
CString m_stGuidOriginalAcctProv;
// The current authentication provider
CString m_stGuidActiveAuthProv;
// The current accounting provider
CString m_stGuidActiveAcctProv;
//Flag which tells us if the router service is running
BOOL m_fRouterRunning;
// Flag indicating whether or not to use Custom IPSEC policy ( preshared key )
BOOL m_fUseCustomIPSecPolicy;
// Current Preshared Key
TCHAR m_szPreSharedKey[DATA_SRV_AUTH_MAX_SHARED_KEY_LEN];
DATA_SRV_AUTH();
HRESULT LoadFromReg(LPCTSTR pServerName,
const RouterVersionInfo& routerVersion);
HRESULT SaveToReg(HWND hWnd);
HRESULT UseDefaults(LPCTSTR pServerName, BOOL fNT4);
void GetDefault();
AuthProviderList m_authProvList;
AuthProviderList m_acctProvList;
AuthProviderList m_eapProvList;
AuthProviderData * FindProvData(AuthProviderList &provList,
const TCHAR *pszGuid);
private:
RegKey m_regkeyAuth; // reg key of the Router\Auth
RegKey m_regkeyAcct; // reg key of the Router\Acct
RegKey m_regkeyRasmanPPP;
RegKey m_regkeyRemoteAccess; // regkey for RemoteAccess\Parameters
HRESULT LoadEapProviders(HKEY hkeyBase, AuthProviderList *pProvList);
HRESULT LoadProviders(HKEY hkeyBase, AuthProviderList *pProvList);
HRESULT LoadPSK();
HRESULT SetNewActiveAuthProvider(HWND hWnd);
HRESULT SetNewActiveAcctProvider(HWND hWnd);
HRESULT SetPSK();
CString m_stServer;
};
/*---------------------------------------------------------------------------
Class: DATA_SRV_RASERRLOG
---------------------------------------------------------------------------*/
class DATA_SRV_RASERRLOG
{
public:
DWORD m_dwLogLevel;
DWORD m_dwEnableFileTracing;
DWORD m_dwOldEnableFileTracing;
DATA_SRV_RASERRLOG();
HRESULT LoadFromReg(LPCTSTR pszServerName=NULL);
HRESULT SaveToReg();
HRESULT UseDefaults(LPCTSTR pServerName, BOOL fNT4);
void GetDefault();
BOOL FNeedRestart();
private:
RegKey m_regkey;
RegKey m_regkeyFileLogging;
CString m_stServer;
};
/*---------------------------------------------------------------------------
Class: RtrGenCfgPage
General configuration UI
---------------------------------------------------------------------------*/
class RtrGenCfgPage : public RtrPropertyPage
{
public:
RtrGenCfgPage(UINT nIDTemplate, UINT nIDCaption = 0);
~RtrGenCfgPage();
HRESULT Init(RtrCfgSheet * pRtrCfgSheet,
const RouterVersionInfo& routerVersion);
// Copy the control settings into the DATA_SRV_GENERAL
void SaveSettings();
//{{AFX_DATA(RtrGenCfgPage)
//}}AFX_DATA
DATA_SRV_GENERAL m_DataGeneral;
//{{AFX_VIRTUAL(RtrIPCfgPage)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
void EnableRtrCtrls();
protected:
virtual BOOL OnApply();
RtrCfgSheet* m_pRtrCfgSheet;
//{{AFX_MSG(RtrGenCfgPage)
afx_msg void OnButtonClick();
afx_msg void OnCbSrvAsRtr();
//}}AFX_MSG
virtual BOOL OnInitDialog();
DECLARE_MESSAGE_MAP()
};
/*---------------------------------------------------------------------------
Class: RtrAuthCfgPage
Authentication configuration UI
---------------------------------------------------------------------------*/
class RtrAuthCfgPage : public RtrPropertyPage
{
// Construction
public:
RtrAuthCfgPage(UINT nIDTemplate, UINT nIDCaption = 0);
~RtrAuthCfgPage();
HRESULT Init(RtrCfgSheet * pRtrCfgSheet,
const RouterVersionInfo& routerVersion);
//{{AFX_DATA(RtrAuthCfgPage)
CComboBox m_authprov;
CComboBox m_acctprov;
//}}AFX_DATA
DATA_SRV_AUTH m_DataAuth;
//{{AFX_VIRTUAL(RtrAuthCfgPage)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
protected:
DWORD m_dwAuthFlags; // Flags as enabled
CString m_stActiveAuthProv;
CString m_stActiveAcctProv;
RouterVersionInfo m_RouterInfo;
void FillProviderListBox(CComboBox &provCtrl,
AuthProviderList &provList,
const CString& stGuid);
virtual BOOL OnApply();
RtrCfgSheet* m_pRtrCfgSheet;
//{{AFX_MSG(RtrAuthCfgPage)
afx_msg void OnChangeAuthProv();
afx_msg void OnChangeAcctProv();
afx_msg void OnConfigureAcctProv();
afx_msg void OnConfigureAuthProv();
afx_msg void OnAuthSettings();
afx_msg void OnChangeCustomPolicySettings();
afx_msg void OnChangePreSharedKey();
//}}AFX_MSG
virtual BOOL OnInitDialog();
DECLARE_MESSAGE_MAP()
};
/*---------------------------------------------------------------------------
Class: RtrIPCfgPage
IP configuration UI
---------------------------------------------------------------------------*/
class RtrIPCfgPage : public RtrPropertyPage
{
// Construction
public:
RtrIPCfgPage(UINT nIDTemplate, UINT nIDCaption = 0);
~RtrIPCfgPage();
HRESULT Init(RtrCfgSheet * pRtrCfgSheet,
const RouterVersionInfo& routerVersion);
HRESULT SaveSettings(HWND hWnd);
//{{AFX_DATA(RtrIPCfgPage)
enum { IDD = IDD_RTR_IP };
CComboBox m_adapter;
//}}AFX_DATA
DATA_SRV_IP m_DataIP;
//{{AFX_VIRTUAL(RtrIPCfgPage)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
protected:
CListCtrl m_listCtrl;
BOOL m_bReady;
virtual BOOL OnApply();
RtrCfgSheet* m_pRtrCfgSheet;
void EnableStaticPoolCtrls(BOOL fEnable) ;
void FillAdapterListBox(CComboBox &adapterCtrl,
AdapterList &adapterList,
const CString& stGuid);
//{{AFX_MSG(RtrIPCfgPage)
afx_msg void OnAllowRemoteTcpip();
afx_msg void OnRtrEnableIPRouting();
afx_msg void OnRtrIPRbDhcp();
afx_msg void OnRtrIPRbPool();
afx_msg void OnSelendOkAdapter();
virtual BOOL OnInitDialog();
afx_msg void OnBtnAdd();
afx_msg void OnBtnEdit();
afx_msg void OnBtnRemove();
afx_msg void OnEnableNetbtBcastFwd();
afx_msg void OnListDblClk(NMHDR *, LRESULT *);
afx_msg void OnListChange(NMHDR *, LRESULT *);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/*---------------------------------------------------------------------------
Class: RtrIPXCfgPage
IPX configuration UI
---------------------------------------------------------------------------*/
class RtrIPXCfgPage : public RtrPropertyPage
{
public:
RtrIPXCfgPage(UINT nIDTemplate, UINT nIDCaption = 0);
~RtrIPXCfgPage();
HRESULT Init(RtrCfgSheet * pRtrCfgSheet,
const RouterVersionInfo& routerVersion);
DATA_SRV_IPX m_DataIPX;
//{{AFX_VIRTUAL(RtrIPXCfgPage)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
protected:
virtual BOOL OnApply();
RtrCfgSheet* m_pRtrCfgSheet;
void EnableNetworkRangeCtrls(BOOL fEnable);
//{{AFX_MSG(RtrIPXCfgPage)
afx_msg void OnRtrIPxRbAuto();
afx_msg void OnRtrIPxRbPool();
virtual BOOL OnInitDialog();
afx_msg void OnChangeSomething();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/*---------------------------------------------------------------------------
Class: RtrNBFCfgPage
NetBEUI router configuration UI
---------------------------------------------------------------------------*/
class RtrNBFCfgPage : public RtrPropertyPage
{
public:
RtrNBFCfgPage(UINT nIDTemplate, UINT nIDCaption = 0);
~RtrNBFCfgPage();
HRESULT Init(RtrCfgSheet * pRtrCfgSheet,
const RouterVersionInfo& routerVersion);
DATA_SRV_NBF m_DataNBF;
//{{AFX_VIRTUAL(RtrNBFCfgPage)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Copy the control settings into the DATA_SRV_GENERAL
void SaveSettings();
protected:
virtual BOOL OnApply();
RtrCfgSheet* m_pRtrCfgSheet;
//{{AFX_MSG(RtrNBFCfgPage)
afx_msg void OnButtonClick();
virtual BOOL OnInitDialog();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/*---------------------------------------------------------------------------
Class: RtrARAPCfgPage
Appletalk routing configuration UI
---------------------------------------------------------------------------*/
class RtrARAPCfgPage : public RtrPropertyPage
{
public:
RtrARAPCfgPage(UINT nIDTemplate, UINT nIDCaption = 0);
~RtrARAPCfgPage();
HRESULT Init(RtrCfgSheet * pRtrCfgSheet,
const RouterVersionInfo& routerVersion);
void EnableSettings(BOOL bEnable);
//{{AFX_DATA(RtrARAPCfgPage)
enum { IDD = IDD_RTR_ARAP };
//}}AFX_DATA
DATA_SRV_ARAP m_DataARAP;
// if the page is changed and applied
BOOL m_bApplied;
// need to access from the property sheet
CATLKEnv m_AdapterInfo;
// ClassWizard generate virtual function overrides
//{{AFX_VIRTUAL(RtrARAPCfgPage)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
protected:
virtual BOOL OnApply();
RtrCfgSheet* m_pRtrCfgSheet;
//{{AFX_MSG(RtrARAPCfgPage)
virtual BOOL OnInitDialog();
afx_msg void OnRtrArapCbRemotearap();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/*---------------------------------------------------------------------------
Class: RtrPPPCfgPage
PPP options configuration UI
---------------------------------------------------------------------------*/
class RtrPPPCfgPage : public RtrPropertyPage
{
// Construction
public:
RtrPPPCfgPage(UINT nIDTemplate, UINT nIDCaption = 0);
~RtrPPPCfgPage();
HRESULT Init(RtrCfgSheet * pRtrCfgSheet,
const RouterVersionInfo& routerVersion);
//{{AFX_DATA(RtrPPPCfgPage)
//}}AFX_DATA
DATA_SRV_PPP m_DataPPP;
//{{AFX_VIRTUAL(RtrPPPCfgPage)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
protected:
virtual BOOL OnApply();
RtrCfgSheet* m_pRtrCfgSheet;
//{{AFX_MSG(RtrPPPCfgPage)
afx_msg void OnButtonClickMultilink();
afx_msg void OnButtonClick();
//}}AFX_MSG
virtual BOOL OnInitDialog();
DECLARE_MESSAGE_MAP()
};
/*---------------------------------------------------------------------------
Class: RtrLogLevelCfgPage
---------------------------------------------------------------------------*/
class RtrLogLevelCfgPage : public RtrPropertyPage
{
// Construction
public:
RtrLogLevelCfgPage(UINT nIDTemplate, UINT nIDCaption = 0);
~RtrLogLevelCfgPage();
HRESULT Init(RtrCfgSheet * pRtrCfgSheet,
const RouterVersionInfo& routerVersion);
//{{AFX_DATA(RtrLogLevelCfgPage)
//}}AFX_DATA
DATA_SRV_RASERRLOG m_DataRASErrLog;
//{{AFX_VIRTUAL(RtrLogLevelCfgPage)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
protected:
virtual BOOL OnApply();
RtrCfgSheet* m_pRtrCfgSheet;
//{{AFX_MSG(RtrLogLevelCfgPage)
afx_msg void OnButtonClick();
//}}AFX_MSG
virtual BOOL OnInitDialog();
// Copy the control settings into the DATA_SRV_GENERAL
void SaveSettings();
DECLARE_MESSAGE_MAP()
};
/*---------------------------------------------------------------------------
Class: RtrCfgSheet
Router configuration property sheet
---------------------------------------------------------------------------*/
class RtrCfgSheet :
public RtrPropertySheet
{
public:
RtrCfgSheet(ITFSNode *pNode,
IRouterInfo *pRouter,
IComponentData *pComponentData,
ITFSComponentData *pTFSCompData,
LPCTSTR pszSheetName,
CWnd *pParent = NULL,
UINT iPage=0,
BOOL fScopePane = TRUE);
~RtrCfgSheet();
HRESULT Init(LPCTSTR pServerName);
virtual BOOL SaveSheetData();
CString m_stServerName;
BOOL m_fNT4;
RouterVersionInfo m_routerVersion;
SPIRouterInfo m_spRouter;
// Helper function - this will prompt the user, stop the service,
// save changes, and then restart. This is for those changes
// that require a restart. It is placed in a separate function
// so that the various pages may call this. The restart will occur
// only once though.
// ----------------------------------------------------------------
HRESULT SaveRequiredRestartChanges(HWND hWnd);
protected:
friend class RtrGenCfgPage;
friend class RtrAuthCfgPage;
friend class RtrIPCfgPage;
friend class RtrIPXCfgPage;
friend class RtrNBFCfgPage;
friend class RtrARAPCfgPage;
BOOL m_fIpxLoaded;
BOOL m_fIpLoaded;
BOOL m_fNbfLoaded;
BOOL m_fARAPLoaded;
Ptr<RtrIPCfgPage> m_pRtrIPCfgPage;
Ptr<RtrIPXCfgPage> m_pRtrIPXCfgPage;
Ptr<RtrNBFCfgPage> m_pRtrNBFCfgPage;
Ptr<RtrARAPCfgPage> m_pRtrARAPCfgPage;
Ptr<RtrGenCfgPage> m_pRtrGenCfgPage;
Ptr<RtrAuthCfgPage> m_pRtrAuthCfgPage;
Ptr<RtrPPPCfgPage> m_pRtrPPPCfgPage;
Ptr<RtrLogLevelCfgPage> m_pRtrLogLevelCfgPage;
SPITFSNode m_spNode;
};
/*---------------------------------------------------------------------------
class: EAPConfigurationDlg
Brings up the list of EAP providers (along with a configure button).
---------------------------------------------------------------------------*/
class EAPConfigurationDialog : public CBaseDialog
{
public:
EAPConfigurationDialog(LPCTSTR pszMachine,
AuthProviderList *pProvList) :
CBaseDialog(IDD_RTR_EAP_CFG),
m_pProvList(pProvList),
m_stMachine(pszMachine)
{};
~EAPConfigurationDialog();
protected:
AuthProviderList *m_pProvList;
CString m_stMachine; // name of the server
CListBox m_listBox;
//{{AFX_VIRTUAL(EAPConfigurationDialog)
protected:
virtual VOID DoDataExchange(CDataExchange *pDX);
virtual BOOL OnInitDialog();
//}}AFX_VIRTUAL
afx_msg void OnListChange();
// config buttion is moved to NAP/Profile/Authentication page
// afx_msg void OnConfigure();
DECLARE_MESSAGE_MAP()
};
/*---------------------------------------------------------------------------
Class: AuthenticationSettingsDialog
---------------------------------------------------------------------------*/
class AuthenticationSettingsDialog : public CBaseDialog
{
public:
AuthenticationSettingsDialog(LPCTSTR pszServerName,
AuthProviderList *pProvList) :
CBaseDialog(IDD_AUTHENTICATION_SETTINGS),
m_dwFlags(0),
m_stMachine(pszServerName),
m_pProvList(pProvList)
{};
void SetAuthFlags(DWORD dwFlags);
DWORD GetAuthFlags();
protected:
void CheckAuthenticationControls(DWORD dwFlags);
// Read the state of the flags from the checkboxes in the UI
void ReadFlagState();
DWORD m_dwFlags;
// Used by the EAP dialog
AuthProviderList *m_pProvList;
CString m_stMachine; // name of the server
//{{AFX_VIRTUAL(AuthenticationSettingsDialog)
protected:
afx_msg void OnRtrAuthCfgEAP();
virtual VOID DoDataExchange(CDataExchange *pDX);
virtual BOOL OnInitDialog();
virtual void OnOK();
//}}AFX_VIRTUAL
DECLARE_MESSAGE_MAP()
};
#endif _RTRCFG_H