//---------------------------------------------------------------------------- // // Copyright (c) 1997-1999 Microsoft Corporation // All rights reserved. // // File Name: tcpipopt.c // // Description: // //---------------------------------------------------------------------------- #include "pch.h" #include "resource.h" #include "tcpip.h" typedef struct { TCHAR *szName; TCHAR *szDescription; BOOL bInstalled; } TCPIP_Options_Entry_Struct; #define NUMBER_OF_TCPIP_OPTIONS 2 // ISSUE-2002/02/28-stelo- make these an enum #define IP_SECURITY 0 #define TCPIP_FILTERING 1 static TCPIP_Options_Entry_Struct TCPIP_Options_Entries[NUMBER_OF_TCPIP_OPTIONS]; //---------------------------------------------------------------------------- // // Function: EnableIpSecurityControls // // Purpose: // // Arguments: // // Returns: // //---------------------------------------------------------------------------- VOID EnableIpSecurityControls( IN HWND hwnd, IN BOOL bState ) { // // Grab handles to each of the controls // HWND hPolicyComboBox = GetDlgItem( hwnd, IDC_CMB_IPSEC_POLICY_LIST ); HWND hPolicyDescBox = GetDlgItem( hwnd, IDC_EDT_POLICY_DESC ); // // Grey or ungrey them appropriately // EnableWindow( hPolicyComboBox, bState ); EnableWindow( hPolicyDescBox, bState ); } //---------------------------------------------------------------------------- // // Function: IpSecurityDlgProc // // Purpose: // // Arguments: // // Returns: // //---------------------------------------------------------------------------- INT_PTR CALLBACK IpSecurityDlgProc( IN HWND hwnd, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam) { BOOL bStatus = TRUE; switch( uMsg ) { case WM_INITDIALOG: { HWND hDescriptionBox = GetDlgItem( hwnd, IDC_EDT_POLICY_DESC ); // // Load strings from resources // StrSecureInitiator = MyLoadString( IDS_SECURE_INITIATOR ); StrSecureInitiatorDesc = MyLoadString( IDS_SECURE_INITIATOR_DESC ); StrSecureResponder = MyLoadString( IDS_SECURE_RESPONDER ); StrSecureResponderDesc = MyLoadString( IDS_SECURE_RESPONDER_DESC ); StrLockdown = MyLoadString( IDS_LOCKDOWN ); StrLockdownDesc = MyLoadString( IDS_LOCKDOWN_DESC ); CheckRadioButton( hwnd, IDC_RAD_IPSEC_NOIPSEC, IDC_RAD_IPSEC_CUSTOM, IDC_RAD_IPSEC_NOIPSEC ); EnableIpSecurityControls( hwnd, FALSE ); SendDlgItemMessage( hwnd, IDC_CMB_IPSEC_POLICY_LIST, CB_ADDSTRING, (WPARAM) 0, (LPARAM) StrSecureInitiator ); SendDlgItemMessage( hwnd, IDC_CMB_IPSEC_POLICY_LIST, CB_ADDSTRING, (WPARAM) 0, (LPARAM) StrSecureResponder ); SendDlgItemMessage( hwnd, IDC_CMB_IPSEC_POLICY_LIST, CB_ADDSTRING, (WPARAM) 0, (LPARAM) StrLockdown ); // // Set the combo box selection and description // // ISSUE-2002/02/28-stelo- this eventually needs to be fixed once I know // what the security answerfile settings will be SendDlgItemMessage( hwnd, IDC_CMB_IPSEC_POLICY_LIST, CB_SETCURSEL, (WPARAM) 0, (LPARAM) 0 ); SetWindowText( hDescriptionBox, StrSecureInitiatorDesc ); break; } case WM_COMMAND: { int nButtonId = LOWORD( wParam ); switch ( nButtonId ) { case IDC_CMB_IPSEC_POLICY_LIST: { if( HIWORD( wParam ) == CBN_SELCHANGE ) { INT_PTR iIndex; HWND hDescriptionBox = GetDlgItem( hwnd, IDC_EDT_POLICY_DESC ); // get the current selection from the combo box iIndex = SendDlgItemMessage( hwnd, IDC_CMB_IPSEC_POLICY_LIST, CB_GETCURSEL, (WPARAM) 0, (LPARAM) 0 ); switch( iIndex ) { case 0: SetWindowText( hDescriptionBox, StrSecureInitiatorDesc ); break; case 1: SetWindowText( hDescriptionBox, StrSecureResponderDesc ); break; case 2: SetWindowText( hDescriptionBox, StrLockdownDesc ); break; default: AssertMsg(FALSE, "Bad case in TCPIP switch statement."); } } break; } case IDC_RAD_IPSEC_NOIPSEC: if ( HIWORD(wParam) == BN_CLICKED ) { EnableIpSecurityControls( hwnd, FALSE ); } break; case IDC_RAD_IPSEC_CUSTOM: if ( HIWORD(wParam) == BN_CLICKED ) { EnableIpSecurityControls( hwnd, TRUE ); } break; case IDOK: { EndDialog( hwnd, 1 ); break; } case IDCANCEL: { EndDialog( hwnd, 0 ); break; } } } default: bStatus = FALSE; break; } return bStatus; } //---------------------------------------------------------------------------- // // Function: TcpipFilteringDlgProc // // Purpose: // // Arguments: // // Returns: // //---------------------------------------------------------------------------- INT_PTR CALLBACK TcpipFilteringDlgProc( IN HWND hwnd, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam) { BOOL bStatus = TRUE; switch( uMsg ) { case WM_INITDIALOG: { break; } case WM_COMMAND: { int nButtonId = LOWORD( wParam ); switch ( nButtonId ) { case IDOK: { EndDialog( hwnd, 1 ); break; } case IDCANCEL: { EndDialog( hwnd, 0 ); break; } } } default: bStatus = FALSE; break; } return bStatus; } //---------------------------------------------------------------------------- // // Function: TCPIP_OptionsPageProc // // Purpose: Required function for the property sheet page to function properly. // The important thing is to give the return value of 1 to the message PSPCB_CREATE and // 0 for PSPCB_RELEASE // // Arguments: // // Returns: // //---------------------------------------------------------------------------- UINT CALLBACK TCPIP_OptionsPageProc( HWND hwnd, UINT uMsg, LPPROPSHEETPAGE ppsp ) { switch( uMsg ) { case PSPCB_CREATE : return 1 ; // needed for property sheet page to initialize correctly case PSPCB_RELEASE : return 0; default: return -1; } } //---------------------------------------------------------------------------- // // Function: TCPIP_OptionsDlgProc // // Purpose: Dialog procedure for the Options page of the property sheet // handles all the messages sent to this window // // Arguments: // // Returns: // //---------------------------------------------------------------------------- INT_PTR CALLBACK TCPIP_OptionsDlgProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam ) { switch( uMsg ) { case WM_INITDIALOG: { int i; HWND hOptionsListView = GetDlgItem( hwndDlg, IDC_LVW_OPTIONS ); TCPIP_Options_Entries[IP_SECURITY].szName = MyLoadString( IDS_IP_SEC ); TCPIP_Options_Entries[IP_SECURITY].szDescription = MyLoadString( IDS_IP_SEC_DESC ); TCPIP_Options_Entries[IP_SECURITY].bInstalled = TRUE; TCPIP_Options_Entries[TCPIP_FILTERING].szName = MyLoadString( IDS_TCPIP_FILTERING ); TCPIP_Options_Entries[TCPIP_FILTERING].szDescription = MyLoadString( IDS_TCPIP_FILTERING_DESC ); TCPIP_Options_Entries[TCPIP_FILTERING].bInstalled = TRUE; // ISSUE-2002/02/28-stelo- Are there anymore settings that can be added to // this list view // Under what conditions are these visible? Only // when DHCP is enabled? // // Insert DHCP class ID and IP Security into the list view // for( i = 0; i < 2; i++ ) { InsertItemIntoTcpipListView( hOptionsListView, (LPARAM) &TCPIP_Options_Entries[i], 1 ); } SetListViewSelection( hwndDlg, IDC_LVW_OPTIONS, 1 ); // // Set the description // SetWindowText( GetDlgItem( hwndDlg, IDC_OPT_DESC ), TCPIP_Options_Entries[0].szDescription ); return TRUE ; } case WM_COMMAND: { WORD wNotifyCode = HIWORD( wParam ); WORD wButtonId = LOWORD( wParam ); switch( wButtonId ) { case IDC_OPT_PROPERTIES: { INT iItemSelected; HWND hOptionsListView = GetDlgItem( hwndDlg, IDC_LVW_OPTIONS ); iItemSelected = ListView_GetSelectionMark( hOptionsListView ); if( iItemSelected == TCPIP_FILTERING ) { if( DialogBox( FixedGlobals.hInstance, (LPCTSTR) IDD_TCPIP_FILTER, hwndDlg, TcpipFilteringDlgProc ) ) { } } else if( iItemSelected == IP_SECURITY ) { if( DialogBox( FixedGlobals.hInstance, (LPCTSTR) IDD_IPSEC, hwndDlg, IpSecurityDlgProc ) ) { } } break; } } // end switch break; } case WM_NOTIFY: { LV_DISPINFO *pLvdi = (LV_DISPINFO *) lParam; NM_LISTVIEW *pNm = (NM_LISTVIEW *)lParam; TCPIP_Options_Entry_Struct *pListViewEntry = (TCPIP_Options_Entry_Struct *) (pLvdi->item.lParam); if( wParam == IDC_LVW_OPTIONS ) { switch( pLvdi->hdr.code ) { case LVN_GETDISPINFO: pLvdi->item.pszText = pListViewEntry->szName; break; } switch( pNm->hdr.code ) { case LVN_ITEMCHANGED: // test to see if a new item in the list has been selected if( pNm->uNewState == SELECTED ) { LV_ITEM lvI; TCPIP_Options_Entry_Struct *currentEntry; if( !GetSelectedItemFromListView( hwndDlg, IDC_LVW_OPTIONS, &lvI ) ) { return TRUE ; } currentEntry = (TCPIP_Options_Entry_Struct *) lvI.lParam; // // Set the description // SetWindowText( GetDlgItem( hwndDlg, IDC_OPT_DESC ), currentEntry->szDescription ); } break; } } } default: return FALSE ; } // // Message was handled so return TRUE // return TRUE ; }