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"
16 #include <lanahelper.h>
19 * DEFINITIONS ________________________________________________________________
25 static BOOL fFirstTime = TRUE;
27 LANAINFO* lanainfo = NULL;
29 int GetAdapterNumber(TCHAR*);
32 * PROTOTYPES _________________________________________________________________
36 void Binding_OnInitDialog (HWND hDlg);
37 void Binding_OnOK(HWND hDlg);
38 void Binding_OnCancel(HWND hDlg);
39 BOOL Binding_OnApply();
41 BOOL isGateway = FALSE;
43 * ROUTINES ___________________________________________________________________
47 BOOL CALLBACK Binding_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
52 Binding_OnInitDialog (hDlg);
55 case WM_CTLCOLORSTATIC:
56 if ((HWND)lp == GetDlgItem (hDlg, IDC_CHUNK_SIZE))
58 if (IsWindowEnabled ((HWND)lp))
60 static HBRUSH hbrStatic = CreateSolidBrush (GetSysColor (COLOR_WINDOW));
61 SetTextColor ((HDC)wp, GetSysColor (COLOR_WINDOWTEXT));
62 SetBkColor ((HDC)wp, GetSysColor (COLOR_WINDOW));
63 return (BOOL)hbrStatic;
72 Binding_DlgProc (hDlg, WM_HELP, 0, 0);
80 Binding_OnCancel(hDlg);
83 if (HIWORD(wp) == BN_CLICKED)
86 memset(name, 0, sizeof(name));
87 if (IsDlgButtonChecked(hDlg,IDC_DEFAULTNIC))
91 HWND hwndCombo = GetDlgItem(hDlg, IDC_NICSELECTION);
92 if (SendMessage(hwndCombo, CB_GETCURSEL, 0, 0) == CB_ERR)
93 SendMessage(hwndCombo, CB_SETCURSEL, (WPARAM)0, (LPARAM)0);
95 TCHAR selected[MAX_PATH];
96 memset(selected, 0, sizeof(selected));
97 SendDlgItemMessage(hDlg, IDC_NICSELECTION,
98 WM_GETTEXT, sizeof(selected),
101 if (_tcslen(selected) <= 0)
105 nLanAdapter = GetAdapterNumber(selected);
108 lana_GetAfsNameString(nLanAdapter, isGateway, name);
109 SetDlgItemText (hDlg, IDC_BINDING_MESSAGE, name);
110 EnableWindow(GetDlgItem(hDlg,IDC_NICSELECTION),(nLanAdapter!=-1));
113 case IDC_NICSELECTION:
114 if (HIWORD(wp) == CBN_SELCHANGE)
116 TCHAR name[MAX_PATH];
117 TCHAR selected[MAX_PATH];
118 memset(name, 0, sizeof(name));
119 memset(selected, 0, sizeof(selected));
120 HWND hwndCombo = GetDlgItem(hDlg, IDC_NICSELECTION);
121 int i = SendMessage(hwndCombo, CB_GETCURSEL, 0, 0);
123 SendMessage(hwndCombo, CB_GETLBTEXT, (WPARAM)i,
126 if (_tcslen(selected) <= 0)
129 nLanAdapter = GetAdapterNumber(selected);
132 lana_GetAfsNameString(nLanAdapter, isGateway, name);
133 SetDlgItemText (hDlg, IDC_BINDING_MESSAGE, name);
141 WinHelp (hDlg, g.szHelpFile, HELP_CONTEXT, IDH_AFSCONFIG_ADVANCED_MISC);
149 void Binding_OnInitDialog (HWND hDlg)
151 TCHAR name[MAX_PATH];
152 memset(name, 0, sizeof(name));
155 Config_GetLanAdapter(&g.Configuration.nLanAdapter);
156 nLanAdapter = g.Configuration.nLanAdapter;
157 isGateway = g.Configuration.fBeGateway;
161 lanainfo = lana_FindLanaByName(NULL);
163 // TODO: Show more useful error message.
165 MessageBox(hDlg, "Unable to obtain LANA list", "LANA ERROR", MB_ICONERROR);
169 HWND hwndCombo = GetDlgItem(hDlg, IDC_NICSELECTION);
172 while (_tcslen(lanainfo[index].lana_name) > 0)
174 _stprintf(tmp, "%s (lana number = %d)", lanainfo[index].lana_name,
175 lanainfo[index].lana_number);
176 SendMessage(hwndCombo, CB_ADDSTRING,
178 if (nLanAdapter == lanainfo[index].lana_number)
179 SendMessage(hwndCombo, CB_SELECTSTRING, (WPARAM)-1,
185 lana_GetAfsNameString(nLanAdapter, isGateway, name);
186 SetDlgItemText (hDlg, IDC_BINDING_MESSAGE, name);
188 CheckDlgButton (hDlg, IDC_DEFAULTNIC, (nLanAdapter==-1));
190 EnableWindow(GetDlgItem(hDlg,IDC_NICSELECTION),(nLanAdapter!=-1));
193 void Binding_OnOK (HWND hDlg)
195 if (IsDlgButtonChecked(hDlg,IDC_DEFAULTNIC))
199 TCHAR selected[MAX_PATH];
200 memset(selected, 0, sizeof(selected));
201 SendDlgItemMessage(hDlg, IDC_NICSELECTION,
202 WM_GETTEXT, sizeof(selected),
205 if (_tcslen(selected) <= 0)
207 MessageBox(hDlg, "Please select the NIC to bind to", "Error", MB_ICONERROR);
211 nLanAdapter = GetAdapterNumber(selected);
215 EndDialog(hDlg, IDOK);
219 BOOL Binding_OnApply()
224 if (nLanAdapter != g.Configuration.nLanAdapter) {
225 if (!Config_SetLanAdapter (nLanAdapter))
227 g.Configuration.nLanAdapter = nLanAdapter;
235 void Binding_OnCancel(HWND hDlg)
245 EndDialog(hDlg, IDCANCEL);
249 int GetAdapterNumber(TCHAR* n)
252 while (_tcslen(lanainfo[index].lana_name) > 0)
254 if (_tcsncmp(lanainfo[index].lana_name, n, _tcslen(lanainfo[index].lana_name)) == 0)
256 return lanainfo[index].lana_number;