2 * Copyright 2000, International Business Machines Corporation and others.
5 * This software has been released under the terms of the IBM Public
6 * License. For details, see the LICENSE file in the top-level source
7 * directory or online at http://www.openafs.org/dl/license10.html
11 #include <afs/param.h>
15 #include "afs_config.h"
20 * DEFINITIONS ________________________________________________________________
26 static BOOL fFirstTime = TRUE;
28 LANAINFO* lanainfo = NULL;
30 int GetAdapterNumber(TCHAR*);
33 * PROTOTYPES _________________________________________________________________
37 void Binding_OnInitDialog (HWND hDlg);
38 void Binding_OnOK(HWND hDlg);
39 void Binding_OnCancel(HWND hDlg);
40 BOOL Binding_OnApply();
42 BOOL isGateway = FALSE;
44 * ROUTINES ___________________________________________________________________
48 BOOL CALLBACK Binding_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
53 Binding_OnInitDialog (hDlg);
56 case WM_CTLCOLORSTATIC:
57 if ((HWND)lp == GetDlgItem (hDlg, IDC_CHUNK_SIZE))
59 if (IsWindowEnabled ((HWND)lp))
61 static HBRUSH hbrStatic = CreateSolidBrush (GetSysColor (COLOR_WINDOW));
62 SetTextColor ((HDC)wp, GetSysColor (COLOR_WINDOWTEXT));
63 SetBkColor ((HDC)wp, GetSysColor (COLOR_WINDOW));
64 return (BOOL)hbrStatic;
73 Binding_DlgProc (hDlg, WM_HELP, 0, 0);
81 Binding_OnCancel(hDlg);
84 if (HIWORD(wp) == BN_CLICKED)
87 memset(name, 0, sizeof(name));
88 if (IsDlgButtonChecked(hDlg,IDC_DEFAULTNIC))
92 HWND hwndCombo = GetDlgItem(hDlg, IDC_NICSELECTION);
93 if (SendMessage(hwndCombo, CB_GETCURSEL, 0, 0) == CB_ERR)
94 SendMessage(hwndCombo, CB_SETCURSEL, (WPARAM)0, (LPARAM)0);
96 TCHAR selected[MAX_PATH];
97 memset(selected, 0, sizeof(selected));
98 SendDlgItemMessage(hDlg, IDC_NICSELECTION,
99 WM_GETTEXT, sizeof(selected),
102 if (_tcslen(selected) <= 0)
106 nLanAdapter = GetAdapterNumber(selected);
109 GetAfsName(nLanAdapter, isGateway, name);
110 SetDlgItemText (hDlg, IDC_BINDING_MESSAGE, name);
111 EnableWindow(GetDlgItem(hDlg,IDC_NICSELECTION),(nLanAdapter!=-1));
114 case IDC_NICSELECTION:
115 if (HIWORD(wp) == CBN_SELCHANGE)
117 TCHAR name[MAX_PATH];
118 TCHAR selected[MAX_PATH];
119 memset(name, 0, sizeof(name));
120 memset(selected, 0, sizeof(selected));
121 HWND hwndCombo = GetDlgItem(hDlg, IDC_NICSELECTION);
122 int i = SendMessage(hwndCombo, CB_GETCURSEL, 0, 0);
124 SendMessage(hwndCombo, CB_GETLBTEXT, (WPARAM)i,
127 if (_tcslen(selected) <= 0)
130 nLanAdapter = GetAdapterNumber(selected);
133 GetAfsName(nLanAdapter, isGateway, name);
134 SetDlgItemText (hDlg, IDC_BINDING_MESSAGE, name);
142 WinHelp (hDlg, g.szHelpFile, HELP_CONTEXT, IDH_AFSCONFIG_ADVANCED_MISC);
150 void Binding_OnInitDialog (HWND hDlg)
154 TCHAR name[MAX_PATH];
155 memset(msg, 0, sizeof(msg));
156 memset(name, 0, sizeof(name));
159 Config_GetLanAdapter(&g.Configuration.nLanAdapter);
160 nLanAdapter = g.Configuration.nLanAdapter;
161 isGateway = g.Configuration.fBeGateway;
165 lanainfo = GetLana(msg, NULL);
167 if (!lanainfo && _tcslen(msg) > 0)
168 MessageBox(hDlg, msg, "LANA ERROR", MB_ICONERROR);
171 HWND hwndCombo = GetDlgItem(hDlg, IDC_NICSELECTION);
174 while (_tcslen(lanainfo[index].lana_name) > 0)
176 _stprintf(tmp, "%s (lana number = %d)", lanainfo[index].lana_name,
177 lanainfo[index].lana_number);
178 SendMessage(hwndCombo, CB_ADDSTRING,
180 if (nLanAdapter == lanainfo[index].lana_number)
181 SendMessage(hwndCombo, CB_SELECTSTRING, (WPARAM)-1,
188 GetAfsName(nLanAdapter, isGateway, name);
189 SetDlgItemText (hDlg, IDC_BINDING_MESSAGE, name);
191 CheckDlgButton (hDlg, IDC_DEFAULTNIC, (nLanAdapter==-1));
193 EnableWindow(GetDlgItem(hDlg,IDC_NICSELECTION),(nLanAdapter!=-1));
196 void Binding_OnOK (HWND hDlg)
198 if (IsDlgButtonChecked(hDlg,IDC_DEFAULTNIC))
202 TCHAR selected[MAX_PATH];
203 memset(selected, 0, sizeof(selected));
204 SendDlgItemMessage(hDlg, IDC_NICSELECTION,
205 WM_GETTEXT, sizeof(selected),
208 if (_tcslen(selected) <= 0)
210 MessageBox(hDlg, "Please select the NIC to bind to", "Error", MB_ICONERROR);
214 nLanAdapter = GetAdapterNumber(selected);
218 EndDialog(hDlg, IDOK);
222 BOOL Binding_OnApply()
227 if (nLanAdapter != g.Configuration.nLanAdapter) {
228 if (!Config_SetLanAdapter (nLanAdapter))
230 g.Configuration.nLanAdapter = nLanAdapter;
238 void Binding_OnCancel(HWND hDlg)
248 EndDialog(hDlg, IDCANCEL);
252 int GetAdapterNumber(TCHAR* n)
255 while (_tcslen(lanainfo[index].lana_name) > 0)
257 if (_tcsncmp(lanainfo[index].lana_name, n, _tcslen(lanainfo[index].lana_name)) == 0)
259 return lanainfo[index].lana_number;