Project

General

Profile

Download (132 KB) Statistics
| Branch: | Tag: | Revision:
1 8a9edda5 Scott Ullrich
<?php
2 b46bfcf5 Bill Marquette
/* $Id$ */
3 5b237745 Scott Ullrich
/*
4 b2bc44cd Scott Ullrich
	interfaces.php
5 78fcfb9c Scott Ullrich
	Copyright (C) 2004-2008 Scott Ullrich
6 744ea190 Scott Ullrich
	Copyright (C) 2006 Daniel S. Haischt.
7 3e3aeb8b N0YB
	Copyright (C) 2008-2010 Ermal Lu�i
8 c3b3cd36 Scott Ullrich
	All rights reserved.
9 b1c525ee Scott Ullrich
10 c3b3cd36 Scott Ullrich
	originally part of m0n0wall (http://m0n0.ch/wall)
11 5b237745 Scott Ullrich
	Copyright (C) 2003-2004 Manuel Kasper <mk@neon1.net>.
12
	All rights reserved.
13 e2cd32df Scott Ullrich
14 5b237745 Scott Ullrich
	Redistribution and use in source and binary forms, with or without
15
	modification, are permitted provided that the following conditions are met:
16 e2cd32df Scott Ullrich
17 5b237745 Scott Ullrich
	1. Redistributions of source code must retain the above copyright notice,
18
	   this list of conditions and the following disclaimer.
19 e2cd32df Scott Ullrich
20 5b237745 Scott Ullrich
	2. Redistributions in binary form must reproduce the above copyright
21
	   notice, this list of conditions and the following disclaimer in the
22
	   documentation and/or other materials provided with the distribution.
23 e2cd32df Scott Ullrich
24 5b237745 Scott Ullrich
	THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
25
	INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
26
	AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
27
	AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
28
	OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
29
	SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
30
	INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
31
	CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
32
	ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33
	POSSIBILITY OF SUCH DAMAGE.
34
*/
35 7ac5a4cb Scott Ullrich
/*
36
	pfSense_BUILDER_BINARIES:	/usr/sbin/arp
37
	pfSense_MODULE:	interfaces
38
*/
39 5b237745 Scott Ullrich
40 6b07c15a Matthew Grooms
##|+PRIV
41 01eb687d Ermal Luçi
##|*IDENT=page-interfaces
42 6b07c15a Matthew Grooms
##|*NAME=Interfaces: WAN page
43 998552f8 Ermal Luçi
##|*DESCR=Allow access to the 'Interfaces' page.
44 01eb687d Ermal Luçi
##|*MATCH=interfaces.php*
45 6b07c15a Matthew Grooms
##|-PRIV
46
47 f81cfcc9 jim-p
require_once("guiconfig.inc");
48
require_once("ipsec.inc");
49
require_once("functions.inc");
50
require_once("captiveportal.inc");
51
require_once("filter.inc");
52
require_once("shaper.inc");
53
require_once("rrd.inc");
54
require_once("vpn.inc");
55 1fb064e8 Erik Fonnesbeck
require_once("xmlparse_attr.inc");
56 199d8121 Ermal Luçi
57 94556105 Scott Ullrich
// Get configured interface list
58 dd18038e Ermal
$ifdescrs = get_configured_interface_with_descr(false, true);
59 94556105 Scott Ullrich
60 dd18038e Ermal
$if = "wan";
61
if ($_REQUEST['if'])
62 bd58d230 Scott Ullrich
	$if = $_REQUEST['if'];
63 dd18038e Ermal
64
if (empty($ifdescrs[$if])) {
65
	Header("Location: interfaces.php");
66
	exit;
67 9ff9a1c7 Seth Mos
}
68 6b07c15a Matthew Grooms
69 58af5941 Scott Ullrich
define("CRON_MONTHLY_PATTERN", "0 0 1 * *");
70
define("CRON_WEEKLY_PATTERN", "0 0 * * 0");
71
define("CRON_DAILY_PATTERN", "0 0 * * *");
72
define("CRON_HOURLY_PATTERN", "0 * * * *");
73 dc711694 Scott Ullrich
74 d85ba87f gnhb
if (!is_array($config['ppps']['ppp']))
75
	$config['ppps']['ppp'] = array();
76
77
$a_ppps = &$config['ppps']['ppp'];
78 58af5941 Scott Ullrich
79 f1f60c92 Ermal Luçi
function remove_bad_chars($string) {
80 e7346f05 Erik Fonnesbeck
	return preg_replace('/[^a-z_0-9]/i','',$string);
81 f1f60c92 Ermal Luçi
}
82
83 d173230c Seth Mos
if (!is_array($config['gateways']['gateway_item']))
84
	$config['gateways']['gateway_item'] = array();
85
$a_gateways = &$config['gateways']['gateway_item'];
86
87 f1f60c92 Ermal Luçi
$wancfg = &$config['interfaces'][$if];
88 ee5c01b5 Seth Mos
$old_wancfg = $wancfg;
89 e12ad49f Renato Botelho
$old_wancfg['realif'] = get_real_interface($if);
90
$old_ppps = $a_ppps;
91 dd18038e Ermal
// Populate page descr if it does not exist.
92
if ($if == "wan" && !$wancfg['descr'])
93
	$wancfg['descr'] = "WAN";
94
else if ($if == "lan" && !$wancfg['descr'])
95
	$wancfg['descr'] = "LAN";
96
97 8256f324 gnhb
foreach ($a_ppps as $pppid => $ppp) {
98 1d7e1d6c gnhb
	if ($wancfg['if'] == $ppp['if'])
99 8256f324 gnhb
		break;
100 30ade846 gnhb
}
101
102 1d7e1d6c gnhb
if ($wancfg['if'] == $a_ppps[$pppid]['if']) {
103 30ade846 gnhb
	$pconfig['pppid'] = $pppid;
104 1d7e1d6c gnhb
	$pconfig['ptpid'] = $a_ppps[$pppid]['ptpid'];
105
	$pconfig['port'] = $a_ppps[$pppid]['ports'];
106 70e46e62 Ermal
	if ($a_ppps[$pppid]['type'] == "ppp") {
107 3a906378 gnhb
		$pconfig['username'] = $a_ppps[$pppid]['username'];
108
		$pconfig['password'] = base64_decode($a_ppps[$pppid]['password']);
109 c0948c6c Renato Botelho
110 3a906378 gnhb
		$pconfig['phone'] = $a_ppps[$pppid]['phone'];
111
		$pconfig['apn'] = $a_ppps[$pppid]['apn'];
112
	}
113 70e46e62 Ermal
	else if ($a_ppps[$pppid]['type'] == "pppoe") {
114 d85ba87f gnhb
		$pconfig['pppoe_username'] = $a_ppps[$pppid]['username'];
115
		$pconfig['pppoe_password'] = base64_decode($a_ppps[$pppid]['password']);
116
		$pconfig['provider'] = $a_ppps[$pppid]['provider'];
117
		$pconfig['pppoe_dialondemand'] = isset($a_ppps[$pppid]['ondemand']);
118
		$pconfig['pppoe_idletimeout'] = $a_ppps[$pppid]['idletimeout'];
119 5b237745 Scott Ullrich
120 d85ba87f gnhb
		/* ================================================ */
121
		/* = force a connection reset at a specific time? = */
122
		/* ================================================ */
123 c0948c6c Renato Botelho
124 d85ba87f gnhb
		if (isset($a_ppps[$pppid]['pppoe-reset-type'])) {
125
			$pconfig['pppoe-reset-type'] = $a_ppps[$pppid]['pppoe-reset-type'];
126 1d7e1d6c gnhb
			$itemhash = getMPDCRONSettings($a_ppps[$pppid]['if']);
127 70e46e62 Ermal
			if ($itemhash)
128
				$cronitem = $itemhash['ITEM'];
129 e40e6724 gnhb
			if (isset($cronitem)) {
130
				$resetTime = "{$cronitem['minute']} {$cronitem['hour']} {$cronitem['mday']} {$cronitem['month']} {$cronitem['wday']}";
131
			} else {
132
				$resetTime = NULL;
133
			}
134 70e46e62 Ermal
			//log_error("ResetTime:".$resetTime);
135 d85ba87f gnhb
			if ($a_ppps[$pppid]['pppoe-reset-type'] == "custom") {
136 70e46e62 Ermal
				if ($cronitem) {
137
					$pconfig['pppoe_pr_custom'] = true;
138
					$pconfig['pppoe_resetminute'] = $cronitem['minute'];
139
					$pconfig['pppoe_resethour'] = $cronitem['hour'];
140
					if ($cronitem['mday'] <> "*" && $cronitem['month'] <> "*")
141
						$pconfig['pppoe_resetdate'] = "{$cronitem['month']}/{$cronitem['mday']}/" . date("Y");
142 af13aad6 Ermal
				}
143 d85ba87f gnhb
			} else if ($a_ppps[$pppid]['pppoe-reset-type'] == "preset") {
144
				$pconfig['pppoe_pr_preset'] = true;
145
				switch ($resetTime) {
146
					case CRON_MONTHLY_PATTERN:
147
						$pconfig['pppoe_monthly'] = true;
148
						break;
149
					case CRON_WEEKLY_PATTERN:
150
						$pconfig['pppoe_weekly'] = true;
151
						break;
152
					case CRON_DAILY_PATTERN:
153
						$pconfig['pppoe_daily'] = true;
154
						break;
155
					case CRON_HOURLY_PATTERN:
156
						$pconfig['pppoe_hourly'] = true;
157
						break;
158
				}
159
			}
160
		}// End force pppoe reset at specific time
161 c0948c6c Renato Botelho
	}// End if type == pppoe
162 e4d40f41 gnhb
	else if ($a_ppps[$pppid]['type'] == "pptp" || $a_ppps[$pppid]['type'] == "l2tp"){
163 d85ba87f gnhb
		$pconfig['pptp_username'] = $a_ppps[$pppid]['username'];
164
		$pconfig['pptp_password'] = base64_decode($a_ppps[$pppid]['password']);
165 4a1ee8ac gnhb
		$pconfig['pptp_local'] = explode(",",$a_ppps[$pppid]['localip']);
166
		$pconfig['pptp_subnet'] = explode(",",$a_ppps[$pppid]['subnet']);
167
		$pconfig['pptp_remote'] = explode(",",$a_ppps[$pppid]['gateway']);
168 d85ba87f gnhb
		$pconfig['pptp_dialondemand'] = isset($a_ppps[$pppid]['ondemand']);
169
		$pconfig['pptp_idletimeout'] = $a_ppps[$pppid]['timeout'];
170
	}
171 8256f324 gnhb
} else {
172 1d7e1d6c gnhb
	$pconfig['ptpid'] = interfaces_ptpid_next();
173 8256f324 gnhb
	$pppid = count($a_ppps);
174 d85ba87f gnhb
}
175 5b237745 Scott Ullrich
$pconfig['dhcphostname'] = $wancfg['dhcphostname'];
176 bc40d758 Seth Mos
$pconfig['alias-address'] = $wancfg['alias-address'];
177
$pconfig['alias-subnet'] = $wancfg['alias-subnet'];
178 850324a2 jim-p
$pconfig['dhcprejectfrom'] = $wancfg['dhcprejectfrom'];
179 e4d40f41 gnhb
$pconfig['dhcp_plus'] = isset($wancfg['dhcp_plus']);
180 f1f60c92 Ermal Luçi
$pconfig['descr'] = remove_bad_chars($wancfg['descr']);
181 6a688547 Ermal
$pconfig['enable'] = isset($wancfg['enable']);
182 f1f60c92 Ermal Luçi
183 9ff9a1c7 Seth Mos
if (is_array($config['aliases']['alias'])) {
184
	foreach($config['aliases']['alias'] as $alias) {
185
		if($alias['name'] == $wancfg['descr']) {
186 ea6be4a7 Erik Fonnesbeck
			$input_errors[] = sprintf(gettext("Sorry, an alias with the name %s already exists."),$wancfg['descr']);
187 9ff9a1c7 Seth Mos
		}
188
	}
189
}
190
191
switch($wancfg['ipaddr']) {
192
	case "dhcp":
193
		$pconfig['type'] = "dhcp";
194
		break;
195
	case "pppoe":
196
	case "pptp":
197 e4d40f41 gnhb
	case "l2tp":
198 611ae852 Ermal
	case "ppp":
199 d85ba87f gnhb
		$pconfig['type'] = $wancfg['ipaddr'];
200 611ae852 Ermal
		break;
201 9ff9a1c7 Seth Mos
	default:
202 85e9cfee Phil Davis
		if(is_ipaddrv4($wancfg['ipaddr'])) {
203 47593ac6 Seth Mos
			$pconfig['type'] = "staticv4";
204 9ff9a1c7 Seth Mos
			$pconfig['ipaddr'] = $wancfg['ipaddr'];
205
			$pconfig['subnet'] = $wancfg['subnet'];
206
			$pconfig['gateway'] = $wancfg['gateway'];
207 dd18038e Ermal
		} else
208 9ff9a1c7 Seth Mos
			$pconfig['type'] = "none";
209
		break;
210
}
211 5b237745 Scott Ullrich
212 47593ac6 Seth Mos
switch($wancfg['ipaddrv6']) {
213 feb88a14 smos
	case "slaac":
214
		$pconfig['type6'] = "slaac";
215
		break;
216 e029943a Seth Mos
	case "dhcp6":
217
		$pconfig['dhcp6-duid'] = $wancfg['dhcp6-duid'];
218 8839e3fb bcyrill
		if(!isset($wancfg['dhcp6-ia-pd-len']))
219 e029943a Seth Mos
			$wancfg['dhcp6-ia-pd-len'] = "none";
220
		$pconfig['dhcp6-ia-pd-len'] = $wancfg['dhcp6-ia-pd-len'];
221 90652fbf Daniel Becker
		$pconfig['dhcp6-ia-pd-send-hint'] = isset($wancfg['dhcp6-ia-pd-send-hint']);
222 e029943a Seth Mos
		$pconfig['type6'] = "dhcp6";
223 6dcbd1b3 smos
		$pconfig['dhcp6prefixonly'] = isset($wancfg['dhcp6prefixonly']);
224 329024c8 Ermal
		$pconfig['dhcp6usev4iface'] = isset($wancfg['dhcp6usev4iface']);
225 e029943a Seth Mos
		break;
226 31c43fd3 smos
	case "6to4":
227
		$pconfig['type6'] = "6to4";
228
		break;
229 20a7cb15 smos
	case "track6":
230
		$pconfig['type6'] = "track6";
231
		$pconfig['track6-interface'] = $wancfg['track6-interface'];
232 02203e6d Renato Botelho
		if ($wancfg['track6-prefix-id'] == "")
233
			$pconfig['track6-prefix-id'] = 0;
234
		else
235
			$pconfig['track6-prefix-id'] = $wancfg['track6-prefix-id'];
236
		$pconfig['track6-prefix-id--hex'] = sprintf("%x", $pconfig['track6-prefix-id']);
237 20a7cb15 smos
		break;
238 7d567088 smos
	case "6rd":
239
		$pconfig['prefix-6rd'] = $wancfg['prefix-6rd'];
240 12215bfb smos
		if($wancfg['prefix-6rd-v4plen'] == "")
241
			$wancfg['prefix-6rd-v4plen'] = "0";
242
		$pconfig['prefix-6rd-v4plen'] = $wancfg['prefix-6rd-v4plen'];
243 7d567088 smos
		$pconfig['type6'] = "6rd";
244
		$pconfig['gateway-6rd'] = $wancfg['gateway-6rd'];
245
		break;
246 47593ac6 Seth Mos
	default:
247 85e9cfee Phil Davis
		if(is_ipaddrv6($wancfg['ipaddrv6'])) {
248 e029943a Seth Mos
			$pconfig['type6'] = "staticv6";
249 47593ac6 Seth Mos
			$pconfig['ipaddrv6'] = $wancfg['ipaddrv6'];
250
			$pconfig['subnetv6'] = $wancfg['subnetv6'];
251
			$pconfig['gatewayv6'] = $wancfg['gatewayv6'];
252 e029943a Seth Mos
		} else
253
			$pconfig['type6'] = "none";
254 47593ac6 Seth Mos
		break;
255
}
256
257 0eb78676 smos
// print_r($pconfig);
258 47593ac6 Seth Mos
259 5b237745 Scott Ullrich
$pconfig['blockpriv'] = isset($wancfg['blockpriv']);
260 ff1955ee Bill Marquette
$pconfig['blockbogons'] = isset($wancfg['blockbogons']);
261 5b237745 Scott Ullrich
$pconfig['spoofmac'] = $wancfg['spoofmac'];
262
$pconfig['mtu'] = $wancfg['mtu'];
263 4cea5cf8 Ermal
$pconfig['mss'] = $wancfg['mss'];
264 5b237745 Scott Ullrich
265
/* Wireless interface? */
266 b7f01f59 Bill Marquette
if (isset($wancfg['wireless'])) {
267 ebf94efb Erik Fonnesbeck
	/* Sync first to be sure it displays the actual settings that will be used */
268
	interface_sync_wireless_clones($wancfg, false);
269 4634cb48 Ermal Luçi
	/* Get wireless modes */
270 10394059 Scott Ullrich
	$wlanif = get_real_interface($if);
271 3f23b74d Erik Fonnesbeck
	if (!does_interface_exist($wlanif))
272
		interface_wireless_clone($wlanif, $wancfg);
273 34808d4e Erik Fonnesbeck
	$wlanbaseif = interface_get_wireless_base($wancfg['if']);
274 6681fdd3 Erik Fonnesbeck
	preg_match("/^(.*?)([0-9]*)$/", $wlanbaseif, $wlanbaseif_split);
275 10394059 Scott Ullrich
	$wl_modes = get_wireless_modes($if);
276 f4094f0d Erik Fonnesbeck
	$wl_chaninfo = get_wireless_channel_info($if);
277 6681fdd3 Erik Fonnesbeck
	$wl_sysctl_prefix = 'dev.' . $wlanbaseif_split[1] . '.' . $wlanbaseif_split[2];
278 537bf7b3 Erik Fonnesbeck
	$wl_sysctl = get_sysctl(array("{$wl_sysctl_prefix}.diversity", "{$wl_sysctl_prefix}.txantenna", "{$wl_sysctl_prefix}.rxantenna",
279 6d529efd Renato Botelho
				      "{$wl_sysctl_prefix}.slottime", "{$wl_sysctl_prefix}.acktimeout", "{$wl_sysctl_prefix}.ctstimeout"));
280 071d63b9 Erik Fonnesbeck
	$wl_regdomain_xml_attr = array();
281
	$wl_regdomain_xml = parse_xml_regdomain($wl_regdomain_xml_attr);
282
	$wl_regdomains = &$wl_regdomain_xml['regulatory-domains']['rd'];
283
	$wl_regdomains_attr = &$wl_regdomain_xml_attr['regulatory-domains']['rd'];
284
	$wl_countries = &$wl_regdomain_xml['country-codes']['country'];
285
	$wl_countries_attr = &$wl_regdomain_xml_attr['country-codes']['country'];
286 f62c44d8 Erik Fonnesbeck
	$pconfig['persistcommonwireless'] = isset($config['wireless']['interfaces'][$wlanbaseif]);
287 4634cb48 Ermal Luçi
	$pconfig['standard'] = $wancfg['wireless']['standard'];
288
	$pconfig['mode'] = $wancfg['wireless']['mode'];
289
	$pconfig['protmode'] = $wancfg['wireless']['protmode'];
290 ff2f4e43 Ermal Luçi
	$pconfig['ssid'] = $wancfg['wireless']['ssid'];
291 4634cb48 Ermal Luçi
	$pconfig['channel'] = $wancfg['wireless']['channel'];
292
	$pconfig['txpower'] = $wancfg['wireless']['txpower'];
293 537bf7b3 Erik Fonnesbeck
	$pconfig['diversity'] = $wancfg['wireless']['diversity'];
294
	$pconfig['txantenna'] = $wancfg['wireless']['txantenna'];
295
	$pconfig['rxantenna'] = $wancfg['wireless']['rxantenna'];
296 4634cb48 Ermal Luçi
	$pconfig['distance'] = $wancfg['wireless']['distance'];
297 20f09b3b Erik Fonnesbeck
	$pconfig['regdomain'] = $wancfg['wireless']['regdomain'];
298
	$pconfig['regcountry'] = $wancfg['wireless']['regcountry'];
299
	$pconfig['reglocation'] = $wancfg['wireless']['reglocation'];
300 4634cb48 Ermal Luçi
	$pconfig['wme_enable'] = isset($wancfg['wireless']['wme']['enable']);
301 57bbd532 Erik Fonnesbeck
	if (isset($wancfg['wireless']['puren']['enable']))
302
		$pconfig['puremode'] = '11n';
303
	else if (isset($wancfg['wireless']['pureg']['enable']))
304
		$pconfig['puremode'] = '11g';
305
	else
306
		$pconfig['puremode'] = 'any';
307 4634cb48 Ermal Luçi
	$pconfig['apbridge_enable'] = isset($wancfg['wireless']['apbridge']['enable']);
308
	$pconfig['authmode'] = $wancfg['wireless']['authmode'];
309
	$pconfig['hidessid_enable'] = isset($wancfg['wireless']['hidessid']['enable']);
310 5949124c Scott Ullrich
	$pconfig['auth_server_addr'] = $wancfg['wireless']['auth_server_addr'];
311
	$pconfig['auth_server_port'] = $wancfg['wireless']['auth_server_port'];
312
	$pconfig['auth_server_shared_secret'] = $wancfg['wireless']['auth_server_shared_secret'];
313 32764288 Namezero
	$pconfig['auth_server_addr2'] = $wancfg['wireless']['auth_server_addr2'];
314
	$pconfig['auth_server_port2'] = $wancfg['wireless']['auth_server_port2'];
315
	$pconfig['auth_server_shared_secret2'] = $wancfg['wireless']['auth_server_shared_secret2'];
316 4634cb48 Ermal Luçi
	if (is_array($wancfg['wireless']['wpa'])) {
317
		$pconfig['debug_mode'] = $wancfg['wireless']['wpa']['debug_mode'];
318
		$pconfig['macaddr_acl'] = $wancfg['wireless']['wpa']['macaddr_acl'];
319
		$pconfig['mac_acl_enable'] = isset($wancfg['wireless']['wpa']['mac_acl_enable']);
320
		$pconfig['auth_algs'] = $wancfg['wireless']['wpa']['auth_algs'];
321
		$pconfig['wpa_mode'] = $wancfg['wireless']['wpa']['wpa_mode'];
322
		$pconfig['wpa_key_mgmt'] = $wancfg['wireless']['wpa']['wpa_key_mgmt'];
323
		$pconfig['wpa_pairwise'] = $wancfg['wireless']['wpa']['wpa_pairwise'];
324
		$pconfig['wpa_group_rekey'] = $wancfg['wireless']['wpa']['wpa_group_rekey'];
325
		$pconfig['wpa_gmk_rekey'] = $wancfg['wireless']['wpa']['wpa_gmk_rekey'];
326
		$pconfig['wpa_strict_rekey'] = isset($wancfg['wireless']['wpa']['wpa_strict_rekey']);
327
		$pconfig['passphrase'] = $wancfg['wireless']['wpa']['passphrase'];
328 bfe1ef8c Ermal Luçi
		$pconfig['ieee8021x'] = isset($wancfg['wireless']['wpa']['ieee8021x']['enable']);
329 ea62cd32 Scott Ullrich
		$pconfig['rsn_preauth'] = isset($wancfg['wireless']['wpa']['rsn_preauth']);
330 4634cb48 Ermal Luçi
		$pconfig['ext_wpa_sw'] = $wancfg['wireless']['wpa']['ext_wpa_sw'];
331
		$pconfig['wpa_enable'] = isset($wancfg['wireless']['wpa']['enable']);
332
	}
333
	$pconfig['wep_enable'] = isset($wancfg['wireless']['wep']['enable']);
334
	$pconfig['mac_acl'] = $wancfg['wireless']['mac_acl'];
335 270c4607 Scott Ullrich
	if (is_array($wancfg['wireless']['wep']) && is_array($wancfg['wireless']['wep']['key'])) {
336 53c82ef9 Scott Ullrich
		$i = 1;
337
		foreach ($wancfg['wireless']['wep']['key'] as $wepkey) {
338
			$pconfig['key' . $i] = $wepkey['value'];
339
			if (isset($wepkey['txkey']))
340
				$pconfig['txkey'] = $i;
341
			$i++;
342
		}
343
		if (!isset($wepkey['txkey']))
344
			$pconfig['txkey'] = 1;
345 4634cb48 Ermal Luçi
	}
346 5b237745 Scott Ullrich
}
347
348 6b2d4b5a Darren Embry
$ipv6_delegation_length = calculate_ipv6_delegation_length($pconfig['track6-interface']);
349
$ipv6_num_prefix_ids = pow(2, $ipv6_delegation_length);
350
351 43e255d2 Ermal Luçi
if ($_POST['apply']) {
352 7994c3f8 Ermal Luçi
	unset($input_errors);
353 a368a026 Ermal Lu?i
	if (!is_subsystem_dirty('interfaces'))
354 136c598d Carlos Eduardo Ramos
		$intput_errors[] = gettext("You have already applied your settings!");
355 c0948c6c Renato Botelho
	else {
356 270c4607 Scott Ullrich
		unlink_if_exists("{$g['tmp_path']}/config.cache");
357 a368a026 Ermal Lu?i
		clear_subsystem_dirty('interfaces');
358 c0948c6c Renato Botelho
359 dd18038e Ermal
		if (file_exists("{$g['tmp_path']}/.interfaces.apply")) {
360
			$toapplylist = unserialize(file_get_contents("{$g['tmp_path']}/.interfaces.apply"));
361 18f338da Ermal Lu?i
			foreach ($toapplylist as $ifapply => $ifcfgo) {
362 4144aa81 Ermal
				if (isset($config['interfaces'][$ifapply]['enable'])) {
363
					interface_bring_down($ifapply, false, $ifcfgo);
364 613a3cc5 Renato Botelho
					interface_configure($ifapply, true);
365 4144aa81 Ermal
				} else
366 dd1fc379 Ermal
					interface_bring_down($ifapply, true, $ifcfgo);
367 dd18038e Ermal
			}
368
		}
369 c0948c6c Renato Botelho
		/* restart snmp so that it binds to correct address */
370
		services_snmpd_configure();
371 a5d6f60b Ermal Lu?i
372 270c4607 Scott Ullrich
		/* sync filter configuration */
373 61fc1160 Scott Ullrich
		setup_gateways_monitor();
374 a5d6f60b Ermal Lu?i
375 18f338da Ermal Lu?i
		clear_subsystem_dirty('interfaces');
376 c0948c6c Renato Botelho
377 b4d36392 Scott Ullrich
		filter_configure();
378 c0948c6c Renato Botelho
379 1ee5d4b3 sullrich
		enable_rrd_graphing();
380 244dee81 Renato Botelho
381
		if (is_subsystem_dirty('staticroutes') && (system_routing_configure() == 0))
382
			clear_subsystem_dirty('staticroutes');
383 7994c3f8 Ermal Luçi
	}
384 dd18038e Ermal
	@unlink("{$g['tmp_path']}/.interfaces.apply");
385 7994c3f8 Ermal Luçi
	header("Location: interfaces.php?if={$if}");
386
	exit;
387 dd18038e Ermal
} else if ($_POST && $_POST['enable'] != "yes") {
388 270c4607 Scott Ullrich
	unset($wancfg['enable']);
389 dd18038e Ermal
	if (isset($wancfg['wireless']))
390 8f0289e7 Erik Fonnesbeck
		interface_sync_wireless_clones($wancfg, false);
391 270c4607 Scott Ullrich
	write_config("Interface {$_POST['descr']}({$if}) is now disabled.");
392 a368a026 Ermal Lu?i
	mark_subsystem_dirty('interfaces');
393 ee5c01b5 Seth Mos
	if (file_exists("{$g['tmp_path']}/.interfaces.apply")) {
394 dd18038e Ermal
		$toapplylist = unserialize(file_get_contents("{$g['tmp_path']}/.interfaces.apply"));
395 ee5c01b5 Seth Mos
	} else {
396 dd18038e Ermal
		$toapplylist = array();
397 ee5c01b5 Seth Mos
	}
398 e12ad49f Renato Botelho
	$toapplylist[$if]['ifcfg'] = $wancfg;
399
	$toapplylist[$if]['ppps'] = $a_ppps;
400 ee5c01b5 Seth Mos
	/* we need to be able remove IP aliases for IPv6 */
401 dd18038e Ermal
	file_put_contents("{$g['tmp_path']}/.interfaces.apply", serialize($toapplylist));
402 270c4607 Scott Ullrich
	header("Location: interfaces.php?if={$if}");
403
	exit;
404 dd18038e Ermal
} else if ($_POST) {
405 270c4607 Scott Ullrich
406 53c82ef9 Scott Ullrich
	unset($input_errors);
407
	$pconfig = $_POST;
408 02203e6d Renato Botelho
	if (is_numeric("0x" . $_POST['track6-prefix-id--hex']))
409 6b2d4b5a Darren Embry
		$pconfig['track6-prefix-id'] = intval($_POST['track6-prefix-id--hex'], 16);
410 02203e6d Renato Botelho
	else
411
		$pconfig['track6-prefix-id'] = 0;
412 53c82ef9 Scott Ullrich
	conf_mount_rw();
413 fe24301f Ermal
414 53c82ef9 Scott Ullrich
	/* filter out spaces from descriptions  */
415
	$_POST['descr'] = remove_bad_chars($_POST['descr']);
416 fe24301f Ermal
417 b4d36392 Scott Ullrich
	/* okay first of all, cause we are just hiding the PPPoE HTML
418 53c82ef9 Scott Ullrich
	 * fields releated to PPPoE resets, we are going to unset $_POST
419
	 * vars, if the reset feature should not be used. Otherwise the
420
	 * data validation procedure below, may trigger a false error
421
	 * message.
422
	 */
423 e40e6724 gnhb
	if (empty($_POST['pppoe-reset-type'])) {
424 c0948c6c Renato Botelho
		unset($_POST['pppoe_pr_type']);
425 53c82ef9 Scott Ullrich
		unset($_POST['pppoe_resethour']);
426
		unset($_POST['pppoe_resetminute']);
427
		unset($_POST['pppoe_resetdate']);
428
		unset($_POST['pppoe_pr_preset_val']);
429
	}
430
	/* description unique? */
431 dd18038e Ermal
	foreach ($ifdescrs as $ifent => $ifdescr) {
432 79851fc8 Ermal
		if ($if != $ifent && $ifdescr == $_POST['descr']) {
433 136c598d Carlos Eduardo Ramos
			$input_errors[] = gettext("An interface with the specified description already exists.");
434 79851fc8 Ermal
			break;
435
		}
436 53c82ef9 Scott Ullrich
	}
437
	/* input validation */
438 e029943a Seth Mos
	if (isset($config['dhcpd']) && isset($config['dhcpd'][$if]['enable']) && (! preg_match("/^staticv4/", $_POST['type'])))
439 136c598d Carlos Eduardo Ramos
		$input_errors[] = gettext("The DHCP Server is active on this interface and it can be used only with a static IP configuration. Please disable the DHCP Server service on this interface first, then change the interface configuration.");
440 1f56ce58 Renato Botelho
	if (isset($config['dhcpdv6']) && isset($config['dhcpdv6'][$if]['enable']) && (! preg_match("/^staticv6/", $_POST['type6'])))
441 e029943a Seth Mos
		$input_errors[] = gettext("The DHCP6 Server is active on this interface and it can be used only with a static IPv6 configuration. Please disable the DHCPv6 Server service on this interface first, then change the interface configuration.");
442 0c9da721 Ermal Lu?i
443 ef130e9f Ermal
	switch(strtolower($_POST['type'])) {
444 47593ac6 Seth Mos
		case "staticv4":
445 9ff9a1c7 Seth Mos
			$reqdfields = explode(" ", "ipaddr subnet gateway");
446 47593ac6 Seth Mos
			$reqdfieldsn = array(gettext("IPv4 address"),gettext("Subnet bit count"),gettext("Gateway"));
447
			do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors);
448
			break;
449 88c00a65 Ermal
		case "none":
450 62a4abc9 Ermal
			if(is_array($config['virtualip']['vip'])) {
451
				foreach ($config['virtualip']['vip'] as $vip) {
452 2452cc37 Darren Embry
					if (is_ipaddrv4($vip['subnet']) && $vip['interface'] == $if)
453
						$input_errors[] = gettext("This interface is referenced by IPv4 VIPs. Please delete those before setting the interface to 'none' configuration.");
454 62a4abc9 Ermal
				}
455
			}
456 88c00a65 Ermal
		case "dhcp":
457 a9543eae Seth Mos
			if (in_array($wancfg['ipaddr'], array("ppp", "pppoe", "pptp", "l2tp")))
458 d1d0a1ad Vinicius Coque
				$input_errors[] = sprintf(gettext("You have to reassign the interface to be able to configure as %s."),$_POST['type']);
459 47593ac6 Seth Mos
			break;
460 513b762e gnhb
		case "ppp":
461
			$reqdfields = explode(" ", "port phone");
462 8cc6876f groo
			$reqdfieldsn = array(gettext("Modem Port"),gettext("Phone Number"));
463 513b762e gnhb
			do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors);
464
			break;
465 ef130e9f Ermal
		case "pppoe":
466 9ff9a1c7 Seth Mos
			if ($_POST['pppoe_dialondemand']) {
467
				$reqdfields = explode(" ", "pppoe_username pppoe_password pppoe_dialondemand pppoe_idletimeout");
468 8cc6876f groo
				$reqdfieldsn = array(gettext("PPPoE username"),gettext("PPPoE password"),gettext("Dial on demand"),gettext("Idle timeout value"));
469 9ff9a1c7 Seth Mos
			} else {
470
				$reqdfields = explode(" ", "pppoe_username pppoe_password");
471 8cc6876f groo
				$reqdfieldsn = array(gettext("PPPoE username"),gettext("PPPoE password"));
472 9ff9a1c7 Seth Mos
			}
473
			do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors);
474
			break;
475 ef130e9f Ermal
		case "pptp":
476 9ff9a1c7 Seth Mos
			if ($_POST['pptp_dialondemand']) {
477
				$reqdfields = explode(" ", "pptp_username pptp_password pptp_local pptp_subnet pptp_remote pptp_dialondemand pptp_idletimeout");
478 8cc6876f groo
				$reqdfieldsn = array(gettext("PPTP username"),gettext("PPTP password"),gettext("PPTP local IP address"),gettext("PPTP subnet"),gettext("PPTP remote IP address"),gettext("Dial on demand"),gettext("Idle timeout value"));
479 9ff9a1c7 Seth Mos
			} else {
480
				$reqdfields = explode(" ", "pptp_username pptp_password pptp_local pptp_subnet pptp_remote");
481 8cc6876f groo
				$reqdfieldsn = array(gettext("PPTP username"),gettext("PPTP password"),gettext("PPTP local IP address"),gettext("PPTP subnet"),gettext("PPTP remote IP address"));
482 9ff9a1c7 Seth Mos
			}
483
			do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors);
484
			break;
485 e4d40f41 gnhb
		case "l2tp":
486
			if ($_POST['pptp_dialondemand']) {
487
				$reqdfields = explode(" ", "pptp_username pptp_password pptp_remote pptp_dialondemand pptp_idletimeout");
488
				$reqdfieldsn = array(gettext("L2TP username"),gettext("L2TP password"),gettext("L2TP remote IP address"),gettext("Dial on demand"),gettext("Idle timeout value"));
489
			} else {
490
				$reqdfields = explode(" ", "pptp_username pptp_password pptp_remote");
491
				$reqdfieldsn = array(gettext("L2TP username"),gettext("L2TP password"),gettext("L2TP remote IP address"));
492
			}
493
			do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors);
494
			break;
495 53c82ef9 Scott Ullrich
	}
496 e029943a Seth Mos
	switch(strtolower($_POST['type6'])) {
497
		case "staticv6":
498 20b49b17 Seth Mos
			$reqdfields = explode(" ", "ipaddrv6 subnetv6 gatewayv6");
499 1e37f324 smos
			$reqdfieldsn = array(gettext("IPv6 address"),gettext("Subnet bit count"),gettext("Gateway"));
500 e029943a Seth Mos
			do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors);
501
			break;
502
		case "none":
503
			if(is_array($config['virtualip']['vip'])) {
504
				foreach ($config['virtualip']['vip'] as $vip) {
505 2452cc37 Darren Embry
					if (is_ipaddrv6($vip['subnet']) && $vip['interface'] == $if)
506
						$input_errors[] = gettext("This interface is referenced by IPv6 VIPs. Please delete those before setting the interface to 'none' configuration.");
507 e029943a Seth Mos
				}
508
			}
509
		case "dhcp6":
510
			if (in_array($wancfg['ipaddrv6'], array()))
511 8b198c64 smos
				$input_errors[] = sprintf(gettext("You have to reassign the interface to be able to configure as %s."),$_POST['type6']);
512 e029943a Seth Mos
			break;
513 7d567088 smos
		case "6rd":
514 8b198c64 smos
			foreach ($ifdescrs as $ifent => $ifdescr) {
515 dcddb2fa Ermal
				if ($if != $ifent && ($config[interfaces][$ifent]['ipaddrv6'] == $_POST['type6'])) {
516
					if ($config[interfaces][$ifent]['prefix-6rd'] == $_POST['prefix-6rd']) {
517
						$input_errors[] = gettext("You can only have one interface configured in 6rd with same prefix.");
518
						break;
519
					}
520 8b198c64 smos
				}
521
			}
522 7d567088 smos
			if (in_array($wancfg['ipaddrv6'], array()))
523 8b198c64 smos
				$input_errors[] = sprintf(gettext("You have to reassign the interface to be able to configure as %s."),$_POST['type6']);
524 7d567088 smos
			break;
525 31c43fd3 smos
		case "6to4":
526 8b198c64 smos
			foreach ($ifdescrs as $ifent => $ifdescr) {
527 dcddb2fa Ermal
				if ($if != $ifent && ($config[interfaces][$ifent]['ipaddrv6'] == $_POST['type6'])) {
528
					$input_errors[] = sprintf(gettext("You can only have one interface configured as 6to4."),$_POST['type6']);
529 8b198c64 smos
					break;
530
				}
531
			}
532 31c43fd3 smos
			if (in_array($wancfg['ipaddrv6'], array()))
533 8b198c64 smos
				$input_errors[] = sprintf(gettext("You have to reassign the interface to be able to configure as %s."),$_POST['type6']);
534 31c43fd3 smos
			break;
535 20a7cb15 smos
		case "track6":
536
			/* needs to check if $track6-prefix-id is used on another interface */
537
			if (in_array($wancfg['ipaddrv6'], array()))
538 8b198c64 smos
				$input_errors[] = sprintf(gettext("You have to reassign the interface to be able to configure as %s."),$_POST['type6']);
539 6b2d4b5a Darren Embry
540
			if ($_POST['track6-prefix-id--hex'] != "" && !is_numeric("0x" . $_POST['track6-prefix-id--hex'])) {
541
				$input_errors[] = gettext("You must enter a valid hexadecimal number for the IPv6 prefix ID.");
542
			} else {
543
				$track6_prefix_id = intval($_POST['track6-prefix-id--hex'], 16);
544
				if ($track6_prefix_id < 0 || $track6_prefix_id >= $ipv6_num_prefix_ids) {
545
					$input_errors[] = gettext("You specified an IPv6 prefix ID that is out of range.");
546
				}
547
			}
548 20a7cb15 smos
			break;
549 e029943a Seth Mos
	}
550 9ff9a1c7 Seth Mos
551 6d529efd Renato Botelho
552 53c82ef9 Scott Ullrich
	/* normalize MAC addresses - lowercase and convert Windows-ized hyphenated MACs to colon delimited */
553 42fa2c01 Renato Botelho
	$staticroutes = get_staticroutes(true);
554 53c82ef9 Scott Ullrich
	$_POST['spoofmac'] = strtolower(str_replace("-", ":", $_POST['spoofmac']));
555 e6c60013 Renato Botelho
	if ($_POST['ipaddr']) {
556
		if (!is_ipaddrv4($_POST['ipaddr']))
557
			$input_errors[] = gettext("A valid IPv4 address must be specified.");
558 42fa2c01 Renato Botelho
		else {
559
			if (is_ipaddr_configured($_POST['ipaddr'], $if, true))
560
				$input_errors[] = gettext("This IPv4 address is being used by another interface or VIP.");
561
562
			foreach ($staticroutes as $route_subnet) {
563 e480d64b Renato Botelho
				list($network, $subnet) = explode("/", $route_subnet);
564
				if ($_POST['subnet'] == $subnet && $network == gen_subnet($_POST['ipaddr'], $_POST['subnet'])) {
565 42fa2c01 Renato Botelho
					$input_errors[] = gettext("This IPv4 address conflicts with a Static Route.");
566
					break;
567
				}
568 e480d64b Renato Botelho
				unset($network, $subnet);
569 42fa2c01 Renato Botelho
			}
570
		}
571 e6c60013 Renato Botelho
	}
572 6e828f98 Renato Botelho
	if ($_POST['ipaddrv6']) {
573
		if (!is_ipaddrv6($_POST['ipaddrv6']))
574
			$input_errors[] = gettext("A valid IPv6 address must be specified.");
575 42fa2c01 Renato Botelho
		else {
576
			if (is_ipaddr_configured($_POST['ipaddrv6'], $if, true))
577
				$input_errors[] = gettext("This IPv6 address is being used by another interface or VIP.");
578
579
			foreach ($staticroutes as $route_subnet) {
580 e480d64b Renato Botelho
				list($network, $subnet) = explode("/", $route_subnet);
581
				if ($_POST['subnetv6'] == $subnet && $network == gen_subnetv6($_POST['ipaddrv6'], $_POST['subnetv6'])) {
582 42fa2c01 Renato Botelho
					$input_errors[] = gettext("This IPv6 address conflicts with a Static Route.");
583
					break;
584
				}
585 e480d64b Renato Botelho
				unset($network, $subnet);
586 42fa2c01 Renato Botelho
			}
587
		}
588 6e828f98 Renato Botelho
	}
589 c0948c6c Renato Botelho
	if (($_POST['subnet'] && !is_numeric($_POST['subnet'])))
590 136c598d Carlos Eduardo Ramos
		$input_errors[] = gettext("A valid subnet bit count must be specified.");
591 47593ac6 Seth Mos
	if (($_POST['subnetv6'] && !is_numeric($_POST['subnetv6'])))
592
		$input_errors[] = gettext("A valid subnet bit count must be specified.");
593 85e9cfee Phil Davis
	if (($_POST['alias-address'] && !is_ipaddrv4($_POST['alias-address'])))
594 136c598d Carlos Eduardo Ramos
		$input_errors[] = gettext("A valid alias IP address must be specified.");
595 c0948c6c Renato Botelho
	if (($_POST['alias-subnet'] && !is_numeric($_POST['alias-subnet'])))
596 136c598d Carlos Eduardo Ramos
		$input_errors[] = gettext("A valid alias subnet bit count must be specified.");
597 850324a2 jim-p
	if ($_POST['dhcprejectfrom'] && !is_ipaddrv4($_POST['dhcprejectfrom']))
598
		$input_errors[] = gettext("A valid alias IP address must be specified to reject DHCP Leases from.");
599 47593ac6 Seth Mos
	if (($_POST['gateway'] != "none") || ($_POST['gatewayv6'] != "none")) {
600 53c82ef9 Scott Ullrich
		$match = false;
601 9ff9a1c7 Seth Mos
		foreach($a_gateways as $gateway) {
602
			if(in_array($_POST['gateway'], $gateway)) {
603 53c82ef9 Scott Ullrich
				$match = true;
604 9ff9a1c7 Seth Mos
			}
605
		}
606 47593ac6 Seth Mos
		foreach($a_gateways as $gateway) {
607
			if(in_array($_POST['gatewayv6'], $gateway)) {
608
				$match = true;
609
			}
610
		}
611 9ff9a1c7 Seth Mos
		if(!$match) {
612 136c598d Carlos Eduardo Ramos
			$input_errors[] = gettext("A valid gateway must be specified.");
613 9ff9a1c7 Seth Mos
		}
614 53c82ef9 Scott Ullrich
	}
615 c0948c6c Renato Botelho
	if (($_POST['provider'] && !is_domain($_POST['provider'])))
616 136c598d Carlos Eduardo Ramos
		$input_errors[] = gettext("The service name contains invalid characters.");
617 c0948c6c Renato Botelho
	if (($_POST['pppoe_idletimeout'] != "") && !is_numericint($_POST['pppoe_idletimeout']))
618 136c598d Carlos Eduardo Ramos
		$input_errors[] = gettext("The idle timeout value must be an integer.");
619 c0948c6c Renato Botelho
	if ($_POST['pppoe_resethour'] <> "" && !is_numericint($_POST['pppoe_resethour']) &&
620
		$_POST['pppoe_resethour'] >= 0 && $_POST['pppoe_resethour'] <=23)
621 53c82ef9 Scott Ullrich
			$input_errors[] = gettext("A valid PPPoE reset hour must be specified (0-23).");
622 c0948c6c Renato Botelho
	if ($_POST['pppoe_resetminute'] <> "" && !is_numericint($_POST['pppoe_resetminute']) &&
623
		$_POST['pppoe_resetminute'] >= 0 && $_POST['pppoe_resetminute'] <=59)
624 53c82ef9 Scott Ullrich
			$input_errors[] = gettext("A valid PPPoE reset minute must be specified (0-59).");
625 c0948c6c Renato Botelho
	if ($_POST['pppoe_resetdate'] <> "" && !is_numeric(str_replace("/", "", $_POST['pppoe_resetdate'])))
626 53c82ef9 Scott Ullrich
		$input_errors[] = gettext("A valid PPPoE reset date must be specified (mm/dd/yyyy).");
627 85e9cfee Phil Davis
	if (($_POST['pptp_local'] && !is_ipaddrv4($_POST['pptp_local'])))
628 136c598d Carlos Eduardo Ramos
		$input_errors[] = gettext("A valid PPTP local IP address must be specified.");
629 c0948c6c Renato Botelho
	if (($_POST['pptp_subnet'] && !is_numeric($_POST['pptp_subnet'])))
630 136c598d Carlos Eduardo Ramos
		$input_errors[] = gettext("A valid PPTP subnet bit count must be specified.");
631 85e9cfee Phil Davis
	if (($_POST['pptp_remote'] && !is_ipaddrv4($_POST['pptp_remote']) && !is_hostname($_POST['gateway'][$iface])))
632 136c598d Carlos Eduardo Ramos
		$input_errors[] = gettext("A valid PPTP remote IP address must be specified.");
633 c0948c6c Renato Botelho
	if (($_POST['pptp_idletimeout'] != "") && !is_numericint($_POST['pptp_idletimeout']))
634 136c598d Carlos Eduardo Ramos
		$input_errors[] = gettext("The idle timeout value must be an integer.");
635 c0948c6c Renato Botelho
	if (($_POST['spoofmac'] && !is_macaddr($_POST['spoofmac'])))
636 136c598d Carlos Eduardo Ramos
		$input_errors[] = gettext("A valid MAC address must be specified.");
637 0d0d4a27 Renato Botelho
	if ($_POST['mtu']) {
638 b783eaf2 Ermal
		if ($_POST['mtu'] < 576 || $_POST['mtu'] > 9000)
639 0d0d4a27 Renato Botelho
			$input_errors[] = gettext("The MTU must be greater than 576 bytes.");
640
641 a58a9ece Ermal
		if (stristr($wancfg['if'], "_vlan")) {
642 0d0d4a27 Renato Botelho
			$realhwif_array = get_parent_interface($wancfg['if']);
643
			// Need code to handle MLPPP if we ever use $realhwif for MLPPP handling
644
			$parent_realhwif = $realhwif_array[0];
645
			$parent_if = convert_real_interface_to_friendly_interface_name($parent_realhwif);
646
			if (!empty($parent_if) && isset($config['interfaces'][$parent_if]['mtu'])) {
647
				$parent_mtu = $config['interfaces'][$parent_if]['mtu'];
648
649
				if ($_POST['mtu'] > $parent_mtu)
650
					$input_errors[] = gettext("MTU of a vlan should not be bigger than parent interface.");
651
			}
652
		} else {
653
			foreach ($config['interfaces'] as $idx => $ifdata) {
654
				if (($idx == $if) || !preg_match('/_vlan[0-9]/', $ifdata['if']))
655
					continue;
656
657
				$realhwif_array = get_parent_interface($ifdata['if']);
658
				// Need code to handle MLPPP if we ever use $realhwif for MLPPP handling
659
				$parent_realhwif = $realhwif_array[0];
660
661
				if ($parent_realhwif != $wancfg['if'])
662
					continue;
663
664
				if (isset($ifdata['mtu']) && $ifdata['mtu'] > $_POST['mtu'])
665
					$input_errors[] = sprintf(gettext("Interface %s (VLAN) has MTU set to a bigger value"), $ifdata['descr']);
666
			}
667
		}
668
	}
669 c0948c6c Renato Botelho
	if ($_POST['mss'] && ($_POST['mss'] < 576))
670 4cea5cf8 Ermal
		$input_errors[] = gettext("The MSS must be greater than 576 bytes.");
671 53c82ef9 Scott Ullrich
	/* Wireless interface? */
672
	if (isset($wancfg['wireless'])) {
673 bb9d70d2 Erik Fonnesbeck
		$reqdfields = array("mode");
674
		$reqdfieldsn = array(gettext("Mode"));
675
		if ($_POST['mode'] == 'hostap') {
676
			$reqdfields[] = "ssid";
677
			$reqdfieldsn[] = gettext("SSID");
678
		}
679 53c82ef9 Scott Ullrich
		do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors);
680 597330aa Erik Fonnesbeck
		check_wireless_mode();
681 53c82ef9 Scott Ullrich
		/* loop through keys and enforce size */
682
		for ($i = 1; $i <= 4; $i++) {
683
			if ($_POST['key' . $i]) {
684
				/* 64 bit */
685
				if (strlen($_POST['key' . $i]) == 5)
686
					continue;
687
				if (strlen($_POST['key' . $i]) == 10) {
688
					/* hex key */
689
					if (stristr($_POST['key' . $i], "0x") == false) {
690 4634cb48 Ermal Luçi
						$_POST['key' . $i] = "0x" . $_POST['key' . $i];
691
					}
692 53c82ef9 Scott Ullrich
					continue;
693
				}
694
				if (strlen($_POST['key' . $i]) == 12) {
695
					/* hex key */
696
					if(stristr($_POST['key' . $i], "0x") == false) {
697
					$_POST['key' . $i] = "0x" . $_POST['key' . $i];
698 4634cb48 Ermal Luçi
					}
699 53c82ef9 Scott Ullrich
					continue;
700
				}
701
				/* 128 bit */
702
				if (strlen($_POST['key' . $i]) == 13)
703
					continue;
704
				if (strlen($_POST['key' . $i]) == 26) {
705
					/* hex key */
706
					if (stristr($_POST['key' . $i], "0x") == false)
707
						$_POST['key' . $i] = "0x" . $_POST['key' . $i];
708
					continue;
709 4634cb48 Ermal Luçi
				}
710 53c82ef9 Scott Ullrich
				if(strlen($_POST['key' . $i]) == 28)
711
					continue;
712 136c598d Carlos Eduardo Ramos
				$input_errors[] =  gettext("Invalid WEP key size.   Sizes should be 40 (64) bit keys or 104 (128) bit.");
713 53c82ef9 Scott Ullrich
				break;
714 4634cb48 Ermal Luçi
			}
715 5b237745 Scott Ullrich
		}
716 08fae438 Ermal Lu?i
717
		if ($_POST['passphrase']) {
718 6d529efd Renato Botelho
			$passlen = strlen($_POST['passphrase']);
719 2ca43251 Renato Botelho
			if ($passlen < 8 || $passlen > 63)
720 6d529efd Renato Botelho
				$input_errors[] = gettext("The length of the passphrase should be between 8 and 63 characters.");
721 08fae438 Ermal Lu?i
		}
722 53c82ef9 Scott Ullrich
	}
723
	if (!$input_errors) {
724 8b1e7d04 Ermal
		if ($wancfg['ipaddr'] != $_POST['type']) {
725 ef130e9f Ermal
			if (in_array($wancfg['ipaddr'], array("ppp", "pppoe", "pptp", "l2tp"))) {
726
				$wancfg['if'] = $a_ppps[$pppid]['ports'];
727
				unset($a_ppps[$pppid]);
728 e029943a Seth Mos
			} else if ($wancfg['ipaddrv6'] == "dhcp6") {
729 76ac460b jim-p
				$pid = find_dhcp6c_process($wancfg['if']);
730 e029943a Seth Mos
				if($pid)
731
					posix_kill($pid, SIGTERM);
732 8b1e7d04 Ermal
			} else if ($wancfg['ipaddr'] == "dhcp") {
733 76ac460b jim-p
				$pid = find_dhclient_process($wancfg['if']);
734 1f676b67 Ermal
				if($pid)
735
					posix_kill($pid, SIGTERM);
736 ef130e9f Ermal
			}
737 6d529efd Renato Botelho
738 ef130e9f Ermal
		}
739 d85ba87f gnhb
		$ppp = array();
740 da75413d Ermal
		if ($wancfg['ipaddr'] != "ppp")
741
			unset($wancfg['ipaddr']);
742 47593ac6 Seth Mos
		if ($wancfg['ipaddrv6'] != "ppp")
743
			unset($wancfg['ipaddrv6']);
744 53c82ef9 Scott Ullrich
		unset($wancfg['subnet']);
745
		unset($wancfg['gateway']);
746 47593ac6 Seth Mos
		unset($wancfg['subnetv6']);
747
		unset($wancfg['gatewayv6']);
748 53c82ef9 Scott Ullrich
		unset($wancfg['dhcphostname']);
749 850324a2 jim-p
		unset($wancfg['dhcprejectfrom']);
750 ed395640 Seth Mos
		unset($wancfg['dhcp6-duid']);
751
		unset($wancfg['dhcp6-ia-pd-len']);
752 90652fbf Daniel Becker
		unset($wancfg['dhcp6-ia-pd-send-hint']);
753 6dcbd1b3 smos
		unset($wancfg['dhcp6prefixonly']);
754 329024c8 Ermal
		unset($wancfg['dhcp6usev4iface']);
755 20a7cb15 smos
		unset($wancfg['track6-interface']);
756 6d529efd Renato Botelho
		unset($wancfg['track6-prefix-id']);
757 7d567088 smos
		unset($wancfg['prefix-6rd']);
758 12215bfb smos
		unset($wancfg['prefix-6rd-v4plen']);
759 7d567088 smos
		unset($wancfg['gateway-6rd']);
760 53c82ef9 Scott Ullrich
		unset($wancfg['pppoe_password']);
761
		unset($wancfg['pptp_username']);
762
		unset($wancfg['pptp_password']);
763
		unset($wancfg['provider']);
764
		unset($wancfg['ondemand']);
765
		unset($wancfg['timeout']);
766 70e46e62 Ermal
		if (empty($wancfg['pppoe']['pppoe-reset-type']))
767 8b7ae9a3 jim-p
			unset($wancfg['pppoe']['pppoe-reset-type']);
768 53c82ef9 Scott Ullrich
		unset($wancfg['local']);
769 6d529efd Renato Botelho
770 53c82ef9 Scott Ullrich
		unset($wancfg['remote']);
771 8256f324 gnhb
		unset($a_ppps[$pppid]['apn']);
772
		unset($a_ppps[$pppid]['phone']);
773
		unset($a_ppps[$pppid]['localip']);
774
		unset($a_ppps[$pppid]['subnet']);
775
		unset($a_ppps[$pppid]['gateway']);
776
		unset($a_ppps[$pppid]['pppoe-reset-type']);
777 1d7e1d6c gnhb
		unset($a_ppps[$pppid]['provider']);
778 c0948c6c Renato Botelho
779 53c82ef9 Scott Ullrich
		$wancfg['descr'] = remove_bad_chars($_POST['descr']);
780 6a688547 Ermal
		$wancfg['enable'] =  $_POST['enable']  == "yes" ? true : false;
781 9ff9a1c7 Seth Mos
782 2fe06a32 smos
		/* let return_gateways_array() do the magic on dynamic interfaces for us */
783 9ff9a1c7 Seth Mos
		switch($_POST['type']) {
784 47593ac6 Seth Mos
			case "staticv4":
785
				$wancfg['ipaddr'] = $_POST['ipaddr'];
786
				$wancfg['subnet'] = $_POST['subnet'];
787
				if ($_POST['gateway'] != "none") {
788
					$wancfg['gateway'] = $_POST['gateway'];
789
				}
790
				break;
791 9ff9a1c7 Seth Mos
			case "dhcp":
792
				$wancfg['ipaddr'] = "dhcp";
793
				$wancfg['dhcphostname'] = $_POST['dhcphostname'];
794
				$wancfg['alias-address'] = $_POST['alias-address'];
795
				$wancfg['alias-subnet'] = $_POST['alias-subnet'];
796 850324a2 jim-p
				$wancfg['dhcprejectfrom'] = $_POST['dhcprejectfrom'];
797 e4d40f41 gnhb
				$wancfg['dhcp_plus'] = $_POST['dhcp_plus'] == "yes" ? true : false;
798 9ff9a1c7 Seth Mos
				if($gateway_item) {
799
					$a_gateways[] = $gateway_item;
800
				}
801
				break;
802 3a906378 gnhb
			case "ppp":
803
				$a_ppps[$pppid]['ptpid'] = $_POST['ptpid'];
804
				$a_ppps[$pppid]['type'] = $_POST['type'];
805 1d7e1d6c gnhb
				$a_ppps[$pppid]['if'] = $_POST['type'].$_POST['ptpid'];
806 3a906378 gnhb
				$a_ppps[$pppid]['ports'] = $_POST['port'];
807
				$a_ppps[$pppid]['username'] = $_POST['username'];
808
				$a_ppps[$pppid]['password'] = base64_encode($_POST['password']);
809 8256f324 gnhb
				$a_ppps[$pppid]['phone'] = $_POST['phone'];
810 3a906378 gnhb
				$a_ppps[$pppid]['apn'] = $_POST['apn'];
811 1d7e1d6c gnhb
				$wancfg['if'] = $_POST['type'] . $_POST['ptpid'];
812 8256f324 gnhb
				$wancfg['ipaddr'] = $_POST['type'];
813
				unset($a_ppps[$pppid]['ondemand']);
814
				unset($a_ppps[$pppid]['idletimeout']);
815 3a906378 gnhb
				break;
816
817 9ff9a1c7 Seth Mos
			case "pppoe":
818 6c05cfb0 gnhb
				$a_ppps[$pppid]['ptpid'] = $_POST['ptpid'];
819
				$a_ppps[$pppid]['type'] = $_POST['type'];
820 1d7e1d6c gnhb
				$a_ppps[$pppid]['if'] = $_POST['type'].$_POST['ptpid'];
821 d85ba87f gnhb
				if (isset($_POST['ppp_port']))
822 6c05cfb0 gnhb
					$a_ppps[$pppid]['ports'] = $_POST['ppp_port'];
823 d85ba87f gnhb
				else
824 6c05cfb0 gnhb
					$a_ppps[$pppid]['ports'] = $wancfg['if'];
825
				$a_ppps[$pppid]['username'] = $_POST['pppoe_username'];
826
				$a_ppps[$pppid]['password'] = base64_encode($_POST['pppoe_password']);
827 d85ba87f gnhb
				if (!empty($_POST['provider']))
828 6c05cfb0 gnhb
					$a_ppps[$pppid]['provider'] = $_POST['provider'];
829 d85ba87f gnhb
				else
830 233e2af1 jim-p
					$a_ppps[$pppid]['provider'] = true;
831 6c05cfb0 gnhb
				$a_ppps[$pppid]['ondemand'] = $_POST['pppoe_dialondemand'] ? true : false;
832 0ff214f2 Renato Botelho
				if (!empty($_POST['pppoe_idletimeout']))
833 6c05cfb0 gnhb
					$a_ppps[$pppid]['idletimeout'] = $_POST['pppoe_idletimeout'];
834 d85ba87f gnhb
				else
835 6c05cfb0 gnhb
					unset($a_ppps[$pppid]['idletimeout']);
836 d85ba87f gnhb
837
				if (!empty($_POST['pppoe-reset-type']))
838 6c05cfb0 gnhb
					$a_ppps[$pppid]['pppoe-reset-type'] = $_POST['pppoe-reset-type'];
839 d85ba87f gnhb
				else
840 6c05cfb0 gnhb
					unset($a_ppps[$pppid]['pppoe-reset-type']);
841 1d7e1d6c gnhb
				$wancfg['if'] = $_POST['type'].$_POST['ptpid'];
842 d85ba87f gnhb
				$wancfg['ipaddr'] = $_POST['type'];
843 9ff9a1c7 Seth Mos
				if($gateway_item) {
844
					$a_gateways[] = $gateway_item;
845
				}
846 c0948c6c Renato Botelho
847 9ff9a1c7 Seth Mos
				break;
848
			case "pptp":
849 e4d40f41 gnhb
			case "l2tp":
850 6c05cfb0 gnhb
				$a_ppps[$pppid]['ptpid'] = $_POST['ptpid'];
851
				$a_ppps[$pppid]['type'] = $_POST['type'];
852 1d7e1d6c gnhb
				$a_ppps[$pppid]['if'] = $_POST['type'].$_POST['ptpid'];
853 d85ba87f gnhb
				if (isset($_POST['ppp_port']))
854 6c05cfb0 gnhb
					$a_ppps[$pppid]['ports'] = $_POST['ppp_port'];
855 d85ba87f gnhb
				else
856 6c05cfb0 gnhb
					$a_ppps[$pppid]['ports'] = $wancfg['if'];
857
				$a_ppps[$pppid]['username'] = $_POST['pptp_username'];
858
				$a_ppps[$pppid]['password'] = base64_encode($_POST['pptp_password']);
859 ced4df74 gnhb
				$a_ppps[$pppid]['localip'] = $_POST['pptp_local'];
860 6c05cfb0 gnhb
				$a_ppps[$pppid]['subnet'] = $_POST['pptp_subnet'];
861
				$a_ppps[$pppid]['gateway'] = $_POST['pptp_remote'];
862
				$a_ppps[$pppid]['ondemand'] = $_POST['pptp_dialondemand'] ? true : false;
863 0ff214f2 Renato Botelho
				if (!empty($_POST['pptp_idletimeout']))
864 6c05cfb0 gnhb
					$a_ppps[$pppid]['idletimeout'] = $_POST['pptp_idletimeout'];
865 d85ba87f gnhb
				else
866 6c05cfb0 gnhb
					unset($a_ppps[$pppid]['idletimeout']);
867 1d7e1d6c gnhb
				$wancfg['if'] = $_POST['type'].$_POST['ptpid'];
868 d85ba87f gnhb
				$wancfg['ipaddr'] = $_POST['type'];
869 9ff9a1c7 Seth Mos
				if($gateway_item) {
870
					$a_gateways[] = $gateway_item;
871
				}
872
				break;
873 6c05cfb0 gnhb
			case "none":
874
				break;
875 4634cb48 Ermal Luçi
		}
876 e029943a Seth Mos
		switch($_POST['type6']) {
877
			case "staticv6":
878
				$wancfg['ipaddrv6'] = $_POST['ipaddrv6'];
879
				$wancfg['subnetv6'] = $_POST['subnetv6'];
880
				if ($_POST['gatewayv6'] != "none") {
881
					$wancfg['gatewayv6'] = $_POST['gatewayv6'];
882
				}
883
				break;
884 feb88a14 smos
			case "slaac":
885
				$wancfg['ipaddrv6'] = "slaac";
886
				break;
887 e029943a Seth Mos
			case "dhcp6":
888
				$wancfg['ipaddrv6'] = "dhcp6";
889
				$wancfg['dhcp6-duid'] = $_POST['dhcp6-duid'];
890
				$wancfg['dhcp6-ia-pd-len'] = $_POST['dhcp6-ia-pd-len'];
891 90652fbf Daniel Becker
				if($_POST['dhcp6-ia-pd-send-hint'] == "yes")
892
					$wancfg['dhcp6-ia-pd-send-hint'] = true;
893 af49447a Phil Davis
				if($_POST['dhcp6prefixonly'] == "yes")
894
					$wancfg['dhcp6prefixonly'] = true;
895 329024c8 Ermal
				if($_POST['dhcp6usev4iface'] == "yes")
896
					$wancfg['dhcp6usev4iface'] = true;
897 e029943a Seth Mos
				if($gateway_item) {
898
					$a_gateways[] = $gateway_item;
899
				}
900
				break;
901 7d567088 smos
			case "6rd":
902
				$wancfg['ipaddrv6'] = "6rd";
903
				$wancfg['prefix-6rd'] = $_POST['prefix-6rd'];
904 12215bfb smos
				$wancfg['prefix-6rd-v4plen'] = $_POST['prefix-6rd-v4plen'];
905 7d567088 smos
				$wancfg['gateway-6rd'] = $_POST['gateway-6rd'];
906
				if($gateway_item) {
907
					$a_gateways[] = $gateway_item;
908
				}
909
				break;
910 31c43fd3 smos
			case "6to4":
911
				$wancfg['ipaddrv6'] = "6to4";
912
				break;
913 20a7cb15 smos
			case "track6":
914
				$wancfg['ipaddrv6'] = "track6";
915
				$wancfg['track6-interface'] = $_POST['track6-interface'];
916 02203e6d Renato Botelho
				if ($_POST['track6-prefix-id--hex'] === "")
917
					$wancfg['track6-prefix-id'] = 0;
918
				else if (is_numeric("0x" . $_POST['track6-prefix-id--hex']))
919 6b2d4b5a Darren Embry
					$wancfg['track6-prefix-id'] = intval($_POST['track6-prefix-id--hex'], 16);
920 02203e6d Renato Botelho
				else
921
					$wancfg['track6-prefix-id'] = 0;
922 20a7cb15 smos
				break;
923 e029943a Seth Mos
			case "none":
924
				break;
925
		}
926 1d7e1d6c gnhb
		handle_pppoe_reset($_POST);
927 c0948c6c Renato Botelho
928 9ff9a1c7 Seth Mos
		if($_POST['blockpriv'] == "yes") {
929 53c82ef9 Scott Ullrich
			$wancfg['blockpriv'] = true;
930 9ff9a1c7 Seth Mos
		} else {
931 53c82ef9 Scott Ullrich
			unset($wancfg['blockpriv']);
932 9ff9a1c7 Seth Mos
		}
933
		if($_POST['blockbogons'] == "yes") {
934 53c82ef9 Scott Ullrich
			$wancfg['blockbogons'] = true;
935 9ff9a1c7 Seth Mos
		} else {
936 53c82ef9 Scott Ullrich
			unset($wancfg['blockbogons']);
937 9ff9a1c7 Seth Mos
		}
938 53c82ef9 Scott Ullrich
		$wancfg['spoofmac'] = $_POST['spoofmac'];
939 9ff9a1c7 Seth Mos
		if (empty($_POST['mtu'])) {
940 d6a891da Ermal Lu?i
			unset($wancfg['mtu']);
941 9ff9a1c7 Seth Mos
		} else {
942 d6a891da Ermal Lu?i
			$wancfg['mtu'] = $_POST['mtu'];
943 9ff9a1c7 Seth Mos
		}
944 4cea5cf8 Ermal
		if (empty($_POST['mss'])) {
945
			unset($wancfg['mss']);
946
		} else {
947
			$wancfg['mss'] = $_POST['mss'];
948
		}
949 509ca889 Evgeny Yurchenko
		if (empty($_POST['mediaopt'])) {
950
			unset($wancfg['media']);
951
			unset($wancfg['mediaopt']);
952
		} else {
953 6d529efd Renato Botelho
			$mediaopts = explode(' ', $_POST['mediaopt']);
954 509ca889 Evgeny Yurchenko
			if ($mediaopts[0] != ''){ $wancfg['media'] = $mediaopts[0]; }
955
			if ($mediaopts[1] != ''){ $wancfg['mediaopt'] = $mediaopts[1]; }
956
			else { unset($wancfg['mediaopt']); }
957
		}
958 9ff9a1c7 Seth Mos
		if (isset($wancfg['wireless'])) {
959 25a6411a Scott Ullrich
			handle_wireless_post();
960 9ff9a1c7 Seth Mos
		}
961 c0948c6c Renato Botelho
962 dd18038e Ermal
		conf_mount_ro();
963 53c82ef9 Scott Ullrich
		write_config();
964 dd18038e Ermal
965 ee5c01b5 Seth Mos
		if (file_exists("{$g['tmp_path']}/.interfaces.apply")) {
966 dd18038e Ermal
			$toapplylist = unserialize(file_get_contents("{$g['tmp_path']}/.interfaces.apply"));
967 ee5c01b5 Seth Mos
		} else {
968 dd18038e Ermal
			$toapplylist = array();
969 ee5c01b5 Seth Mos
		}
970 e12ad49f Renato Botelho
		$toapplylist[$if]['ifcfg'] = $old_wancfg;
971
		$toapplylist[$if]['ppps'] = $old_ppps;
972 dd18038e Ermal
		file_put_contents("{$g['tmp_path']}/.interfaces.apply", serialize($toapplylist));
973
974 a368a026 Ermal Lu?i
		mark_subsystem_dirty('interfaces');
975 dd18038e Ermal
976 53c82ef9 Scott Ullrich
		/* regenerate cron settings/crontab file */
977
		configure_cron();
978 dd18038e Ermal
979 53c82ef9 Scott Ullrich
		header("Location: interfaces.php?if={$if}");
980
		exit;
981
	}
982 c0948c6c Renato Botelho
983
} // end if($_POST)
984 270c4607 Scott Ullrich
985 25a6411a Scott Ullrich
function handle_wireless_post() {
986 f62c44d8 Erik Fonnesbeck
	global $_POST, $config, $g, $wancfg, $if, $wl_countries_attr, $wlanbaseif;
987 270c4607 Scott Ullrich
	if (!is_array($wancfg['wireless']))
988
		$wancfg['wireless'] = array();
989
	$wancfg['wireless']['standard'] = $_POST['standard'];
990
	$wancfg['wireless']['mode'] = $_POST['mode'];
991
	$wancfg['wireless']['protmode'] = $_POST['protmode'];
992
	$wancfg['wireless']['ssid'] = $_POST['ssid'];
993
	$wancfg['wireless']['channel'] = $_POST['channel'];
994
	$wancfg['wireless']['authmode'] = $_POST['authmode'];
995
	$wancfg['wireless']['txpower'] = $_POST['txpower'];
996
	$wancfg['wireless']['distance'] = $_POST['distance'];
997 20f09b3b Erik Fonnesbeck
	$wancfg['wireless']['regdomain'] = $_POST['regdomain'];
998
	$wancfg['wireless']['regcountry'] = $_POST['regcountry'];
999
	$wancfg['wireless']['reglocation'] = $_POST['reglocation'];
1000
	if (!empty($wancfg['wireless']['regdomain']) && !empty($wancfg['wireless']['regcountry'])) {
1001 071d63b9 Erik Fonnesbeck
		foreach($wl_countries_attr as $wl_country) {
1002
			if ($wancfg['wireless']['regcountry'] == $wl_country['ID']) {
1003
				$wancfg['wireless']['regdomain'] = $wl_country['rd'][0]['REF'];
1004 20f09b3b Erik Fonnesbeck
				break;
1005
			}
1006
		}
1007
	}
1008 270c4607 Scott Ullrich
	if (!is_array($wancfg['wireless']['wpa']))
1009
		$wancfg['wireless']['wpa'] = array();
1010
	$wancfg['wireless']['wpa']['macaddr_acl'] = $_POST['macaddr_acl'];
1011
	$wancfg['wireless']['wpa']['auth_algs'] = $_POST['auth_algs'];
1012
	$wancfg['wireless']['wpa']['wpa_mode'] = $_POST['wpa_mode'];
1013
	$wancfg['wireless']['wpa']['wpa_key_mgmt'] = $_POST['wpa_key_mgmt'];
1014
	$wancfg['wireless']['wpa']['wpa_pairwise'] = $_POST['wpa_pairwise'];
1015
	$wancfg['wireless']['wpa']['wpa_group_rekey'] = $_POST['wpa_group_rekey'];
1016
	$wancfg['wireless']['wpa']['wpa_gmk_rekey'] = $_POST['wpa_gmk_rekey'];
1017
	$wancfg['wireless']['wpa']['passphrase'] = $_POST['passphrase'];
1018
	$wancfg['wireless']['wpa']['ext_wpa_sw'] = $_POST['ext_wpa_sw'];
1019 5949124c Scott Ullrich
	$wancfg['wireless']['auth_server_addr'] = $_POST['auth_server_addr'];
1020
	$wancfg['wireless']['auth_server_port'] = $_POST['auth_server_port'];
1021
	$wancfg['wireless']['auth_server_shared_secret'] = $_POST['auth_server_shared_secret'];
1022 32764288 Namezero
	$wancfg['wireless']['auth_server_addr2'] = $_POST['auth_server_addr2'];
1023
	$wancfg['wireless']['auth_server_port2'] = $_POST['auth_server_port2'];
1024
	$wancfg['wireless']['auth_server_shared_secret2'] = $_POST['auth_server_shared_secret2'];
1025 6d529efd Renato Botelho
1026 f62c44d8 Erik Fonnesbeck
	if ($_POST['persistcommonwireless'] == "yes") {
1027 6ef2297b Erik Fonnesbeck
		if (!is_array($config['wireless']))
1028
			$config['wireless'] = array();
1029
		if (!is_array($config['wireless']['interfaces']))
1030
			$config['wireless']['interfaces'] = array();
1031
		if (!is_array($config['wireless']['interfaces'][$wlanbaseif]))
1032 f62c44d8 Erik Fonnesbeck
			$config['wireless']['interfaces'][$wlanbaseif] = array();
1033
	} else if (isset($config['wireless']['interfaces'][$wlanbaseif]))
1034
		unset($config['wireless']['interfaces'][$wlanbaseif]);
1035 1930ccb6 Erik Fonnesbeck
	if (isset($_POST['diversity']) && is_numeric($_POST['diversity']))
1036 537bf7b3 Erik Fonnesbeck
		$wancfg['wireless']['diversity'] = $_POST['diversity'];
1037
	else if (isset($wancfg['wireless']['diversity']))
1038
		unset($wancfg['wireless']['diversity']);
1039 1930ccb6 Erik Fonnesbeck
	if (isset($_POST['txantenna']) && is_numeric($_POST['txantenna']))
1040 537bf7b3 Erik Fonnesbeck
		$wancfg['wireless']['txantenna'] = $_POST['txantenna'];
1041
	else if (isset($wancfg['wireless']['txantenna']))
1042
		unset($wancfg['wireless']['txantenna']);
1043 1930ccb6 Erik Fonnesbeck
	if (isset($_POST['rxantenna']) && is_numeric($_POST['rxantenna']))
1044 537bf7b3 Erik Fonnesbeck
		$wancfg['wireless']['rxantenna'] = $_POST['rxantenna'];
1045
	else if (isset($wancfg['wireless']['rxantenna']))
1046
		unset($wancfg['wireless']['rxantenna']);
1047 270c4607 Scott Ullrich
	if ($_POST['hidessid_enable'] == "yes")
1048
		$wancfg['wireless']['hidessid']['enable'] = true;
1049
	else if (isset($wancfg['wireless']['hidessid']['enable']))
1050
		unset($wancfg['wireless']['hidessid']['enable']);
1051
	if ($_POST['mac_acl_enable'] == "yes")
1052
		$wancfg['wireless']['wpa']['mac_acl_enable'] = true;
1053
	else if (isset($wancfg['wireless']['wpa']['mac_acl_enable']))
1054
		unset($wancfg['wireless']['wpa']['mac_acl_enable']);
1055 c9e7d30d Scott Ullrich
	if ($_POST['rsn_preauth'] == "yes")
1056 ea62cd32 Scott Ullrich
		$wancfg['wireless']['wpa']['rsn_preauth'] = true;
1057 c0948c6c Renato Botelho
	else
1058 ea62cd32 Scott Ullrich
		unset($wancfg['wireless']['wpa']['rsn_preauth']);
1059 270c4607 Scott Ullrich
	if ($_POST['ieee8021x'] == "yes")
1060
		$wancfg['wireless']['wpa']['ieee8021x']['enable'] = true;
1061
	else if (isset($wancfg['wireless']['wpa']['ieee8021x']['enable']))
1062
		unset($wancfg['wireless']['wpa']['ieee8021x']['enable']);
1063
	if ($_POST['wpa_strict_rekey'] == "yes")
1064
		$wancfg['wireless']['wpa']['wpa_strict_rekey'] = true;
1065
	else if (isset($wancfg['wireless']['wpa']['wpa_strict_rekey']))
1066
		unset($wancfg['wireless']['wpa']['wpa_strict_rekey']);
1067
	if ($_POST['debug_mode'] == "yes")
1068
		$wancfg['wireless']['wpa']['debug_mode'] = true;
1069
	else if (isset($wancfg['wireless']['wpa']['debug_mode']))
1070
		sunset($wancfg['wireless']['wpa']['debug_mode']);
1071
	if ($_POST['wpa_enable'] == "yes")
1072
		$wancfg['wireless']['wpa']['enable'] = $_POST['wpa_enable'] = true;
1073
	else if (isset($wancfg['wireless']['wpa']['enable']))
1074
		unset($wancfg['wireless']['wpa']['enable']);
1075
	if ($_POST['wep_enable'] == "yes") {
1076
		if (!is_array($wancfg['wireless']['wep']))
1077
			$wancfg['wireless']['wep'] = array();
1078
		$wancfg['wireless']['wep']['enable'] = $_POST['wep_enable'] = true;
1079
	} else if (isset($wancfg['wireless']['wep']))
1080
		unset($wancfg['wireless']['wep']);
1081
	if ($_POST['wme_enable'] == "yes") {
1082
		if (!is_array($wancfg['wireless']['wme']))
1083
			$wancfg['wireless']['wme'] = array();
1084
		$wancfg['wireless']['wme']['enable'] = $_POST['wme_enable'] = true;
1085
	} else if (isset($wancfg['wireless']['wme']['enable']))
1086
		unset($wancfg['wireless']['wme']['enable']);
1087 57bbd532 Erik Fonnesbeck
	if ($_POST['puremode'] == "11g") {
1088 270c4607 Scott Ullrich
		if (!is_array($wancfg['wireless']['pureg']))
1089
			$wancfg['wireless']['pureg'] = array();
1090 57bbd532 Erik Fonnesbeck
		$wancfg['wireless']['pureg']['enable'] = true;
1091
	} else if ($_POST['puremode'] == "11n") {
1092 ed459692 Erik Fonnesbeck
		if (!is_array($wancfg['wireless']['puren']))
1093
			$wancfg['wireless']['puren'] = array();
1094 57bbd532 Erik Fonnesbeck
		$wancfg['wireless']['puren']['enable'] = true;
1095
	} else {
1096
		if (isset($wancfg['wireless']['pureg']))
1097
			unset($wancfg['wireless']['pureg']);
1098
		if (isset($wancfg['wireless']['puren']))
1099
			unset($wancfg['wireless']['puren']);
1100
	}
1101 270c4607 Scott Ullrich
	if ($_POST['apbridge_enable'] == "yes") {
1102
		if (!is_array($wancfg['wireless']['apbridge']))
1103
			$wancfg['wireless']['apbridge'] = array();
1104
		$wancfg['wireless']['apbridge']['enable'] = $_POST['apbridge_enable'] = true;
1105
	} else if (isset($wancfg['wireless']['apbridge']['enable']))
1106
		unset($wancfg['wireless']['apbridge']['enable']);
1107 9be20928 Erik Fonnesbeck
	if ($_POST['standard'] == "11g Turbo" || $_POST['standard'] == "11a Turbo") {
1108 270c4607 Scott Ullrich
		if (!is_array($wancfg['wireless']['turbo']))
1109
			$wancfg['wireless']['turbo'] = array();
1110
		$wancfg['wireless']['turbo']['enable'] = true;
1111
	} else if (isset($wancfg['wireless']['turbo']['enable']))
1112
		unset($wancfg['wireless']['turbo']['enable']);
1113
	$wancfg['wireless']['wep']['key'] = array();
1114
	for ($i = 1; $i <= 4; $i++) {
1115
		if ($_POST['key' . $i]) {
1116
			$newkey = array();
1117
			$newkey['value'] = $_POST['key' . $i];
1118
			if ($_POST['txkey'] == $i)
1119
				$newkey['txkey'] = true;
1120
			$wancfg['wireless']['wep']['key'][] = $newkey;
1121
		}
1122 5b237745 Scott Ullrich
	}
1123 8f0289e7 Erik Fonnesbeck
	interface_sync_wireless_clones($wancfg, true);
1124 5b237745 Scott Ullrich
}
1125 7f43ca88 Scott Ullrich
1126 597330aa Erik Fonnesbeck
function check_wireless_mode() {
1127 651fff4f Erik Fonnesbeck
	global $_POST, $config, $g, $wlan_modes, $wancfg, $if, $wlanif, $wlanbaseif, $old_wireless_mode, $input_errors;
1128 597330aa Erik Fonnesbeck
1129
	if ($wancfg['wireless']['mode'] == $_POST['mode'])
1130
		return;
1131
1132
	if (does_interface_exist(interface_get_wireless_clone($wlanbaseif)))
1133
		$clone_count = 1;
1134
	else
1135
		$clone_count = 0;
1136 6ef2297b Erik Fonnesbeck
	if (isset($config['wireless']['clone']) && is_array($config['wireless']['clone'])) {
1137 597330aa Erik Fonnesbeck
		foreach ($config['wireless']['clone'] as $clone) {
1138
			if ($clone['if'] == $wlanbaseif)
1139
				$clone_count++;
1140
		}
1141
	}
1142
	if ($clone_count > 1) {
1143
		$old_wireless_mode = $wancfg['wireless']['mode'];
1144
		$wancfg['wireless']['mode'] = $_POST['mode'];
1145
		if (!interface_wireless_clone("{$wlanif}_", $wancfg)) {
1146 4c807d76 Erik Fonnesbeck
			$input_errors[] = sprintf(gettext("Unable to change mode to %s.  You may already have the maximum number of wireless clones supported in this mode."), $wlan_modes[$wancfg['wireless']['mode']]);
1147 597330aa Erik Fonnesbeck
		} else {
1148
			mwexec("/sbin/ifconfig {$wlanif}_ destroy");
1149
		}
1150
		$wancfg['wireless']['mode'] = $old_wireless_mode;
1151
	}
1152
}
1153
1154 509ca889 Evgeny Yurchenko
// Find all possible media options for the interface
1155
$mediaopts_list = array();
1156
$intrealname = $config['interfaces'][$if]['if'];
1157
exec("/sbin/ifconfig -m $intrealname | grep \"media \"", $mediaopts);
1158
foreach ($mediaopts as $mediaopt){
1159
	preg_match("/media (.*)/", $mediaopt, $matches);
1160 6d529efd Renato Botelho
	if (preg_match("/(.*) mediaopt (.*)/", $matches[1], $matches1)){
1161 509ca889 Evgeny Yurchenko
		// there is media + mediaopt like "media 1000baseT mediaopt full-duplex"
1162 6d529efd Renato Botelho
		array_push($mediaopts_list, $matches1[1] . " " . $matches1[2]);
1163 509ca889 Evgeny Yurchenko
	}else{
1164
		// there is only media like "media 1000baseT"
1165
		array_push($mediaopts_list, $matches[1]);
1166
	}
1167
}
1168
1169 a6d9251e Scott Ullrich
$pgtitle = array(gettext("Interfaces"), $pconfig['descr']);
1170 b32dd0a6 jim-p
$shortcut_section = "interfaces";
1171 af1e2031 jim-p
1172 58af5941 Scott Ullrich
$closehead = false;
1173 7f43ca88 Scott Ullrich
include("head.inc");
1174 3e662cb0 Ermal
$types4 = array("none" => gettext("None"), "staticv4" => gettext("Static IPv4"), "dhcp" => gettext("DHCP"), "ppp" => gettext("PPP"), "pppoe" => gettext("PPPoE"), "pptp" => gettext("PPTP"), "l2tp" => gettext("L2TP"));
1175 feb88a14 smos
$types6 = array("none" => gettext("None"), "staticv6" => gettext("Static IPv6"), "dhcp6" => gettext("DHCP6"), "slaac" => gettext("SLAAC"), "6rd" => gettext("6rd Tunnel"), "6to4" => gettext("6to4 Tunnel"), "track6" => gettext("Track Interface"));
1176 7f43ca88 Scott Ullrich
1177 5b237745 Scott Ullrich
?>
1178 7f43ca88 Scott Ullrich
1179 8098302a Scott Ullrich
<script type="text/javascript" src="/javascript/numericupdown/js/numericupdown.js"></script>
1180 58af5941 Scott Ullrich
<link href="/javascript/numericupdown/css/numericupdown.css" rel="stylesheet" type="text/css" />
1181 8098302a Scott Ullrich
<script type="text/javascript" src="/javascript/datepicker/js/datepicker.js"></script>
1182
<link href="/javascript/datepicker/css/datepicker.css" rel="stylesheet" type="text/css"/>
1183 58af5941 Scott Ullrich
1184
<script type="text/javascript">
1185 9978e156 gnhb
	function updateType(t) {
1186 886f1f69 Scott Ullrich
		switch(t) {
1187 9978e156 gnhb
			case "none": {
1188 076b14b2 Vinicius Coque
				jQuery('#staticv4, #dhcp, #pppoe, #pptp, #ppp').hide();
1189 47593ac6 Seth Mos
				break;
1190
			}
1191
			case "staticv4": {
1192 076b14b2 Vinicius Coque
				jQuery('#none, #dhcp, #pppoe, #pptp, #ppp').hide();
1193 9978e156 gnhb
				break;
1194
			}
1195
			case "dhcp": {
1196 076b14b2 Vinicius Coque
				jQuery('#none, #staticv4, #pppoe, #pptp, #ppp').hide();
1197 6c05cfb0 gnhb
				break;
1198
			}
1199
			case "ppp": {
1200 076b14b2 Vinicius Coque
				jQuery('#none, #staticv4, #dhcp, #pptp, #pppoe').hide();
1201 3a906378 gnhb
				country_list();
1202 9978e156 gnhb
				break;
1203
			}
1204
			case "pppoe": {
1205 076b14b2 Vinicius Coque
				jQuery('#none, #staticv4, #dhcp, #pptp, #ppp').hide();
1206 9978e156 gnhb
				break;
1207
			}
1208 e4d40f41 gnhb
			case "l2tp":
1209 9978e156 gnhb
			case "pptp": {
1210 076b14b2 Vinicius Coque
				jQuery('#none, #staticv4, #dhcp, #pppoe, #ppp').hide();
1211
				jQuery('#pptp').show();
1212 9978e156 gnhb
				break;
1213 09583657 Scott Ullrich
			}
1214 886f1f69 Scott Ullrich
		}
1215 e4d40f41 gnhb
		if (t != "l2tp" && t != "pptp")
1216 076b14b2 Vinicius Coque
			jQuery('#'+t).show();
1217 09583657 Scott Ullrich
	}
1218 e029943a Seth Mos
	function updateTypeSix(t) {
1219
		switch(t) {
1220
			case "none": {
1221 feb88a14 smos
				jQuery('#staticv6, #dhcp6, #6rd, #6to4, #track6, #slaac').hide();
1222 e029943a Seth Mos
				break;
1223
			}
1224
			case "staticv6": {
1225 feb88a14 smos
				jQuery('#none, #dhcp6, #6rd, #6to4, #track6, #slaac').hide();
1226
				break;
1227
			}
1228
			case "slaac": {
1229
				jQuery('#none, #staticv6, #6rd, #6to4, #track6, #dhcp6').hide();
1230 e029943a Seth Mos
				break;
1231
			}
1232
			case "dhcp6": {
1233 feb88a14 smos
				jQuery('#none, #staticv6, #6rd, #6to4, #track6, #slaac').hide();
1234 7d567088 smos
				break;
1235
			}
1236 adc91ab7 smos
			case "6rd": {
1237 feb88a14 smos
				jQuery('#none, #dhcp6, #staticv6, #6to4, #track6, #slaac').hide();
1238 31c43fd3 smos
				break;
1239
			}
1240
			case "6to4": {
1241 feb88a14 smos
				jQuery('#none, #dhcp6, #staticv6, #6rd, #track6, #slaac').hide();
1242 20a7cb15 smos
				break;
1243
			}
1244
			case "track6": {
1245 feb88a14 smos
				jQuery('#none, #dhcp6, #staticv6, #6rd, #6to4, #slaac').hide();
1246 e029943a Seth Mos
				break;
1247
			}
1248
		}
1249
		if (t != "l2tp" && t != "pptp")
1250 076b14b2 Vinicius Coque
			jQuery('#'+t).show();
1251 e029943a Seth Mos
	}
1252 32764288 Namezero
1253 886f1f69 Scott Ullrich
	function show_allcfg(obj) {
1254
		if (obj.checked)
1255 076b14b2 Vinicius Coque
			jQuery('#allcfg').show();
1256 886f1f69 Scott Ullrich
		else
1257 076b14b2 Vinicius Coque
			jQuery('#allcfg').hide();
1258 886f1f69 Scott Ullrich
	}
1259 9978e156 gnhb
1260 d85ba87f gnhb
	function show_reset_settings(reset_type) {
1261 c0948c6c Renato Botelho
		if (reset_type == 'preset') {
1262 076b14b2 Vinicius Coque
			jQuery('#pppoepresetwrap').show();
1263
			jQuery('#pppoecustomwrap').hide();
1264 c0948c6c Renato Botelho
		}
1265
		else if (reset_type == 'custom') {
1266 076b14b2 Vinicius Coque
			jQuery('#pppoecustomwrap').show();
1267
			jQuery('#pppoepresetwrap').hide();
1268 d85ba87f gnhb
		} else {
1269 076b14b2 Vinicius Coque
			jQuery('#pppoecustomwrap').hide();
1270
			jQuery('#pppoepresetwrap').hide();
1271 d85ba87f gnhb
		}
1272
	}
1273 886f1f69 Scott Ullrich
	function show_mon_config() {
1274 076b14b2 Vinicius Coque
		jQuery("#showmonbox").html('');
1275
		jQuery('#showmon').css('display','block');
1276 886f1f69 Scott Ullrich
	}
1277 4634cb48 Ermal Luçi
1278 886f1f69 Scott Ullrich
	function openwindow(url) {
1279
		var oWin = window.open(url,"pfSensePop","width=620,height=400,top=150,left=150");
1280 c0948c6c Renato Botelho
		if (oWin==null || typeof(oWin)=="undefined")
1281 886f1f69 Scott Ullrich
			return false;
1282 c0948c6c Renato Botelho
		else
1283 886f1f69 Scott Ullrich
			return true;
1284
	}
1285 3a906378 gnhb
	function country_list() {
1286 076b14b2 Vinicius Coque
		jQuery('#country').children().remove();
1287
		jQuery('#provider').children().remove();
1288
		jQuery('#providerplan').children().remove();
1289
		jQuery.ajax("getserviceproviders.php",{
1290
			success: function(response) {
1291
				var responseTextArr = response.split("\n");
1292 3a906378 gnhb
				responseTextArr.sort();
1293
				responseTextArr.each( function(value) {
1294
					var option = new Element('option');
1295
					country = value.split(":");
1296
					option.text = country[0];
1297
					option.value = country[1];
1298 076b14b2 Vinicius Coque
					jQuery('#country').append(option);
1299 3a906378 gnhb
				});
1300
			}
1301
		});
1302 076b14b2 Vinicius Coque
		jQuery('#trcountry').css('display',"table-row");
1303 3a906378 gnhb
	}
1304 c0948c6c Renato Botelho
1305 3a906378 gnhb
	function providers_list() {
1306 076b14b2 Vinicius Coque
		jQuery('#provider').children().remove();
1307
		jQuery('#providerplan').children().remove();
1308
		jQuery.ajax("getserviceproviders.php",{
1309
			type: 'post',
1310
			data: {country : jQuery('#country').val()},
1311
			success: function(response) {
1312
				var responseTextArr = response.split("\n");
1313 3a906378 gnhb
				responseTextArr.sort();
1314
				responseTextArr.each( function(value) {
1315
					var option = new Element('option');
1316
					option.text = value;
1317
					option.value = value;
1318 076b14b2 Vinicius Coque
					jQuery('#provider').append(option);
1319 3a906378 gnhb
				});
1320
			}
1321
		});
1322 076b14b2 Vinicius Coque
		jQuery('#trprovider').css("display","table-row");
1323
		jQuery('#trproviderplan').css("display","none");
1324 3a906378 gnhb
	}
1325 c0948c6c Renato Botelho
1326 3a906378 gnhb
	function providerplan_list() {
1327 076b14b2 Vinicius Coque
		jQuery('#providerplan').children().remove();
1328
		jQuery('#providerplan').append( new Element('option') );
1329
		jQuery.ajax("getserviceproviders.php",{
1330
			type: 'post',
1331
			data: {country : jQuery('#country').val(), provider : jQuery('#provider').val()},
1332
			success: function(response) {
1333
				var responseTextArr = response.split("\n");
1334 3a906378 gnhb
				responseTextArr.sort();
1335
				responseTextArr.each( function(value) {
1336
					if(value != "") {
1337
						providerplan = value.split(":");
1338 c0948c6c Renato Botelho
1339 3a906378 gnhb
						var option = new Element('option');
1340
						option.text = providerplan[0] + " - " + providerplan[1];
1341
						option.value = providerplan[1];
1342 076b14b2 Vinicius Coque
						jQuery('#providerplan').append(option);
1343 3a906378 gnhb
					}
1344
				});
1345
			}
1346
		});
1347 076b14b2 Vinicius Coque
		jQuery('#trproviderplan').css("display","table-row");
1348 3a906378 gnhb
	}
1349 c0948c6c Renato Botelho
1350 3a906378 gnhb
	function prefill_provider() {
1351 076b14b2 Vinicius Coque
		jQuery.ajax("getserviceproviders.php",{
1352
			type: 'post',
1353
			data: {country : jQuery('#country').val(), provider : jQuery('#provider').val(), plan : jQuery('#providerplan').val()},
1354
			success: function(data,textStatus,response) {
1355 3a906378 gnhb
				var xmldoc = response.responseXML;
1356
				var provider = xmldoc.getElementsByTagName('connection')[0];
1357 076b14b2 Vinicius Coque
				jQuery('#username').val('');
1358
				jQuery('#password').val('');
1359 3a906378 gnhb
				if(provider.getElementsByTagName('apn')[0].firstChild.data == "CDMA") {
1360 076b14b2 Vinicius Coque
					jQuery('#phone').val('#777');
1361
					jQuery('#apn').val('');
1362 3a906378 gnhb
				} else {
1363 076b14b2 Vinicius Coque
					jQuery('#phone').val('*99#');
1364
					jQuery('#apn').val(provider.getElementsByTagName('apn')[0].firstChild.data);
1365 3a906378 gnhb
				}
1366 076b14b2 Vinicius Coque
				username = provider.getElementsByTagName('username')[0].firstChild.data;
1367
				password = provider.getElementsByTagName('password')[0].firstChild.data;
1368
				jQuery('#username').val(username);
1369
				jQuery('#password').val(password);
1370 3a906378 gnhb
			}
1371
		});
1372
	}
1373
1374 5b237745 Scott Ullrich
</script>
1375 58af5941 Scott Ullrich
</head>
1376 886f1f69 Scott Ullrich
	<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
1377
	<?php include("fbegin.inc"); ?>
1378
	<form action="interfaces.php" method="post" name="iform" id="iform">
1379
		<?php if ($input_errors) print_input_errors($input_errors); ?>
1380 a368a026 Ermal Lu?i
		<?php if (is_subsystem_dirty('interfaces')): ?><p>
1381 168549b9 Colin Fleming
		<?php print_info_box_np(sprintf(gettext("The %s configuration has been changed."),$wancfg['descr'])."</p><p>".gettext("You must apply the changes in order for them to take effect.")."</p><p>".gettext("Don't forget to adjust the DHCP Server range if needed after applying."));?></p><br />
1382 744ea190 Scott Ullrich
		<?php endif; ?>
1383
		<?php if ($savemsg) print_info_box($savemsg); ?>
1384 168549b9 Colin Fleming
		<table width="100%" border="0" cellpadding="6" cellspacing="0" summary="interfaces">
1385 09583657 Scott Ullrich
			<tr>
1386 30ade846 gnhb
				<td id="mainarea">
1387
					<div class="tabcont">
1388 168549b9 Colin Fleming
					<table width="100%" border="0" cellpadding="6" cellspacing="0" summary="tabs">
1389 09583657 Scott Ullrich
						<tr>
1390 136c598d Carlos Eduardo Ramos
							<td colspan="2" valign="top" class="listtopic"><?=gettext("General configuration"); ?></td>
1391 09583657 Scott Ullrich
						</tr>
1392
						<tr>
1393 136c598d Carlos Eduardo Ramos
							<td width="22%" valign="top" class="vncell"><?=gettext("Enable"); ?></td>
1394 30ade846 gnhb
							<td width="78%" class="vtable">
1395 339d2743 Colin Fleming
								<input name="enable" type="checkbox" value="yes" <?php if ($pconfig['enable'] == true) echo "checked=\"checked\""; ?> onclick="show_allcfg(this);" />
1396 136c598d Carlos Eduardo Ramos
							<strong><?=gettext("Enable Interface"); ?></strong>
1397 09583657 Scott Ullrich
							</td>
1398
						</tr>
1399 30ade846 gnhb
					</table>
1400
					<div style="display:none;" name="allcfg" id="allcfg">
1401 168549b9 Colin Fleming
					<table width="100%" border="0" cellpadding="6" cellspacing="0" summary="allcfg">
1402 09583657 Scott Ullrich
						<tr>
1403 136c598d Carlos Eduardo Ramos
							<td width="22%" valign="top" class="vncell"><?=gettext("Description"); ?></td>
1404 09583657 Scott Ullrich
							<td width="78%" class="vtable">
1405 2cbe4b47 Colin Fleming
								<input name="descr" type="text" class="formfld unknown" id="descr" size="30" value="<?=htmlspecialchars($pconfig['descr']);?>" />
1406 32b91bcf Colin Fleming
								<br/><span class="vexpl"><?= gettext("Enter a description (name) for the interface here."); ?></span>
1407 30ade846 gnhb
							</td>
1408
						</tr>
1409
						<tr>
1410 e029943a Seth Mos
							<td valign="middle" class="vncell"><strong><?=gettext("IPv4 Configuration Type"); ?></strong></td>
1411 c0948c6c Renato Botelho
							<td class="vtable">
1412 32b91bcf Colin Fleming
								<select name="type" onchange="updateType(this.value);" class="formselect" id="type">
1413 c0948c6c Renato Botelho
								<?php
1414 e029943a Seth Mos
									foreach ($types4 as $key => $opt) {
1415 32b91bcf Colin Fleming
										echo "<option onclick=\"updateType('{$key}');\"";
1416 c0948c6c Renato Botelho
										if ($key == $pconfig['type'])
1417 339d2743 Colin Fleming
											echo " selected=\"selected\"";
1418 3a13f094 gnhb
										echo " value=\"{$key}\" >" . htmlspecialchars($opt);
1419
										echo "</option>";
1420 c0948c6c Renato Botelho
									}
1421 30ade846 gnhb
								?>
1422 667a3184 Scott Ullrich
								</select>
1423 30ade846 gnhb
							</td>
1424
						</tr>
1425 e029943a Seth Mos
						<tr>
1426
							<td valign="middle" class="vncell"><strong><?=gettext("IPv6 Configuration Type"); ?></strong></td>
1427
							<td class="vtable">
1428 32b91bcf Colin Fleming
								<select name="type6" onchange="updateTypeSix(this.value);" class="formselect" id="type6">
1429 e029943a Seth Mos
								<?php
1430
									foreach ($types6 as $key => $opt) {
1431 32b91bcf Colin Fleming
										echo "<option onclick=\"updateTypeSix('{$key}');\"";
1432 e029943a Seth Mos
										if ($key == $pconfig['type6'])
1433 339d2743 Colin Fleming
											echo " selected=\"selected\"";
1434 e029943a Seth Mos
										echo " value=\"{$key}\" >" . htmlspecialchars($opt);
1435
										echo "</option>";
1436
									}
1437
								?>
1438
								</select>
1439
							</td>
1440
						</tr>
1441 30ade846 gnhb
						<tr>
1442 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("MAC address"); ?></td>
1443 30ade846 gnhb
							<td class="vtable">
1444 2cbe4b47 Colin Fleming
								<input name="spoofmac" type="text" class="formfld unknown" id="spoofmac" size="30" value="<?=htmlspecialchars($pconfig['spoofmac']);?>" />
1445 30ade846 gnhb
								<?php
1446
									$ip = getenv('REMOTE_ADDR');
1447
									$mac = `/usr/sbin/arp -an | grep {$ip} | cut -d" " -f4`;
1448
									$mac = str_replace("\n","",$mac);
1449
									if($mac):
1450
								?>
1451 32b91bcf Colin Fleming
									<a onclick="document.forms[0].spoofmac.value='<?=$mac?>';" href="#"><?=gettext("Insert my local MAC address"); ?></a>
1452 30ade846 gnhb
								<?php endif; ?>
1453 32b91bcf Colin Fleming
								<br/>
1454 136c598d Carlos Eduardo Ramos
								<?=gettext("This field can be used to modify (\"spoof\") the MAC " .
1455 32b91bcf Colin Fleming
								"address of this interface"); ?><br/>
1456
								<?=gettext("(may be required with some cable connections)"); ?><br/>
1457 136c598d Carlos Eduardo Ramos
								<?=gettext("Enter a MAC address in the following format: xx:xx:xx:xx:xx:xx " .
1458
								"or leave blank"); ?>
1459 30ade846 gnhb
							</td>
1460
						</tr>
1461
						<tr>
1462 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("MTU"); ?></td>
1463 c0948c6c Renato Botelho
							<td class="vtable">
1464 2cbe4b47 Colin Fleming
								<input name="mtu" type="text" class="formfld unknown" id="mtu" size="8" value="<?=htmlspecialchars($pconfig['mtu']);?>" />
1465 32b91bcf Colin Fleming
								<br/>
1466 4a735210 Renato Botelho
								<?php
1467 0d0d4a27 Renato Botelho
									print gettext("If you leave this field blank, the adapter's default MTU will " .
1468
									"be used. This is typically 1500 bytes but can vary in some circumstances.");
1469 4a735210 Renato Botelho
								?>
1470 4cea5cf8 Ermal
							</td>
1471
						</tr>
1472
						<tr>
1473
							<td valign="top" class="vncell"><?=gettext("MSS"); ?></td>
1474 c0948c6c Renato Botelho
							<td class="vtable">
1475 2cbe4b47 Colin Fleming
								<input name="mss" type="text" class="formfld unknown" id="mss" size="8" value="<?=htmlspecialchars($pconfig['mss']);?>" />
1476 32b91bcf Colin Fleming
								<br/>
1477 136c598d Carlos Eduardo Ramos
								<?=gettext("If you enter a value in this field, then MSS clamping for " .
1478 c0948c6c Renato Botelho
								"TCP connections to the value entered above minus 40 (TCP/IP " .
1479
								"header size) will be in effect."); ?>
1480 30ade846 gnhb
							</td>
1481
						</tr>
1482 6d529efd Renato Botelho
						<?php
1483 509ca889 Evgeny Yurchenko
						if (count($mediaopts_list) > 0){
1484
						$mediaopt_from_config = $config['interfaces'][$if]['media'] . ' ' . $config['interfaces'][$if]['mediaopt'];
1485
						echo "<tr>";
1486
							echo '<td valign="top" class="vncell">' . gettext("Speed and duplex") . '</td>';
1487
							echo '<td class="vtable">';
1488 6d529efd Renato Botelho
							echo '<div id="showadvmediabox"';
1489 6e2a15e6 Evgeny Yurchenko
								if ($mediaopt_from_config != 'autoselect ' && $mediaopt_from_config != ' ') echo " style='display:none'>";
1490
								else echo '>';
1491 2cbe4b47 Colin Fleming
								echo '<input type="button" onclick="show_advanced_media()" value="' . gettext("Advanced") . '" /> - ' . gettext("Show advanced option");
1492 6e2a15e6 Evgeny Yurchenko
							echo "</div>";
1493
							echo '<div id="showmediaadv" ';
1494
							if ($mediaopt_from_config == 'autoselect ' || $mediaopt_from_config == ' ') echo "style='display:none'>";
1495
							else echo '>';
1496 509ca889 Evgeny Yurchenko
								echo '<select name="mediaopt" class="formselect" id="mediaopt">';
1497 433e9842 jim-p
								print "<option value=\"\">Default (no preference, typically autoselect)</option>";
1498
								print "<option value=\"\">------- Media Supported by this interface -------</option>";
1499 509ca889 Evgeny Yurchenko
								foreach($mediaopts_list as $mediaopt){
1500
									if ($mediaopt != rtrim($mediaopt_from_config)){
1501
										print "<option value=\"$mediaopt\">" . gettext("$mediaopt") . "</option>";
1502
									} else {
1503 339d2743 Colin Fleming
										print "<option value=\"$mediaopt\" selected=\"selected\">" . gettext("$mediaopt") . "</option>";
1504 509ca889 Evgeny Yurchenko
									}
1505
								}
1506 32b91bcf Colin Fleming
								echo '</select><br/>';
1507 433e9842 jim-p
								echo gettext("Here you can explicitly set speed and duplex mode for this interface. WARNING: You MUST leave this set to autoselect (automatically negotiate speed) unless the port this interface connects to has its speed and duplex forced.");
1508 6e2a15e6 Evgeny Yurchenko
						echo '</div>';
1509 509ca889 Evgeny Yurchenko
							echo '</td>';
1510
						echo '</tr>';
1511
						}
1512
						?>
1513 30ade846 gnhb
						<tr>
1514
							<td colspan="2" valign="top" height="16"></td>
1515 c0948c6c Renato Botelho
						</tr>
1516 168549b9 Colin Fleming
						<tr style="display:none;" name="none" id="none"><td style="display:none;"></td></tr>
1517 47593ac6 Seth Mos
						<tr style="display:none;" name="staticv4" id="staticv4">
1518 30ade846 gnhb
							<td colspan="2" style="padding:0px;">
1519 7a47e299 Renato Botelho
								<a name="gatewaysection"></a>
1520 168549b9 Colin Fleming
								<table width="100%" border="0" cellpadding="6" cellspacing="0" summary="staticv4">
1521 30ade846 gnhb
									<tr>
1522 47593ac6 Seth Mos
										<td colspan="2" valign="top" class="listtopic"><?=gettext("Static IPv4 configuration"); ?></td>
1523 30ade846 gnhb
									</tr>
1524
									<tr>
1525 47593ac6 Seth Mos
										<td width="22%" valign="top" class="vncellreq"><?=gettext("IPv4 address"); ?></td>
1526 c0948c6c Renato Botelho
										<td width="78%" class="vtable">
1527 2cbe4b47 Colin Fleming
											<input name="ipaddr" type="text" class="formfld unknown" id="ipaddr" size="20" value="<?=htmlspecialchars($pconfig['ipaddr']);?>" />
1528 30ade846 gnhb
											/
1529
											<select name="subnet" class="formselect" id="subnet">
1530
												<?php
1531
												for ($i = 32; $i > 0; $i--) {
1532
													if($i <> 31) {
1533
														echo "<option value=\"{$i}\" ";
1534 339d2743 Colin Fleming
														if ($i == $pconfig['subnet']) echo "selected=\"selected\"";
1535 30ade846 gnhb
														echo ">" . $i . "</option>";
1536
													}
1537
												}
1538
												?>
1539
											</select>
1540
										</td>
1541
									</tr>
1542
									<tr>
1543 6d3fd938 Seth Mos
										<td width="22%" valign="top" class="vncell"><?=gettext("Gateway"); ?></td>
1544 30ade846 gnhb
										<td width="78%" class="vtable">
1545
											<select name="gateway" class="formselect" id="gateway">
1546 339d2743 Colin Fleming
												<option value="none" selected="selected"><?=gettext("None"); ?></option>
1547 9978e156 gnhb
													<?php
1548 30ade846 gnhb
													if(count($a_gateways) > 0) {
1549
														foreach ($a_gateways as $gateway) {
1550 47593ac6 Seth Mos
															if(($gateway['interface'] == $if)  && (is_ipaddrv4($gateway['gateway']))) {
1551 9978e156 gnhb
													?>
1552 339d2743 Colin Fleming
															<option value="<?=$gateway['name'];?>" <?php if ($gateway['name'] == $pconfig['gateway']) echo "selected=\"selected\""; ?>>
1553 30ade846 gnhb
																<?=htmlspecialchars($gateway['name']) . " - " . htmlspecialchars($gateway['gateway']);?>
1554
															</option>
1555
													<?php
1556
															}
1557
														}
1558
													}
1559
													?>
1560
											</select>
1561 32b91bcf Colin Fleming
											- or  <strong><a onclick="show_add_gateway();" href="#gatewaysection"><?=gettext("add a new one."); ?></a></strong>
1562 30ade846 gnhb
											<br/>
1563
											<div id='addgwbox'>
1564 6d3fd938 Seth Mos
												<?=gettext("If this interface is an Internet connection, select an existing Gateway from the list or add one using the link above"); ?>
1565 30ade846 gnhb
											</div>
1566
											<div id='notebox'>
1567
											</div>
1568
											<div id="status">
1569 c0948c6c Renato Botelho
											</div>
1570 30ade846 gnhb
											<div style="display:none" id="addgateway" name="addgateway">
1571 168549b9 Colin Fleming
												<p>&nbsp;</p>
1572
												<table border="1" class="addgatewaybox" summary="addgateway">
1573 9978e156 gnhb
													<tr>
1574 30ade846 gnhb
														<td>
1575 168549b9 Colin Fleming
															<table class="addgatewaybox" cellpadding="1" cellspacing="1" summary="addgateway">
1576 bd10508a N0YB
																<tr><td>&nbsp;</td></tr>
1577 30ade846 gnhb
																<tr>
1578 933ea015 Carlos Eduardo Ramos
																	<td colspan="2"><center><b><font color="white"><?=gettext("Add new gateway:"); ?></font></b></center></td>
1579 30ade846 gnhb
																</tr>
1580 bd10508a N0YB
																<tr><td>&nbsp;</td></tr>
1581 30ade846 gnhb
																<?php
1582
																if($if == "wan" || $if == "WAN")
1583 339d2743 Colin Fleming
																	$checked = " checked=\"checked\"";
1584 30ade846 gnhb
																?>
1585
																<tr>
1586 2cbe4b47 Colin Fleming
																	<td width="45%" align="right"><font color="white"><?=gettext("Default  gateway:"); ?></font></td><td><input type="checkbox" id="defaultgw" name="defaultgw"<?=$checked?> /></td>
1587 c0948c6c Renato Botelho
																</tr>
1588 30ade846 gnhb
																<tr>
1589 2cbe4b47 Colin Fleming
																	<td align="right"><font color="white"><?=gettext("Gateway Name:"); ?></font></td><td><input id="name" name="name" value="<?=$wancfg['descr'] . "GW"?>" /></td>
1590 30ade846 gnhb
																</tr>
1591
																<tr>
1592 2cbe4b47 Colin Fleming
																	<td align="right"><font color="white"><?=gettext("Gateway IPv4:"); ?></font></td><td><input id="gatewayip" name="gatewayip" /></td>
1593 30ade846 gnhb
																</tr>
1594
																<tr>
1595 168549b9 Colin Fleming
																	<td align="right"><font color="white"><?=gettext("Description:"); ?></font></td><td><input id="gatewaydescr" name="gatewaydescr" /></td>
1596 30ade846 gnhb
																</tr>
1597 bd10508a N0YB
																<tr><td>&nbsp;</td></tr>
1598 30ade846 gnhb
																<tr>
1599 bd10508a N0YB
																	<td colspan="2">
1600 30ade846 gnhb
																		<center>
1601
																			<div id='savebuttondiv'>
1602 168549b9 Colin Fleming
																				<input id="gwsave" type="button" value="<?=gettext("Save Gateway"); ?>" onclick='hide_add_gatewaysave();' />
1603
																				<input id="gwcancel" type="button" value="<?=gettext("Cancel"); ?>" onclick='hide_add_gateway();' />
1604 30ade846 gnhb
																			</div>
1605
																		</center>
1606
																	</td>
1607
																</tr>
1608 93ee6323 gnhb
																<tr><td>&nbsp;</td></tr>
1609 30ade846 gnhb
															</table>
1610 9978e156 gnhb
														</td>
1611
													</tr>
1612
												</table>
1613 30ade846 gnhb
											</div>
1614
										</td>
1615
									</tr>
1616 a236affe N0YB
									<tr>
1617
										<td colspan="2" valign="top" height="16"></td>
1618
									</tr>
1619 30ade846 gnhb
								</table>
1620
							</td>
1621
						</tr>
1622 47593ac6 Seth Mos
						<tr style="display:none;" name="staticv6" id="staticv6">
1623
							<td colspan="2" style="padding:0px;">
1624 7a47e299 Renato Botelho
								<a name="gatewayv6section"></a>
1625 168549b9 Colin Fleming
								<table width="100%" border="0" cellpadding="6" cellspacing="0" summary="staticv6">
1626 47593ac6 Seth Mos
									<tr>
1627
										<td colspan="2" valign="top" class="listtopic"><?=gettext("Static IPv6 configuration"); ?></td>
1628
									</tr>
1629
									<tr>
1630
										<td width="22%" valign="top" class="vncellreq"><?=gettext("IPv6 address"); ?></td>
1631
										<td width="78%" class="vtable">
1632 2cbe4b47 Colin Fleming
											<input name="ipaddrv6" type="text" class="formfld unknown" id="ipaddrv6" size="28" value="<?=htmlspecialchars($pconfig['ipaddrv6']);?>" />
1633 47593ac6 Seth Mos
											/
1634 85e9cfee Phil Davis
											<select name="subnetv6" class="formselect" id="subnetv6">
1635 47593ac6 Seth Mos
												<?php
1636
												for ($i = 128; $i > 0; $i--) {
1637
													if($i <> 127) {
1638
														echo "<option value=\"{$i}\" ";
1639 339d2743 Colin Fleming
														if ($i == $pconfig['subnetv6']) echo "selected=\"selected\"";
1640 47593ac6 Seth Mos
														echo ">" . $i . "</option>";
1641
													}
1642
												}
1643
												?>
1644
											</select>
1645
										</td>
1646
									</tr>
1647
									<tr>
1648 6d3fd938 Seth Mos
										<td width="22%" valign="top" class="vncell"><?=gettext("Gateway IPv6"); ?></td>
1649 47593ac6 Seth Mos
										<td width="78%" class="vtable">
1650
											<select name="gatewayv6" class="formselect" id="gatewayv6">
1651 339d2743 Colin Fleming
												<option value="none" selected="selected"><?=gettext("None"); ?></option>
1652 47593ac6 Seth Mos
													<?php
1653
													if(count($a_gateways) > 0) {
1654
														foreach ($a_gateways as $gateway) {
1655
															if(($gateway['interface'] == $if) && (is_ipaddrv6($gateway['gateway']))) {
1656
													?>
1657 339d2743 Colin Fleming
															<option value="<?=$gateway['name'];?>" <?php if ($gateway['name'] == $pconfig['gatewayv6']) echo "selected=\"selected\""; ?>>
1658 47593ac6 Seth Mos
																<?=htmlspecialchars($gateway['name']) . " - " . htmlspecialchars($gateway['gateway']);?>
1659
															</option>
1660
													<?php
1661
															}
1662
														}
1663
													}
1664
													?>
1665
											</select>
1666 32b91bcf Colin Fleming
											- or <strong><a onclick="show_add_gateway_v6();" href="#gatewayv6section"><?=gettext("add a new one."); ?></a></strong>
1667 47593ac6 Seth Mos
											<br/>
1668 cfd40454 Seth Mos
											<div id='addgwboxv6'>
1669 6d3fd938 Seth Mos
											<?=gettext("If this interface is an Internet connection, select an existing Gateway from the list or add a new one using the link above"); ?>
1670 47593ac6 Seth Mos
											</div>
1671 cfd40454 Seth Mos
											<div id='noteboxv6'>
1672 47593ac6 Seth Mos
											</div>
1673 cfd40454 Seth Mos
											<div id="statusv6">
1674 47593ac6 Seth Mos
											</div>
1675 cfd40454 Seth Mos
											<div style="display:none" id="addgatewayv6" name="addgatewayv6">
1676 168549b9 Colin Fleming
												<p>&nbsp;</p>
1677
												<table border="1" class="addgatewaybox" summary="addgatewayv6">
1678 47593ac6 Seth Mos
													<tr>
1679
														<td>
1680 168549b9 Colin Fleming
															<table class="addgatewaybox" cellpadding="1" cellspacing="1" summary="addgatewayv6">
1681 bd10508a N0YB
																<tr><td>&nbsp;</td></tr>
1682 47593ac6 Seth Mos
																<tr>
1683
																	<td colspan="2"><center><b><font color="white"><?=gettext("Add new v6 gateway:"); ?></font></b></center></td>
1684
																</tr>
1685 bd10508a N0YB
																<tr><td>&nbsp;</td></tr>
1686 47593ac6 Seth Mos
																<?php
1687
																if($if == "wan" || $if == "WAN")
1688 339d2743 Colin Fleming
																	$checked = " checked=\"checked\"";
1689 47593ac6 Seth Mos
																?>
1690
																<tr>
1691 2cbe4b47 Colin Fleming
																	<td width="45%" align="right"><font color="white"><?=gettext("Default v6 gateway:"); ?></font></td><td><input type="checkbox" id="defaultgwv6" name="defaultgwv6"<?=$checked?> /></td>
1692 47593ac6 Seth Mos
																</tr>
1693
																<tr>
1694 2cbe4b47 Colin Fleming
																	<td align="right"><font color="white"><?=gettext("Gateway Name IPv6:"); ?></font></td><td><input id="namev6" name="namev6" value="<?=$wancfg['descr'] . "GWv6"?>" /></td>
1695 47593ac6 Seth Mos
																</tr>
1696
																<tr>
1697 168549b9 Colin Fleming
																	<td align="right"><font color="white"><?=gettext("Gateway IPv6:"); ?></font></td><td><input id="gatewayipv6" name="gatewayipv6" /></td>
1698 47593ac6 Seth Mos
																</tr>
1699
																<tr>
1700 2cbe4b47 Colin Fleming
																	<td align="right"><font color="white"><?=gettext("Description:"); ?></font></td><td><input id="gatewaydescrv6" name="gatewaydescrv6" /></td>
1701 47593ac6 Seth Mos
																</tr>
1702 bd10508a N0YB
																<tr><td>&nbsp;</td></tr>
1703 47593ac6 Seth Mos
																<tr>
1704 bd10508a N0YB
																	<td colspan="2">
1705 47593ac6 Seth Mos
																		<center>
1706 cfd40454 Seth Mos
																			<div id='savebuttondivv6'>
1707 168549b9 Colin Fleming
																				<input id="gwsavev6" type="button" value="<?=gettext("Save Gateway"); ?>" onclick='hide_add_gatewaysave_v6();' />
1708
																				<input id="gwcancelv6" type="button" value="<?=gettext("Cancel"); ?>" onclick='hide_add_gateway_v6();' />
1709 47593ac6 Seth Mos
																			</div>
1710
																		</center>
1711
																	</td>
1712
																</tr>
1713
																<tr><td>&nbsp;</td></tr>
1714
															</table>
1715
														</td>
1716
													</tr>
1717
												</table>
1718
											</div>
1719
										</td>
1720
									</tr>
1721 a236affe N0YB
									<tr>
1722
										<td colspan="2" valign="top" height="16"></td>
1723
									</tr>
1724 47593ac6 Seth Mos
								</table>
1725
							</td>
1726
						</tr>
1727 30ade846 gnhb
						<tr style="display:none;" name="dhcp" id="dhcp">
1728
							<td colspan="2" style="padding: 0px;">
1729 168549b9 Colin Fleming
								<table width="100%" border="0" cellpadding="6" cellspacing="0" summary="dhcp">
1730 30ade846 gnhb
									<tr>
1731 a9543eae Seth Mos
										<td colspan="2" valign="top" class="listtopic"><?=gettext("DHCP client configuration"); ?></td>
1732 30ade846 gnhb
									</tr>
1733 e4d40f41 gnhb
									<!-- Uncomment to expose DHCP+ in GUI
1734
									<tr>
1735
										<td width="22%" valign="top" class="vncell"><?=gettext("Enable DHCP+"); ?></td>
1736
										<td width="78%" class="vtable">
1737 339d2743 Colin Fleming
											<input name="dhcp_plus" type="checkbox" value="yes" <?php if ($pconfig['dhcp_plus'] == true) echo "checked=\"checked\""; ?> />
1738 e4d40f41 gnhb
										<strong><?=gettext("Enable DHCP+L2TP or DHCP+PPTP."); ?></strong>
1739
										<br/>
1740
										<?=gettext("Status changes on this interface will trigger reconfiguration (if necessary) of the associated PPTP/L2TP link."); ?>
1741
										</td>
1742
									</tr>
1743
									-->
1744 30ade846 gnhb
									<tr>
1745 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncell"><?=gettext("Hostname"); ?></td>
1746 30ade846 gnhb
										<td width="78%" class="vtable">
1747 2cbe4b47 Colin Fleming
											<input name="dhcphostname" type="text" class="formfld unknown" id="dhcphostname" size="40" value="<?=htmlspecialchars($pconfig['dhcphostname']);?>" />
1748 32b91bcf Colin Fleming
											<br/>
1749 136c598d Carlos Eduardo Ramos
											<?=gettext("The value in this field is sent as the DHCP client identifier " .
1750
											"and hostname when requesting a DHCP lease. Some ISPs may require " .
1751 933ea015 Carlos Eduardo Ramos
											"this (for client identification)."); ?>
1752 30ade846 gnhb
										</td>
1753
									</tr>
1754 ed395640 Seth Mos
									<tr>
1755
										<td width="22%" valign="top" class="vncell"><?=gettext("Alias IPv4 address"); ?></td>
1756
										<td width="78%" class="vtable">
1757 2cbe4b47 Colin Fleming
											<input name="alias-address" type="text" class="formfld unknown" id="alias-address" size="20" value="<?=htmlspecialchars($pconfig['alias-address']);?>" />
1758 ed395640 Seth Mos
											<select name="alias-subnet" class="formselect" id="alias-subnet">
1759
												<?php
1760
												for ($i = 32; $i > 0; $i--) {
1761
													if($i <> 31) {
1762
														echo "<option value=\"{$i}\" ";
1763 339d2743 Colin Fleming
														if ($i == $pconfig['alias-subnet']) echo "selected=\"selected\"";
1764 ed395640 Seth Mos
														echo ">" . $i . "</option>";
1765
													}
1766
												}
1767
												?>
1768
											</select>
1769
											<?=gettext("The value in this field is used as a fixed alias IPv4 address by the " .
1770
											"DHCP client."); ?>
1771
										</td>
1772 bfab2419 smos
									</tr>
1773 850324a2 jim-p
									<tr>
1774
										<td width="22%" valign="top" class="vncell"><?=gettext("Reject Leases From"); ?></td>
1775
										<td width="78%" class="vtable">
1776
											<input name="dhcprejectfrom" type="text" class="formfld unknown" id="dhcprejectfrom" size="20" value="<?=htmlspecialchars($pconfig['dhcprejectfrom']);?>" />
1777
											<br/>
1778
											<?=gettext("If there is a certain upstream DHCP server that should be ignored, place the IP address or subnet of the DHCP server to be ignored here."); ?>
1779 823bcb15 N0YB
											<?=gettext("This is useful for rejecting leases from cable modems that offer private IPs when they lose upstream sync."); ?>
1780 850324a2 jim-p
										</td>
1781
									</tr>
1782 a236affe N0YB
									<tr>
1783
										<td colspan="2" valign="top" height="16"></td>
1784
									</tr>
1785 e029943a Seth Mos
								</table>
1786
							</td>
1787
						</tr>
1788
						<tr style="display:none;" name="dhcp6" id="dhcp6">
1789
							<td colspan="2" style="padding: 0px;">
1790 168549b9 Colin Fleming
								<table width="100%" border="0" cellpadding="6" cellspacing="0" summary="dhcp6">
1791 e029943a Seth Mos
									<tr>
1792
										<td colspan="2" valign="top" class="listtopic"><?=gettext("DHCP6 client configuration"); ?></td>
1793 ed395640 Seth Mos
									</tr>
1794 20a7cb15 smos
									<!--- Leave commented out for now
1795 a9543eae Seth Mos
									<tr>
1796
										<td width="22%" valign="top" class="vncell"><?=gettext("DHCPv6 Unique Identifier (DUID)"); ?></td>
1797
										<td width="78%" class="vtable">
1798 2cbe4b47 Colin Fleming
											<input name="dhcp6-duid" type="text" class="formfld unknown" id="dhcp6-duid" size="40" value="<?=htmlspecialchars($pconfig['dhcp6-duid']);?>" />
1799 32b91bcf Colin Fleming
											<br/>
1800 a9543eae Seth Mos
											<?=gettext("The value in this field is sent as the DHCPv6 client identifier " .
1801 7149c4e7 Seth Mos
											"when requesting a DHCPv6 lease."); ?><br />
1802
											<?php	if(is_readable("/var/db/dhcp6c_duid")) {
1803 ed395640 Seth Mos
													// $current_duid = file_get_contents("/var/db/dhcp6c_duid");
1804 7149c4e7 Seth Mos
												}
1805 b1e4005f Vinicius Coque
												printf(gettext("The current DUID is: '%s'"),$current_duid);
1806 bfab2419 smos
												// hexdump -e '"%07.7_ax " 1/2 "%04x" " " 14/1 "%02x:" "\n"'
1807 7149c4e7 Seth Mos
											?>
1808
										</td>
1809
									</tr>
1810 20a7cb15 smos
									-->
1811 329024c8 Ermal
									<tr>
1812
										<td width="22%" valign="top" class="vncell"><?=gettext("Use IPv4 connectivity as parent interface"); ?></td>
1813
										<td width="78%" class="vtable">
1814
											<input name="dhcp6usev4iface" type="checkbox" id="dhcp6usev4iface" value="yes" <?php if ($pconfig['dhcp6usev4iface'] == true) echo "checked=\"checked\""; ?> />
1815
											<?=gettext("Request a IPv6 prefix/information through the IPv4 connectivity link"); ?>
1816
										</td>
1817
									</tr>
1818 6dcbd1b3 smos
									<tr>
1819
										<td width="22%" valign="top" class="vncell"><?=gettext("Request only a IPv6 prefix"); ?></td>
1820
										<td width="78%" class="vtable">
1821 3dd6ed1a Phil Davis
											<input name="dhcp6prefixonly" type="checkbox" id="dhcp6prefixonly" value="yes" <?php if ($pconfig['dhcp6prefixonly'] == true) echo "checked=\"checked\""; ?> />
1822 6dcbd1b3 smos
											<?=gettext("Only request a IPv6 prefix, do not request a IPv6 address"); ?>
1823
										</td>
1824
									</tr>
1825 7149c4e7 Seth Mos
									<tr>
1826
										<td width="22%" valign="top" class="vncell"><?=gettext("DHCPv6 Prefix Delegation size"); ?></td>
1827
										<td width="78%" class="vtable">
1828 ed395640 Seth Mos
											<select name="dhcp6-ia-pd-len" class="formselect" id="dhcp6-ia-pd-len">
1829 7149c4e7 Seth Mos
												<?php
1830 ed395640 Seth Mos
												$sizes = array("none" => "None", 16 => "48", 12 => "52", 8 => "56", 4 => "60", 2 => "62", 1 => "63", 0 => "64");
1831 7149c4e7 Seth Mos
												foreach($sizes as $bits => $length) {
1832
													echo "<option value=\"{$bits}\" ";
1833 339d2743 Colin Fleming
													if (is_numeric($pconfig['dhcp6-ia-pd-len']) && ($bits == $pconfig['dhcp6-ia-pd-len'])) echo "selected=\"selected\"";
1834 7149c4e7 Seth Mos
													echo ">" . $length . "</option>";
1835
												}
1836
												?>
1837
											</select>
1838 32b91bcf Colin Fleming
											<br/>
1839 ed395640 Seth Mos
											<?=gettext("The value in this field is the delegated prefix length provided by the DHCPv6 server. Normally specified by the ISP."); ?>
1840 30ade846 gnhb
										</td>
1841
									</tr>
1842 a236affe N0YB
									<tr>
1843 90652fbf Daniel Becker
										<td width="22%" valign="top" class="vncell"><?=gettext("Send IPv6 prefix hint"); ?></td>
1844
										<td width="78%" class="vtable">
1845
											<input name="dhcp6-ia-pd-send-hint" type="checkbox" id="dhcp6-ia-pd-send-hint" value="yes" <?php if ($pconfig['dhcp6-ia-pd-send-hint'] == true) echo "checked=\"checked\""; ?> />
1846
											<?=gettext("Send an IPv6 prefix hint to indicate the desired prefix size for delegation"); ?>
1847
										</td>
1848
									</tr>
1849
									<tr>
1850 a236affe N0YB
										<td colspan="2" valign="top" height="16"></td>
1851
									</tr>
1852 47593ac6 Seth Mos
								</table>
1853
							</td>
1854
						</tr>
1855 adc91ab7 smos
						<tr style="display:none;" name="6rd" id="6rd">
1856 7d567088 smos
							<td colspan="2" style="padding: 0px;">
1857 168549b9 Colin Fleming
								<table width="100%" border="0" cellpadding="6" cellspacing="0" summary="6rd">
1858 7d567088 smos
									<tr>
1859
										<td colspan="2" valign="top" class="listtopic"><?=gettext("6RD Rapid Deployment"); ?></td>
1860
									</tr>
1861
									<tr>
1862
										<td width="22%" valign="top" class="vncell"><?=gettext("6RD prefix"); ?></td>
1863
										<td width="78%" class="vtable">
1864 2cbe4b47 Colin Fleming
											<input name="prefix-6rd" type="text" class="formfld unknown" id="prefix-6rd" size="40" value="<?=htmlspecialchars($pconfig['prefix-6rd']);?>" />
1865 32b91bcf Colin Fleming
											<br/>
1866 32dc8109 smos
											<?=gettext("The value in this field is the 6RD IPv6 prefix assigned by your ISP. e.g. '2001:db8::/32'") ?><br />
1867 7d567088 smos
										</td>
1868
									</tr>
1869
									<tr>
1870 12215bfb smos
										<td width="22%" valign="top" class="vncell"><?=gettext("6RD Border Relay"); ?></td>
1871 7d567088 smos
										<td width="78%" class="vtable">
1872 2cbe4b47 Colin Fleming
											<input name="gateway-6rd" type="text" class="formfld unknown" id="gateway-6rd" size="40" value="<?=htmlspecialchars($pconfig['gateway-6rd']);?>" />
1873 32b91bcf Colin Fleming
											<br/>
1874 32dc8109 smos
											<?=gettext("The value in this field is 6RD IPv4 gateway address assigned by your ISP") ?><br />
1875 7d567088 smos
										</td>
1876
									</tr>
1877
									<tr>
1878 12215bfb smos
										<td width="22%" valign="top" class="vncell"><?=gettext("6RD IPv4 Prefix length"); ?></td>
1879 7d567088 smos
										<td width="78%" class="vtable">
1880 12215bfb smos
											<select name="prefix-6rd-v4plen" class="formselect" id="prefix-6rd-v4plen">
1881 7d567088 smos
												<?php
1882 12215bfb smos
												for ($i = 0; $i < 32; $i++) {
1883
													echo "<option value=\"{$i}\" ";
1884 339d2743 Colin Fleming
													if (is_numeric($pconfig['prefix-6rd-v4plen']) && ($i == $pconfig['prefix-6rd-v4plen'])) echo "selected=\"selected\"";
1885 12215bfb smos
													echo ">" . $i . " bits</option>";
1886 7d567088 smos
												}
1887
												?>
1888
											</select>
1889 32b91bcf Colin Fleming
											<br/>
1890 12215bfb smos
											<?=gettext("The value in this field is the 6RD IPv4 prefix length. Normally specified by the ISP. A value of 0 means we embed the entire IPv4 address in the 6RD prefix."); ?>
1891 7d567088 smos
										</td>
1892
									</tr>
1893 a236affe N0YB
									<tr>
1894
										<td colspan="2" valign="top" height="16"></td>
1895
									</tr>
1896 7d567088 smos
								</table>
1897
							</td>
1898
						</tr>
1899 20a7cb15 smos
						<tr style="display:none;" name="track6" id="track6">
1900
							<td colspan="2" style="padding: 0px;">
1901 168549b9 Colin Fleming
								<table width="100%" border="0" cellpadding="6" cellspacing="0" summary="track6">
1902 20a7cb15 smos
									<tr>
1903
										<td colspan="2" valign="top" class="listtopic"><?=gettext("Track IPv6 Interface"); ?></td>
1904
									</tr>
1905
									<tr>
1906
										<td width="22%" valign="top" class="vncell"><?=gettext("IPv6 Interface"); ?></td>
1907
										<td width="78%" class="vtable">
1908
										<select name='track6-interface' class='formselect' >
1909 6d529efd Renato Botelho
										<?php
1910 20a7cb15 smos
											$interfaces = get_configured_interface_with_descr(false, true);
1911
											$dynv6ifs = array();
1912
											foreach ($interfaces as $iface => $ifacename) {
1913
												switch($config['interfaces'][$iface]['ipaddrv6']) {
1914
													case "6to4":
1915
													case "6rd":
1916
													case "dhcp6":
1917
														$dynv6ifs[$iface] = $ifacename;
1918
														break;
1919
													default:
1920
														continue;
1921
												}
1922
											}
1923
											foreach($dynv6ifs as $iface => $ifacename) {
1924
												echo "<option value=\"{$iface}\"";
1925
												if ($iface == $pconfig['track6-interface'])
1926 339d2743 Colin Fleming
													echo " selected=\"selected\"";
1927 20a7cb15 smos
												echo ">" . htmlspecialchars($ifacename) . "</option>";
1928
											}
1929 6d529efd Renato Botelho
										?>
1930 32b91bcf Colin Fleming
										</select> <br/>
1931
											<br/>
1932 20a7cb15 smos
											<?=gettext("This selects the dynamic IPv6 WAN interface to track for configuration") ?><br />
1933
										</td>
1934
									</tr>
1935
									<tr>
1936
										<td width="22%" valign="top" class="vncell"><?=gettext("IPv6 Prefix ID"); ?></td>
1937
										<td width="78%" class="vtable">
1938 6b2d4b5a Darren Embry
											<?php
1939 02203e6d Renato Botelho
												if ($pconfig['track6-prefix-id'] == "")
1940
													$pconfig['track6-prefix-id'] = 0;
1941
												$track6_prefix_id_hex = sprintf("%x", $pconfig['track6-prefix-id']);
1942 6b2d4b5a Darren Embry
											?>
1943
											<input name="track6-prefix-id--hex" type="text" class="formfld unknown" id="track6-prefix-id--hex" size="8" value="<?= $track6_prefix_id_hex ?>" />
1944
											<br />
1945
											<?= gettext("The value in this field is the (Delegated) IPv6 prefix id. This determines the configurable network ID based on the dynamic IPv6 connection"); ?>
1946
											<br />
1947 02203e6d Renato Botelho
											<?= sprintf(gettext("Enter a <b>hexadecimal</b> value between %x and %x here, default value is 0."), 0, $ipv6_num_prefix_ids - 1); ?>
1948 20a7cb15 smos
										</td>
1949
									</tr>
1950 a236affe N0YB
									<tr>
1951
										<td colspan="2" valign="top" height="16"></td>
1952
									</tr>
1953 20a7cb15 smos
								</table>
1954
							</td>
1955
						</tr>
1956 6c05cfb0 gnhb
						<tr style="display:none;" name="ppp" id="ppp">
1957
							<td colspan="2" style="padding: 0px;">
1958 168549b9 Colin Fleming
								<table width="100%" border="0" cellpadding="6" cellspacing="0" summary="ppp">
1959 6c05cfb0 gnhb
									<tr>
1960 136c598d Carlos Eduardo Ramos
										<td colspan="2" valign="top" class="listtopic"><?=gettext("PPP configuration"); ?></td>
1961 6c05cfb0 gnhb
									</tr>
1962 3a906378 gnhb
									<tr name="ppp_provider" id="ppp_provider">
1963 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncell"><?=gettext("Service Provider"); ?></td>
1964 3a906378 gnhb
										<td width="78%" class="vtable">
1965 168549b9 Colin Fleming
											<table border="0" cellpadding="0" cellspacing="0" summary="service provider">
1966 3a906378 gnhb
												<tr id="trcountry">
1967 933ea015 Carlos Eduardo Ramos
													<td><?=gettext("Country:"); ?> &nbsp;&nbsp;</td>
1968 3a906378 gnhb
													<td>
1969 32b91bcf Colin Fleming
														<select class="formselect" name="country" id="country" onchange="providers_list()">
1970 3a906378 gnhb
															<option></option>
1971
														</select>
1972
													</td>
1973
												</tr>
1974
												<tr id="trprovider" style="display:none">
1975 933ea015 Carlos Eduardo Ramos
													<td><?=gettext("Provider:"); ?> &nbsp;&nbsp;</td>
1976 3a906378 gnhb
													<td>
1977 32b91bcf Colin Fleming
														<select class="formselect" name="provider" id="provider" onchange="providerplan_list()">
1978 3a906378 gnhb
															<option></option>
1979
														</select>
1980
													</td>
1981
												</tr>
1982
												<tr id="trproviderplan" style="display:none">
1983 933ea015 Carlos Eduardo Ramos
													<td><?=gettext("Plan:"); ?> &nbsp;&nbsp;</td>
1984 3a906378 gnhb
													<td>
1985 32b91bcf Colin Fleming
														<select class="formselect" name="providerplan" id="providerplan" onchange="prefill_provider()">
1986 3a906378 gnhb
															<option></option>
1987
														</select>
1988
													</td>
1989
												</tr>
1990
											</table>
1991 136c598d Carlos Eduardo Ramos
											<br/><span class="vexpl"><?=gettext("Select to fill in data for your service provider."); ?></span>
1992 3a906378 gnhb
										</td>
1993
									</tr>
1994 6c05cfb0 gnhb
									<tr>
1995 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncell"><?=gettext("Username"); ?></td>
1996 3a906378 gnhb
										<td width="78%" class="vtable">
1997 2cbe4b47 Colin Fleming
										<input name="username" type="text" class="formfld user" id="username" size="20" value="<?=htmlspecialchars($pconfig['username']);?>" />
1998 3a906378 gnhb
										</td>
1999
									</tr>
2000
									<tr>
2001 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncell"><?=gettext("Password"); ?></td>
2002 3a906378 gnhb
										<td width="78%" class="vtable">
2003 2cbe4b47 Colin Fleming
										<input name="password" type="password" class="formfld pwd" id="password" size="20" value="<?=htmlspecialchars($pconfig['password']);?>" />
2004 3a906378 gnhb
										</td>
2005
									</tr>
2006
									<tr name="phone_num" id="phone_num">
2007 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncellreq"><?=gettext("Phone Number"); ?></td>
2008 3a906378 gnhb
										<td width="78%" class="vtable">
2009 2cbe4b47 Colin Fleming
											<input name="phone" type="text" class="formfld unknown" id="phone" size="12" value="<?=htmlspecialchars($pconfig['phone']);?>" />
2010 3a906378 gnhb
										</td>
2011
									</tr>
2012
									<tr name="apn_" id="apn_">
2013 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncell"><?=gettext("Access Point Name (APN)"); ?></td>
2014 3a906378 gnhb
										<td width="78%" class="vtable">
2015 2cbe4b47 Colin Fleming
											<input name="apn" type="text" class="formfld unknown" id="apn" size="40" value="<?=htmlspecialchars($pconfig['apn']);?>" />
2016 3a906378 gnhb
										</td>
2017
									</tr>
2018
									<tr name="interface" id="interface" >
2019 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncellreq"><?=gettext("Modem Port"); ?></td>
2020 3a906378 gnhb
										<td width="78%" class="vtable">
2021
											<select name="port" id="port" class="formselect">
2022
											<?php
2023
												$portlist = glob("/dev/cua*");
2024
												$modems = glob("/dev/modem*");
2025
												$portlist = array_merge($portlist, $modems);
2026
												foreach ($portlist as $port) {
2027
													if(preg_match("/\.(lock|init)$/", $port))
2028
														continue;
2029
													echo "<option value=\"".trim($port)."\"";
2030
													if ($pconfig['port'] == $port)
2031 339d2743 Colin Fleming
														echo " selected=\"selected\"";
2032 3a906378 gnhb
													echo ">{$port}</option>";
2033
												}?>
2034
											</select>
2035
										</td>
2036
									</tr>
2037 168549b9 Colin Fleming
									<tr>
2038 136c598d Carlos Eduardo Ramos
									<td width="22%" valign="top" class="vncell"><?=gettext("Advanced PPP"); ?></td>
2039 6c05cfb0 gnhb
										<?php if (isset($pconfig['pppid'])): ?>
2040
											<td width="78%" class="vtable">
2041 933ea015 Carlos Eduardo Ramos
											<a href="/interfaces_ppps_edit.php?id=<?=htmlspecialchars($pconfig['pppid']);?>" class="navlnk"><?=gettext("Click here"); ?> </a>
2042
											<?=gettext("to edit PPP configuration."); ?>
2043 6c05cfb0 gnhb
											</td>
2044 ee9933b6 Renato Botelho
										<?php else: ?>
2045 6c05cfb0 gnhb
											<td width="78%" class="vtable">
2046 933ea015 Carlos Eduardo Ramos
											<a href="/interfaces_ppps_edit.php" class="navlnk"><?=gettext("Click here"); ?> </a>
2047
											<?=gettext("to create a PPP configuration."); ?>
2048 6c05cfb0 gnhb
											</td>
2049 c0948c6c Renato Botelho
										<?php endif; ?>
2050 6c05cfb0 gnhb
									</tr>
2051 a236affe N0YB
									<tr>
2052
										<td colspan="2" valign="top" height="16"></td>
2053
									</tr>
2054 6c05cfb0 gnhb
								</table>
2055
							</td>
2056
						</tr>
2057 30ade846 gnhb
						<tr style="display:none;" name="pppoe" id="pppoe">
2058
							<td colspan="2" style="padding:0px;">
2059 168549b9 Colin Fleming
								<table width="100%" border="0" cellpadding="6" cellspacing="0" summary="pppoe">
2060 30ade846 gnhb
									<tr>
2061 136c598d Carlos Eduardo Ramos
										<td colspan="2" valign="top" class="listtopic"><?=gettext("PPPoE configuration"); ?></td>
2062 30ade846 gnhb
									</tr>
2063
									<tr>
2064 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncellreq"><?=gettext("Username"); ?></td>
2065 30ade846 gnhb
										<td width="78%" class="vtable">
2066 2cbe4b47 Colin Fleming
												<input name="pppoe_username" type="text" class="formfld user" id="pppoe_username" size="20" value="<?=htmlspecialchars($pconfig['pppoe_username']);?>" />
2067 30ade846 gnhb
										</td>
2068
									</tr>
2069
									<tr>
2070 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncellreq"><?=gettext("Password"); ?></td>
2071 30ade846 gnhb
										<td width="78%" class="vtable">
2072 2cbe4b47 Colin Fleming
											<input name="pppoe_password" type="password" class="formfld pwd" id="pppoe_password" size="20" value="<?=htmlspecialchars($pconfig['pppoe_password']);?>" />
2073 30ade846 gnhb
										</td>
2074
									</tr>
2075
									<tr>
2076 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncell"><?=gettext("Service name"); ?></td>
2077 2cbe4b47 Colin Fleming
										<td width="78%" class="vtable"><input name="provider" type="text" class="formfld unknown" id="provider" size="20" value="<?=htmlspecialchars($pconfig['provider']);?>" />
2078 32b91bcf Colin Fleming
											<br/> <span class="vexpl"><?=gettext("Hint: this field can usually be left empty"); ?></span>
2079 30ade846 gnhb
										</td>
2080
									</tr>
2081
									<tr>
2082 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncell"><?=gettext("Dial on demand"); ?></td>
2083 30ade846 gnhb
										<td width="78%" class="vtable">
2084 339d2743 Colin Fleming
											<input name="pppoe_dialondemand" type="checkbox" id="pppoe_dialondemand" value="enable" <?php if ($pconfig['pppoe_dialondemand']) echo "checked=\"checked\""; ?> />
2085 32b91bcf Colin Fleming
											<strong><?=gettext("Enable Dial-On-Demand mode"); ?></strong><br/>
2086 933ea015 Carlos Eduardo Ramos
											<?=gettext("This option causes the interface to operate in dial-on-demand mode, allowing you to have a "); ?><i><?=gettext("virtual full time"); ?></i> <?=gettext("connection. The interface is configured, but the actual connection of the link is delayed until qualifying outgoing traffic is detected."); ?>
2087 30ade846 gnhb
										</td>
2088
									</tr>
2089
									<tr>
2090 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncell"><?=gettext("Idle timeout"); ?></td>
2091 30ade846 gnhb
										<td width="78%" class="vtable">
2092 2cbe4b47 Colin Fleming
											<input name="pppoe_idletimeout" type="text" class="formfld unknown" id="pppoe_idletimeout" size="8" value="<?=htmlspecialchars($pconfig['pppoe_idletimeout']);?>" /> <?=gettext("seconds"); ?><br/><?=gettext("If no qualifying outgoing packets are transmitted for the specified number of seconds, the connection is brought down. An idle timeout of zero disables this feature."); ?>
2093 30ade846 gnhb
										</td>
2094
									</tr>
2095
									<tr>
2096
										<td width="22%" valign="top" class="vncell"><?=gettext("Periodic reset");?></td>
2097
										<td width="78%" class="vtable">
2098 168549b9 Colin Fleming
											<table id="presetwrap" cellspacing="0" cellpadding="0" width="100%" summary="periodic reset">
2099 30ade846 gnhb
												<tr>
2100
													<td align="left" valign="top">
2101
														<p style="margin: 4px; padding: 4px 0 4px 0; width: 94%;">
2102 168549b9 Colin Fleming
														<select style="vertical-align:top" id="reset_type" name="pppoe-reset-type" class="formselect" onchange="show_reset_settings(this.value);">
2103 339d2743 Colin Fleming
															<option value=""><?=gettext("Disabled"); ?></option>
2104
															<option value="custom" <?php if ($pconfig['pppoe-reset-type'] == "custom") echo "selected=\"selected\""; ?>><?=gettext("Custom"); ?></option>
2105
															<option value="preset" <?php if ($pconfig['pppoe-reset-type'] == "preset") echo "selected=\"selected\""; ?>><?=gettext("Pre-Set"); ?></option>
2106 136c598d Carlos Eduardo Ramos
														</select> <?=gettext("Select a reset timing type"); ?>
2107 30ade846 gnhb
														</p>
2108
														<?php if ($pconfig['pppoe_pr_custom']): ?>
2109
															<p style="margin: 2px; padding: 4px; width: 94%;" id="pppoecustomwrap">
2110
														<?php else: ?>
2111
															<p style="margin: 2px; padding: 4px; width: 94%; display: none;" id="pppoecustomwrap">
2112
														<?php endif; ?>
2113 c0948c6c Renato Botelho
														<input type="text" name="pppoe_resethour" class="fd_incremental_inp_range_0_23 fd_increment_1 fd_classname_dec_buttonDec fd_classname_inc_buttonInc" maxlength="2" id="pppoe_resethour" value="<?= $pconfig['pppoe_resethour']; ?>" size="3" />
2114 136c598d Carlos Eduardo Ramos
														<?=gettext("hour (0-23)"); ?><br />
2115 c0948c6c Renato Botelho
														<input type="text" name="pppoe_resetminute" class="fd_incremental_inp_range_0_59 fd_increment_1 fd_classname_dec_buttonDec fd_classname_inc_buttonInc" maxlength="2" id="pppoe_resetminute" value="<?= $pconfig['pppoe_resetminute']; ?>" size="3" />
2116 136c598d Carlos Eduardo Ramos
														<?=gettext("minute (0-59)"); ?><br />
2117 c0948c6c Renato Botelho
														<input name="pppoe_resetdate" type="text" class="w8em format-m-d-y highlight-days-67" id="pppoe_resetdate" maxlength="10" size="10" value="<?=htmlspecialchars($pconfig['pppoe_resetdate']);?>" />
2118 136c598d Carlos Eduardo Ramos
														<?=gettext("reset at a specific date (mm/dd/yyyy)"); ?>
2119 30ade846 gnhb
														<br />&nbsp;<br />
2120 933ea015 Carlos Eduardo Ramos
														<span class="red"><strong><?=gettext("Note:"); ?> </strong></span>
2121 136c598d Carlos Eduardo Ramos
														<?=gettext("If you leave the date field empty, the reset will be executed each day at the time you did specify using the minutes and hour field."); ?>
2122 30ade846 gnhb
														</p>
2123
														<?php if ($pconfig['pppoe_pr_preset']): ?>
2124
															<p style="margin: 2px; padding: 4px; width: 94%;" id="pppoepresetwrap">
2125
														<?php else: ?>
2126
															<p style="margin: 2px; padding: 4px; width: 94%; display: none;" id="pppoepresetwrap">
2127
														<?php endif; ?>
2128 c0948c6c Renato Botelho
														<input name="pppoe_pr_preset_val" type="radio" id="pppoe_monthly" value="monthly" <?php if ($pconfig['pppoe_monthly']) echo "checked=\"checked\""; ?> />
2129 136c598d Carlos Eduardo Ramos
														<?=gettext("reset at each month ('0 0 1 * *')"); ?>
2130 30ade846 gnhb
														<br />
2131 c0948c6c Renato Botelho
														<input name="pppoe_pr_preset_val" type="radio" id="pppoe_weekly" value="weekly" <?php if ($pconfig['pppoe_weekly']) echo "checked=\"checked\""; ?> />
2132 136c598d Carlos Eduardo Ramos
														<?=gettext("reset at each week ('0 0 * * 0')"); ?>
2133 30ade846 gnhb
														<br />
2134 c0948c6c Renato Botelho
														<input name="pppoe_pr_preset_val" type="radio" id="pppoe_daily" value="daily" <?php if ($pconfig['pppoe_daily']) echo "checked=\"checked\""; ?> />
2135 136c598d Carlos Eduardo Ramos
														<?=gettext("reset at each day ('0 0 * * *')"); ?>
2136 30ade846 gnhb
														<br />
2137 c0948c6c Renato Botelho
														<input name="pppoe_pr_preset_val" type="radio" id="pppoe_hourly" value="hourly" <?php if ($pconfig['pppoe_hourly']) echo "checked=\"checked\""; ?> />
2138 136c598d Carlos Eduardo Ramos
														<?=gettext("reset at each hour ('0 * * * *')"); ?>
2139 30ade846 gnhb
														</p>
2140
													</td>
2141
												</tr>
2142
											</table>
2143
										</td>
2144
									</tr>
2145 c0948c6c Renato Botelho
2146 30ade846 gnhb
									<tr>
2147 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncell"><?=gettext("Advanced and MLPPP"); ?></td>
2148 30ade846 gnhb
										<?php if (isset($pconfig['pppid'])): ?>
2149 09637075 gnhb
											<td width="78%" class="vtable">
2150 c0948c6c Renato Botelho
											<a href="/interfaces_ppps_edit.php?id=<?=htmlspecialchars($pconfig['pppid']);?>" class="navlnk"><?=gettext("Click here"); ?> </a>
2151 933ea015 Carlos Eduardo Ramos
											<?=gettext("for additional PPPoE configuration options. Save first if you made changes."); ?>
2152 9978e156 gnhb
											</td>
2153 ee9933b6 Renato Botelho
										<?php else: ?>
2154 09637075 gnhb
											<td width="78%" class="vtable">
2155 136c598d Carlos Eduardo Ramos
											<a href="/interfaces_ppps_edit.php" class="navlnk"><?=gettext("Click here"); ?> </a>
2156 933ea015 Carlos Eduardo Ramos
											<?=gettext("for advanced PPPoE configuration options and MLPPP configuration."); ?>
2157 30ade846 gnhb
											</td>
2158 c0948c6c Renato Botelho
										<?php endif; ?>
2159 30ade846 gnhb
									</tr>
2160 a236affe N0YB
									<tr>
2161
										<td colspan="2" valign="top" height="16"></td>
2162
									</tr>
2163 30ade846 gnhb
								</table>
2164 87f0be87 Chris Buechler
							</td>
2165 667a3184 Scott Ullrich
						</tr>
2166 30ade846 gnhb
						<tr style="display:none;" name="pptp" id="pptp">
2167
							<td colspan="2" style="padding:0px;">
2168 168549b9 Colin Fleming
								<table width="100%" border="0" cellpadding="6" cellspacing="0" summary="pptp">
2169 30ade846 gnhb
									<tr>
2170 e4d40f41 gnhb
										<td colspan="2" valign="top" class="listtopic"><?=gettext("PPTP/L2TP configuration"); ?></td>
2171 30ade846 gnhb
									</tr>
2172
									<tr>
2173 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncellreq"><?=gettext("Username"); ?></td>
2174 30ade846 gnhb
										<td width="78%" class="vtable">
2175 2cbe4b47 Colin Fleming
											<input name="pptp_username" type="text" class="formfld user" id="pptp_username" size="20" value="<?=htmlspecialchars($pconfig['pptp_username']);?>" />
2176 30ade846 gnhb
										</td>
2177
									</tr>
2178
									<tr>
2179 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncellreq"><?=gettext("Password"); ?></td>
2180 30ade846 gnhb
										<td width="78%" class="vtable">
2181 2cbe4b47 Colin Fleming
											<input name="pptp_password" type="password" class="formfld pwd" id="pptp_password" size="20" value="<?=htmlspecialchars($pconfig['pptp_password']);?>" />
2182 30ade846 gnhb
										</td>
2183
									</tr>
2184
									<tr>
2185 168549b9 Colin Fleming
										<td width="22%" valign="top" class="vncellreq"><?=gettext("Local IP address"); ?></td>
2186 c0948c6c Renato Botelho
										<td width="78%" class="vtable">
2187 2cbe4b47 Colin Fleming
											<input name="pptp_local" type="text" class="formfld unknown" id="pptp_local" size="20"  value="<?=htmlspecialchars($pconfig['pptp_local'][0]);?>" />
2188 30ade846 gnhb
											/
2189
											<select name="pptp_subnet" class="formselect" id="pptp_subnet">
2190
												<?php for ($i = 31; $i > 0; $i--): ?>
2191 339d2743 Colin Fleming
													<option value="<?=$i;?>" <?php if ($i == $pconfig['pptp_subnet'][0]) echo "selected=\"selected\""; ?>>
2192 30ade846 gnhb
														<?=$i;?></option>
2193
												<?php endfor; ?>
2194
											</select>
2195
										</td>
2196
									</tr>
2197
									<tr>
2198 168549b9 Colin Fleming
										<td width="22%" valign="top" class="vncellreq"><?=gettext("Remote IP address"); ?></td>
2199 30ade846 gnhb
										<td width="78%" class="vtable">
2200 2cbe4b47 Colin Fleming
											<input name="pptp_remote" type="text" class="formfld unknown" id="pptp_remote" size="20" value="<?=htmlspecialchars($pconfig['pptp_remote'][0]);?>" />
2201 30ade846 gnhb
										</td>
2202
									</tr>
2203
									<tr>
2204 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncell"><?=gettext("Dial on demand"); ?></td>
2205 30ade846 gnhb
										<td width="78%" class="vtable">
2206 339d2743 Colin Fleming
											<input name="pptp_dialondemand" type="checkbox" id="pptp_dialondemand" value="enable" <?php if ($pconfig['pptp_dialondemand']) echo "checked=\"checked\""; ?> />
2207 32b91bcf Colin Fleming
											<strong><?=gettext("Enable Dial-On-Demand mode"); ?></strong><br/>
2208 933ea015 Carlos Eduardo Ramos
											<?=gettext("This option causes the interface to operate in dial-on-demand mode, allowing you to have a"); ?> <i><?=gettext("virtual full time"); ?></i> <?=gettext("connection. The interface is configured, but the actual connection of the link is delayed until qualifying outgoing traffic is detected."); ?>
2209 30ade846 gnhb
										</td>
2210
									</tr>
2211
									<tr>
2212 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncell"><?=gettext("Idle timeout"); ?></td>
2213 30ade846 gnhb
										<td width="78%" class="vtable">
2214 2cbe4b47 Colin Fleming
											<input name="pptp_idletimeout" type="text" class="formfld unknown" id="pptp_idletimeout" size="8" value="<?=htmlspecialchars($pconfig['pptp_idletimeout']);?>" /> <?=gettext("seconds"); ?><br/><?=gettext("If no qualifying outgoing packets are transmitted for the specified number of seconds, the connection is brought down. An idle timeout of zero disables this feature."); ?>
2215 30ade846 gnhb
										</td>
2216
									</tr>
2217 4a1ee8ac gnhb
									<tr>
2218 136c598d Carlos Eduardo Ramos
										<td width="22%" valign="top" class="vncell"><?=gettext("Advanced"); ?></td>
2219 4a1ee8ac gnhb
										<?php if (isset($pconfig['pppid'])): ?>
2220
											<td width="78%" class="vtable">
2221 c0948c6c Renato Botelho
											<a href="/interfaces_ppps_edit.php?id=<?=htmlspecialchars($pconfig['pppid']);?>" class="navlnk"><?=gettext("Click here");?></a>
2222 933ea015 Carlos Eduardo Ramos
											<?=gettext("for additional PPTP and L2TP configuration options. Save first if you made changes.");?>
2223 4a1ee8ac gnhb
											</td>
2224 ee9933b6 Renato Botelho
										<?php else: ?>
2225 4a1ee8ac gnhb
											<td width="78%" class="vtable">
2226 4256d115 Renato Botelho
											<a href="/interfaces_ppps_edit.php" class="navlnk"><?=gettext("Click here");?></a>
2227
											<?=gettext("for advanced PPTP and L2TP configuration options");?>.
2228 4a1ee8ac gnhb
											</td>
2229 c0948c6c Renato Botelho
										<?php endif; ?>
2230 4a1ee8ac gnhb
									</tr>
2231 a236affe N0YB
									<tr>
2232
										<td colspan="2" valign="top" height="16"></td>
2233
									</tr>
2234 30ade846 gnhb
								</table>
2235
							</td>
2236
						</tr>
2237
						<?php
2238
							/* Wireless interface? */
2239
							if (isset($wancfg['wireless'])):
2240
						?>
2241 9978e156 gnhb
						<tr>
2242 136c598d Carlos Eduardo Ramos
							<td colspan="2" valign="top" class="listtopic"><?=gettext("Common wireless configuration - Settings apply to all wireless networks on"); ?> <?=$wlanbaseif;?>.</td>
2243 9978e156 gnhb
						</tr>
2244 f62c44d8 Erik Fonnesbeck
						<tr>
2245 4256d115 Renato Botelho
							<td valign="top" class="vncell"><?=gettext("Persist common settings");?></td>
2246 f62c44d8 Erik Fonnesbeck
							<td class="vtable">
2247 339d2743 Colin Fleming
								<input name="persistcommonwireless" type="checkbox" value="yes"  class="formfld" id="persistcommonwireless" <?php if ($pconfig['persistcommonwireless']) echo "checked=\"checked\"";?> />
2248 933ea015 Carlos Eduardo Ramos
								<br/><?=gettext("Enabling this preserves the common wireless configuration through interface deletions and reassignments.");?>
2249 f62c44d8 Erik Fonnesbeck
							</td>
2250
						</tr>
2251 9978e156 gnhb
						<tr>
2252 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncellreq"><?=gettext("Standard"); ?></td>
2253 30ade846 gnhb
							<td class="vtable">
2254 3a13f094 gnhb
							<select name="standard" class="formselect" id="standard">
2255
								<?php
2256
								foreach($wl_modes as $wl_standard => $wl_channels) {
2257
									echo "<option ";
2258
									if ($pconfig['standard'] == "$wl_standard")
2259 339d2743 Colin Fleming
										echo "selected=\"selected\" ";
2260 3a13f094 gnhb
									echo "value=\"$wl_standard\">802.$wl_standard</option>\n";
2261
								}
2262
								?>
2263
							</select>
2264 30ade846 gnhb
							</td>
2265
						</tr>
2266
						<?php if (isset($wl_modes['11g'])): ?>
2267
						<tr>
2268 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncellreq">802.11g OFDM <?=gettext("Protection Mode"); ?></td>
2269 30ade846 gnhb
							<td class="vtable">
2270
								<select name="protmode" class="formselect" id="protmode">
2271 339d2743 Colin Fleming
									<option <?php if ($pconfig['protmode'] == 'off') echo "selected=\"selected\"";?> value="off"><?=gettext("Protection mode off"); ?></option>
2272
									<option <?php if ($pconfig['protmode'] == 'cts') echo "selected=\"selected\"";?> value="cts"><?=gettext("Protection mode CTS to self"); ?></option>
2273
									<option <?php if ($pconfig['protmode'] == 'rtscts') echo "selected=\"selected\"";?> value="rtscts"><?=gettext("Protection mode RTS and CTS"); ?></option>
2274 30ade846 gnhb
								</select>
2275
								<br/>
2276 933ea015 Carlos Eduardo Ramos
								<?=gettext("For IEEE 802.11g, use the specified technique for protecting OFDM frames in a mixed 11b/11g network."); ?>
2277 30ade846 gnhb
								<br/>
2278
							</td>
2279
						</tr>
2280
						<?php else: ?>
2281 2cbe4b47 Colin Fleming
						<input name="protmode" type="hidden" id="protmode" value="off" />
2282 30ade846 gnhb
						<?php endif; ?>
2283
						<tr>
2284 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncellreq"><?=gettext("Transmit power"); ?></td>
2285 30ade846 gnhb
							<td class="vtable">
2286
								<select name="txpower" class="formselect" id="txpower">
2287
									<?
2288
									for($x = 99; $x > 0; $x--) {
2289
										if($pconfig["txpower"] == $x)
2290 339d2743 Colin Fleming
											$SELECTED = " selected=\"selected\"";
2291 30ade846 gnhb
										else
2292
											$SELECTED = "";
2293
										echo "<option {$SELECTED}>{$x}</option>\n";
2294
									}
2295
									?>
2296
								</select><br/>
2297 3b7f0f53 Erik Fonnesbeck
								<?=gettext("Note: Typically only a few discreet power settings are available and the driver will use the setting closest to the specified value.  Not all adapters support changing the transmit power setting."); ?>
2298 9978e156 gnhb
							</td>
2299
						</tr>
2300
						<tr>
2301 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncellreq"><?=gettext("Channel"); ?></td>
2302 30ade846 gnhb
							<td class="vtable">
2303
								<select name="channel" class="formselect" id="channel">
2304 339d2743 Colin Fleming
									<option <?php if ($pconfig['channel'] == 0) echo "selected=\"selected\""; ?> value="0"><?=gettext("Auto"); ?></option>
2305 9978e156 gnhb
									<?php
2306 30ade846 gnhb
									foreach($wl_modes as $wl_standard => $wl_channels) {
2307
										if($wl_standard == "11g") { $wl_standard = "11b/g"; }
2308
										else if($wl_standard == "11ng") { $wl_standard = "11b/g/n"; }
2309
										else if($wl_standard == "11na") { $wl_standard = "11a/n"; }
2310
										foreach($wl_channels as $wl_channel) {
2311
											echo "<option ";
2312
											if ($pconfig['channel'] == "$wl_channel") {
2313 339d2743 Colin Fleming
												echo "selected=\"selected\" ";
2314 30ade846 gnhb
											}
2315
											echo "value=\"$wl_channel\">$wl_standard - $wl_channel";
2316
											if(isset($wl_chaninfo[$wl_channel]))
2317
												echo " ({$wl_chaninfo[$wl_channel][1]} @ {$wl_chaninfo[$wl_channel][2]} / {$wl_chaninfo[$wl_channel][3]})";
2318
											echo "</option>\n";
2319 d85ba87f gnhb
										}
2320 9978e156 gnhb
									}
2321
									?>
2322
								</select>
2323 30ade846 gnhb
								<br/>
2324 136c598d Carlos Eduardo Ramos
								<?=gettext("Legend: wireless standards - channel # (frequency @ max TX power / TX power allowed in reg. domain)"); ?>
2325 30ade846 gnhb
								<br/>
2326 933ea015 Carlos Eduardo Ramos
								<?=gettext("Note: Not all channels may be supported by your card.  Auto may override the wireless standard selected above."); ?>
2327 9978e156 gnhb
							</td>
2328
						</tr>
2329 537bf7b3 Erik Fonnesbeck
						<?php if (isset($wl_sysctl["{$wl_sysctl_prefix}.diversity"]) || isset($wl_sysctl["{$wl_sysctl_prefix}.txantenna"]) || isset($wl_sysctl["{$wl_sysctl_prefix}.rxantenna"])): ?>
2330
						<tr>
2331
							<td valign="top" class="vncell"><?=gettext("Antenna settings"); ?></td>
2332
							<td class="vtable">
2333 168549b9 Colin Fleming
								<table border="0" cellpadding="0" cellspacing="0" summary="antenna settings">
2334 537bf7b3 Erik Fonnesbeck
									<tr>
2335
										<?php if (isset($wl_sysctl["{$wl_sysctl_prefix}.diversity"])): ?>
2336
										<td>
2337
											<?=gettext("Diversity"); ?><br/>
2338
											<select name="diversity" class="formselect" id="diversity">
2339 339d2743 Colin Fleming
												<option <?php if (!isset($pconfig['diversity'])) echo "selected=\"selected\""; ?> value=""><?=gettext("Default"); ?></option>
2340
												<option <?php if ($pconfig['diversity'] === '0') echo "selected=\"selected\""; ?> value="0"><?=gettext("Off"); ?></option>
2341
												<option <?php if ($pconfig['diversity'] === '1') echo "selected=\"selected\""; ?> value="1"><?=gettext("On"); ?></option>
2342 537bf7b3 Erik Fonnesbeck
											</select>
2343
										</td>
2344
										<td>&nbsp;&nbsp</td>
2345
										<?php endif; ?>
2346
										<?php if (isset($wl_sysctl["{$wl_sysctl_prefix}.txantenna"])): ?>
2347
										<td>
2348
											<?=gettext("Transmit antenna"); ?><br/>
2349
											<select name="txantenna" class="formselect" id="txantenna">
2350 339d2743 Colin Fleming
												<option <?php if (!isset($pconfig['txantenna'])) echo "selected=\"selected\""; ?> value=""><?=gettext("Default"); ?></option>
2351
												<option <?php if ($pconfig['txantenna'] === '0') echo "selected=\"selected\""; ?> value="0"><?=gettext("Auto"); ?></option>
2352
												<option <?php if ($pconfig['txantenna'] === '1') echo "selected=\"selected\""; ?> value="1"><?=gettext("#1"); ?></option>
2353
												<option <?php if ($pconfig['txantenna'] === '2') echo "selected=\"selected\""; ?> value="2"><?=gettext("#2"); ?></option>
2354 537bf7b3 Erik Fonnesbeck
											</select>
2355
										</td>
2356
										<td>&nbsp;&nbsp</td>
2357
										<?php endif; ?>
2358
										<?php if (isset($wl_sysctl["{$wl_sysctl_prefix}.rxantenna"])): ?>
2359
										<td>
2360
											<?=gettext("Receive antenna"); ?><br/>
2361
											<select name="rxantenna" class="formselect" id="rxantenna">
2362 339d2743 Colin Fleming
												<option <?php if (!isset($pconfig['rxantenna'])) echo "selected=\"selected\""; ?> value=""><?=gettext("Default"); ?></option>
2363
												<option <?php if ($pconfig['rxantenna'] === '0') echo "selected=\"selected\""; ?> value="0"><?=gettext("Auto"); ?></option>
2364
												<option <?php if ($pconfig['rxantenna'] === '1') echo "selected=\"selected\""; ?> value="1"><?=gettext("#1"); ?></option>
2365
												<option <?php if ($pconfig['rxantenna'] === '2') echo "selected=\"selected\""; ?> value="2"><?=gettext("#2"); ?></option>
2366 537bf7b3 Erik Fonnesbeck
											</select>
2367
										</td>
2368
										<?php endif; ?>
2369
									</tr>
2370
								</table>
2371
								<br/>
2372
								<?=gettext("Note: The antenna numbers do not always match up with the labels on the card."); ?>
2373
							</td>
2374
						</tr>
2375
						<?php endif; ?>
2376 6681fdd3 Erik Fonnesbeck
						<?php if (isset($wl_sysctl["{$wl_sysctl_prefix}.slottime"]) && isset($wl_sysctl["{$wl_sysctl_prefix}.acktimeout"]) && isset($wl_sysctl["{$wl_sysctl_prefix}.ctstimeout"])): ?>
2377 9978e156 gnhb
						<tr>
2378 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("Distance setting"); ?></td>
2379 30ade846 gnhb
							<td class="vtable">
2380 2cbe4b47 Colin Fleming
								<input name="distance" type="text" class="formfld unknown" id="distance" size="5" value="<?=htmlspecialchars($pconfig['distance']);?>" />
2381 30ade846 gnhb
								<br/>
2382 136c598d Carlos Eduardo Ramos
								<?=gettext("Note: This field can be used to tune ACK/CTS timers to fit the distance between AP and Client"); ?><br/>
2383
								<?=gettext("(measured in Meters and works only for Atheros based cards !)"); ?>
2384 30ade846 gnhb
							</td>
2385 9978e156 gnhb
						</tr>
2386 6681fdd3 Erik Fonnesbeck
						<?php endif; ?>
2387 9978e156 gnhb
						<tr>
2388 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("Regulatory settings"); ?></td>
2389 30ade846 gnhb
							<td class="vtable">
2390 136c598d Carlos Eduardo Ramos
								<?=gettext("Regulatory domain"); ?><br/>
2391 30ade846 gnhb
								<select name="regdomain" class="formselect" id="regdomain">
2392 339d2743 Colin Fleming
									<option <?php if (empty($pconfig['regdomain'])) echo "selected=\"selected\""; ?> value=""><?=gettext("Default"); ?></option>
2393 30ade846 gnhb
									<?php
2394
									foreach($wl_regdomains as $wl_regdomain_key => $wl_regdomain) {
2395
										echo "<option ";
2396
										if ($pconfig['regdomain'] == $wl_regdomains_attr[$wl_regdomain_key]['ID']) {
2397 339d2743 Colin Fleming
											echo "selected=\"selected\" ";
2398 30ade846 gnhb
										}
2399
										echo "value=\"{$wl_regdomains_attr[$wl_regdomain_key]['ID']}\">{$wl_regdomain['name']}</option>\n";
2400
									}
2401
									?>
2402
								</select>
2403
								<br/>
2404 933ea015 Carlos Eduardo Ramos
								<?=gettext("Note: Some cards have a default that is not recognized and require changing the regulatory domain to one in this list for the changes to other regulatory settings to work."); ?>
2405 30ade846 gnhb
								<br/><br/>
2406 136c598d Carlos Eduardo Ramos
								<?=gettext("Country (listed with country code and regulatory domain)"); ?><br/>
2407 30ade846 gnhb
								<select name="regcountry" class="formselect" id="regcountry">
2408 339d2743 Colin Fleming
									<option <?php if (empty($pconfig['regcountry'])) echo "selected=\"selected\""; ?> value=""><?=gettext("Default"); ?></option>
2409 30ade846 gnhb
									<?php
2410
									foreach($wl_countries as $wl_country_key => $wl_country) {
2411
										echo "<option ";
2412
										if ($pconfig['regcountry'] == $wl_countries_attr[$wl_country_key]['ID']) {
2413 339d2743 Colin Fleming
											echo "selected=\"selected\" ";
2414 30ade846 gnhb
										}
2415
										echo "value=\"{$wl_countries_attr[$wl_country_key]['ID']}\">{$wl_country['name']} -- ({$wl_countries_attr[$wl_country_key]['ID']}, " . strtoupper($wl_countries_attr[$wl_country_key]['rd'][0]['REF']) . ")</option>\n";
2416
									}
2417
									?>
2418
								</select>
2419
								<br/>
2420 136c598d Carlos Eduardo Ramos
								<?=gettext("Note: Any country setting other than \"Default\" will override the regulatory domain setting"); ?>.
2421 30ade846 gnhb
								<br/><br/>
2422 136c598d Carlos Eduardo Ramos
								<?=gettext("Location"); ?><br/>
2423 30ade846 gnhb
								<select name="reglocation" class="formselect" id="reglocation">
2424 339d2743 Colin Fleming
									<option <?php if (empty($pconfig['reglocation'])) echo "selected=\"selected\""; ?> value=""><?=gettext("Default"); ?></option>
2425
									<option <?php if ($pconfig['reglocation'] == 'indoor') echo "selected=\"selected\""; ?> value="indoor"><?=gettext("Indoor"); ?></option>
2426
									<option <?php if ($pconfig['reglocation'] == 'outdoor') echo "selected=\"selected\""; ?> value="outdoor"><?=gettext("Outdoor"); ?></option>
2427
									<option <?php if ($pconfig['reglocation'] == 'anywhere') echo "selected=\"selected\""; ?> value="anywhere"><?=gettext("Anywhere"); ?></option>
2428 30ade846 gnhb
								</select>
2429
								<br/><br/>
2430 933ea015 Carlos Eduardo Ramos
								<?=gettext("These settings may affect which channels are available and the maximum transmit power allowed on those channels.  Using the correct settings to comply with local regulatory requirements is recommended."); ?>
2431 30ade846 gnhb
								<br/>
2432 933ea015 Carlos Eduardo Ramos
								<?=gettext("Note: All wireless networks on this interface will be temporarily brought down when changing regulatory settings.  Some of the regulatory domains or country codes may not be allowed by some cards.  These settings may not be able to add additional channels that are not already supported."); ?>
2433 9978e156 gnhb
							</td>
2434
						</tr>
2435
						<tr>
2436 30ade846 gnhb
							<td colspan="2" valign="top" height="16"></td>
2437 c0948c6c Renato Botelho
						</tr>
2438 30ade846 gnhb
						<tr>
2439 4256d115 Renato Botelho
							<td colspan="2" valign="top" class="listtopic"><?=gettext("Network-specific wireless configuration");?></td>
2440 30ade846 gnhb
						</tr>
2441
						<tr>
2442 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncellreq"><?=gettext("Mode"); ?></td>
2443 30ade846 gnhb
							<td class="vtable">
2444
								<select name="mode" class="formselect" id="mode">
2445 339d2743 Colin Fleming
									<option <?php if ($pconfig['mode'] == 'bss') echo "selected=\"selected\"";?> value="bss"><?=gettext("Infrastructure (BSS)"); ?></option>
2446
									<option <?php if ($pconfig['mode'] == 'adhoc') echo "selected=\"selected\"";?> value="adhoc"><?=gettext("Ad-hoc (IBSS)"); ?></option>
2447
									<option <?php if ($pconfig['mode'] == 'hostap') echo "selected=\"selected\"";?> value="hostap"><?=gettext("Access Point"); ?></option>
2448 30ade846 gnhb
								</select>
2449 9978e156 gnhb
							</td>
2450
						</tr>
2451
						<tr>
2452 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncellreq"><?=gettext("SSID"); ?></td>
2453 30ade846 gnhb
							<td class="vtable">
2454 2cbe4b47 Colin Fleming
								<input name="ssid" type="text" class="formfld unknown" id="ssid" size="20" value="<?=htmlspecialchars($pconfig['ssid']); ?>" />
2455 cb3c3fe4 Namezero
								<br/>
2456
								<?=gettext("Note: Only required in Access Point mode. If left blank in Ad-hoc or Infrastructure mode, this interface will connect to any available SSID"); ?>
2457 9978e156 gnhb
							</td>
2458
						</tr>
2459 30ade846 gnhb
						<?php if (isset($wl_modes['11ng']) || isset($wl_modes['11na'])): ?>
2460 9978e156 gnhb
						<tr>
2461 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("Minimum wireless standard"); ?></td>
2462 30ade846 gnhb
							<td class="vtable">
2463
								<select name="puremode" class="formselect" id="puremode">
2464 339d2743 Colin Fleming
									<option <?php if ($pconfig['puremode'] == 'any') echo "selected=\"selected\"";?> value="any"><?=gettext("Any"); ?></option>
2465 30ade846 gnhb
									<?php if (isset($wl_modes['11g'])): ?>
2466 339d2743 Colin Fleming
									<option <?php if ($pconfig['puremode'] == '11g') echo "selected=\"selected\"";?> value="11g"><?=gettext("802.11g"); ?></option>
2467 30ade846 gnhb
									<?php endif; ?>
2468 339d2743 Colin Fleming
									<option <?php if ($pconfig['puremode'] == '11n') echo "selected=\"selected\"";?> value="11n"><?=gettext("802.11n"); ?></option>
2469 30ade846 gnhb
								</select>
2470
								<br/>
2471 933ea015 Carlos Eduardo Ramos
								<?=gettext("When operating as an access point, allow only stations capable of the selected wireless standard to associate (stations not capable are not permitted to associate)."); ?>
2472 9978e156 gnhb
							</td>
2473
						</tr>
2474 30ade846 gnhb
						<?php elseif (isset($wl_modes['11g'])): ?>
2475 9978e156 gnhb
						<tr>
2476 933ea015 Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("802.11g only"); ?></td>
2477 30ade846 gnhb
							<td class="vtable">
2478 339d2743 Colin Fleming
								<input name="puremode" type="checkbox" value="11g"  class="formfld" id="puremode" <?php if ($pconfig['puremode'] == '11g') echo "checked=\"checked\"";?> />
2479 933ea015 Carlos Eduardo Ramos
								<br/><?=gettext("When operating as an access point in 802.11g mode, allow only 11g-capable stations to associate (11b-only stations are not permitted to associate)."); ?>
2480 9978e156 gnhb
							</td>
2481
						</tr>
2482 30ade846 gnhb
						<?php endif; ?>
2483 9978e156 gnhb
						<tr>
2484 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("Allow intra-BSS communication"); ?></td>
2485 30ade846 gnhb
							<td class="vtable">
2486 339d2743 Colin Fleming
								<input name="apbridge_enable" type="checkbox" value="yes"  class="formfld" id="apbridge_enable" <?php if ($pconfig['apbridge_enable']) echo "checked=\"checked\"";?> />
2487 30ade846 gnhb
								<br/>
2488 933ea015 Carlos Eduardo Ramos
								<?=gettext("When operating as an access point, enable this if you want to pass packets between wireless clients directly."); ?>
2489 30ade846 gnhb
								<br/>
2490 933ea015 Carlos Eduardo Ramos
								<?=gettext("Disabling the internal bridging is useful when traffic is to be processed with packet filtering."); ?>
2491 30ade846 gnhb
							</td>
2492
						</tr>
2493
						<tr>
2494 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("Enable WME"); ?></td>
2495 30ade846 gnhb
							<td class="vtable">
2496 339d2743 Colin Fleming
								<input name="wme_enable" type="checkbox" class="formfld" id="wme_enable" value="yes" <?php if ($pconfig['wme_enable']) echo "checked=\"checked\"";?> />
2497 933ea015 Carlos Eduardo Ramos
								<br/><?=gettext("Setting this option will force the card to use WME (wireless QoS)."); ?>
2498 30ade846 gnhb
							</td>
2499
						</tr>
2500
						<tr>
2501 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("Enable Hide SSID"); ?></td>
2502 30ade846 gnhb
							<td class="vtable">
2503 339d2743 Colin Fleming
								<input name="hidessid_enable" type="checkbox" class="formfld" id="hidessid_enable" value="yes" <?php if ($pconfig['hidessid_enable']) echo "checked=\"checked\"";?> />
2504 30ade846 gnhb
								<br/>
2505 136c598d Carlos Eduardo Ramos
								<?=gettext("Setting this option will force the card to NOT broadcast its SSID"); ?>
2506 30ade846 gnhb
								<br/>
2507 933ea015 Carlos Eduardo Ramos
								<?=gettext("(this might create problems for some clients)."); ?>
2508 30ade846 gnhb
							</td>
2509
						</tr>
2510
						<tr>
2511 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("WEP"); ?></td>
2512 c0948c6c Renato Botelho
							<td class="vtable">
2513 339d2743 Colin Fleming
								<input name="wep_enable" type="checkbox" id="wep_enable" value="yes" <?php if ($pconfig['wep_enable']) echo "checked=\"checked\""; ?> />
2514 136c598d Carlos Eduardo Ramos
								<strong><?=gettext("Enable WEP"); ?></strong>
2515 168549b9 Colin Fleming
								<table border="0" cellspacing="0" cellpadding="0" summary="wep">
2516 9978e156 gnhb
									<tr>
2517 30ade846 gnhb
										<td>&nbsp;</td>
2518
										<td>&nbsp;</td>
2519 136c598d Carlos Eduardo Ramos
										<td>&nbsp;<?=gettext("TX key"); ?>&nbsp;</td>
2520 30ade846 gnhb
									</tr>
2521
									<tr>
2522 933ea015 Carlos Eduardo Ramos
										<td><?=gettext("Key 1:"); ?>&nbsp;&nbsp;</td>
2523 30ade846 gnhb
										<td>
2524 2cbe4b47 Colin Fleming
											<input name="key1" type="text" class="formfld unknown" id="key1" size="30" value="<?=htmlspecialchars($pconfig['key1']);?>" />
2525 30ade846 gnhb
										</td>
2526
										<td align="center">
2527 339d2743 Colin Fleming
											<input name="txkey" type="radio" value="1" <?php if ($pconfig['txkey'] == 1) echo "checked=\"checked\"";?>>
2528 30ade846 gnhb
										</td>
2529
									</tr>
2530
									<tr>
2531 933ea015 Carlos Eduardo Ramos
										<td><?=gettext("Key 2:"); ?>&nbsp;&nbsp;</td>
2532 30ade846 gnhb
										<td>
2533 2cbe4b47 Colin Fleming
											<input name="key2" type="text" class="formfld unknown" id="key2" size="30" value="<?=htmlspecialchars($pconfig['key2']);?>" />
2534 30ade846 gnhb
										</td>
2535
										<td align="center">
2536 339d2743 Colin Fleming
											<input name="txkey" type="radio" value="2" <?php if ($pconfig['txkey'] == 2) echo "checked=\"checked\"";?> />
2537 30ade846 gnhb
										</td>
2538
									</tr>
2539
									<tr>
2540 933ea015 Carlos Eduardo Ramos
										<td><?=gettext("Key 3:"); ?>&nbsp;&nbsp;</td>
2541 30ade846 gnhb
										<td>
2542 2cbe4b47 Colin Fleming
											<input name="key3" type="text" class="formfld unknown" id="key3" size="30" value="<?=htmlspecialchars($pconfig['key3']);?>" />
2543 30ade846 gnhb
										</td>
2544
										<td align="center">
2545 339d2743 Colin Fleming
											<input name="txkey" type="radio" value="3" <?php if ($pconfig['txkey'] == 3) echo "checked=\"checked\"";?> />
2546 30ade846 gnhb
										</td>
2547
									</tr>
2548
									<tr>
2549 933ea015 Carlos Eduardo Ramos
										<td><?=gettext("Key 4:"); ?>&nbsp;&nbsp;</td>
2550 30ade846 gnhb
										<td>
2551 2cbe4b47 Colin Fleming
											<input name="key4" type="text" class="formfld unknown" id="key4" size="30" value="<?=htmlspecialchars($pconfig['key4']);?>" />
2552 30ade846 gnhb
										</td>
2553
										<td align="center">
2554 339d2743 Colin Fleming
											<input name="txkey" type="radio" value="4" <?php if ($pconfig['txkey'] == 4) echo "checked=\"checked\"";?> />
2555 9978e156 gnhb
										</td>
2556
									</tr>
2557
								</table>
2558 30ade846 gnhb
								<br/>
2559 933ea015 Carlos Eduardo Ramos
								<?=gettext("40 (64) bit keys may be entered as 5 ASCII characters or 10 hex digits preceded by '0x'."); ?><br/>
2560
								<?=gettext("104 (128) bit keys may be entered as 13 ASCII characters or 26 hex digits preceded by '0x'."); ?>
2561 9978e156 gnhb
							</td>
2562
						</tr>
2563
						<tr>
2564 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("WPA"); ?></td>
2565 30ade846 gnhb
							<td class="vtable">
2566 339d2743 Colin Fleming
								<input name="wpa_enable" type="checkbox" class="formfld" id="wpa_enable" value="yes" <?php if ($pconfig['wpa_enable']) echo "checked=\"checked\""; ?> />
2567 136c598d Carlos Eduardo Ramos
								<strong><?=gettext("Enable WPA"); ?></strong>
2568 30ade846 gnhb
								<br/><br/>
2569 168549b9 Colin Fleming
								<table border="0" cellspacing="0" cellpadding="0" summary="wpa">
2570 30ade846 gnhb
									<tr>
2571
										<td>&nbsp;</td>
2572 2a2b247b jim-p
										<td>&nbsp;<?=gettext("WPA Pre-Shared Key"); ?>&nbsp;</td>
2573 30ade846 gnhb
									</tr>
2574
									<tr>
2575 933ea015 Carlos Eduardo Ramos
										<td><?=gettext("PSK:"); ?>&nbsp;&nbsp;</td>
2576 30ade846 gnhb
										<td>
2577 2cbe4b47 Colin Fleming
											<input name="passphrase" type="text" class="formfld unknown" id="passphrase" size="66" value="<?=htmlspecialchars($pconfig['passphrase']);?>" />
2578 30ade846 gnhb
										</td>
2579
									</tr>
2580
								</table>
2581 933ea015 Carlos Eduardo Ramos
								<br/><?=gettext("Passphrase must be from 8 to 63 characters."); ?>
2582 30ade846 gnhb
							</td>
2583 9978e156 gnhb
						</tr>
2584
						<tr>
2585 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("WPA Mode"); ?></td>
2586 30ade846 gnhb
							<td class="vtable">
2587
								<select name="wpa_mode" class="formselect" id="wpa_mode">
2588 339d2743 Colin Fleming
									<option <?php if ($pconfig['wpa_mode'] == '1') echo "selected=\"selected\"";?> value="1"><?=gettext("WPA"); ?></option>
2589
									<option <?php if ($pconfig['wpa_mode'] == '2') echo "selected=\"selected\"";?> value="2"><?=gettext("WPA2"); ?></option>
2590
									<option <?php if ($pconfig['wpa_mode'] == '3') echo "selected=\"selected\"";?> value="3"><?=gettext("Both"); ?></option>
2591 30ade846 gnhb
								</select>
2592 9978e156 gnhb
							</td>
2593
						</tr>
2594
						<tr>
2595 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("WPA Key Management Mode"); ?></td>
2596 c0948c6c Renato Botelho
							<td class="vtable">
2597 30ade846 gnhb
								<select name="wpa_key_mgmt" class="formselect" id="wpa_key_mgmt">
2598 339d2743 Colin Fleming
									<option <?php if ($pconfig['wpa_key_mgmt'] == 'WPA-PSK') echo "selected=\"selected\"";?> value="WPA-PSK"><?=gettext("Pre-Shared Key"); ?></option>
2599
									<option <?php if ($pconfig['wpa_key_mgmt'] == 'WPA-EAP') echo "selected=\"selected\"";?> value="WPA-EAP"><?=gettext("Extensible Authentication Protocol"); ?></option>
2600
									<option <?php if ($pconfig['wpa_key_mgmt'] == 'WPA-PSK WPA-EAP') echo "selected=\"selected\"";?> value="WPA-PSK WPA-EAP"><?=gettext("Both"); ?></option>
2601 30ade846 gnhb
								</select>
2602 9978e156 gnhb
							</td>
2603
						</tr>
2604
						<tr>
2605 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("Authentication"); ?></td>
2606 30ade846 gnhb
							<td class="vtable">
2607
								<select name="auth_algs" class="formselect" id="auth_algs">
2608 339d2743 Colin Fleming
									<option <?php if ($pconfig['auth_algs'] == '1') echo "selected=\"selected\"";?> value="1"><?=gettext("Open System Authentication"); ?></option>
2609
									<option <?php if ($pconfig['auth_algs'] == '2') echo "selected=\"selected\"";?> value="2"><?=gettext("Shared Key Authentication"); ?></option>
2610
									<option <?php if ($pconfig['auth_algs'] == '3') echo "selected=\"selected\"";?> value="3"><?=gettext("Both"); ?></option>
2611 9978e156 gnhb
								</select>
2612 933ea015 Carlos Eduardo Ramos
								<br/><?=gettext("Note: Shared Key Authentication requires WEP."); ?></br>
2613 9978e156 gnhb
							</td>
2614
						</tr>
2615
						<tr>
2616 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("WPA Pairwise"); ?></td>
2617 30ade846 gnhb
							<td class="vtable">
2618
								<select name="wpa_pairwise" class="formselect" id="wpa_pairwise">
2619 339d2743 Colin Fleming
									<option <?php if ($pconfig['wpa_pairwise'] == 'CCMP TKIP') echo "selected=\"selected\"";?> value="CCMP TKIP"><?=gettext("Both"); ?></option>
2620
									<option <?php if ($pconfig['wpa_pairwise'] == 'CCMP') echo "selected=\"selected\"";?> value="CCMP"><?=gettext("AES (recommended)"); ?></option>
2621
									<option <?php if ($pconfig['wpa_pairwise'] == 'TKIP') echo "selected=\"selected\"";?> value="TKIP"><?=gettext("TKIP"); ?></option>
2622 30ade846 gnhb
								</select>
2623 9978e156 gnhb
							</td>
2624
						</tr>
2625
						<tr>
2626 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("Key Rotation"); ?></td>
2627 30ade846 gnhb
							<td class="vtable">
2628 2cbe4b47 Colin Fleming
								<input name="wpa_group_rekey" type="text" class="formfld unknown" id="wpa_group_rekey" size="30" value="<?php echo $pconfig['wpa_group_rekey'] ? $pconfig['wpa_group_rekey'] : "60";?>" />
2629 933ea015 Carlos Eduardo Ramos
								<br/><?=gettext("Allowed values are 1-9999 but should not be longer than Master Key Regeneration time."); ?>
2630 9978e156 gnhb
							</td>
2631
						</tr>
2632
						<tr>
2633 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("Master Key Regeneration"); ?></td>
2634 30ade846 gnhb
							<td class="vtable">
2635 2cbe4b47 Colin Fleming
								<input name="wpa_gmk_rekey" type="text" class="formfld" id="wpa_gmk_rekey" size="30" value="<?php echo $pconfig['wpa_gmk_rekey'] ? $pconfig['wpa_gmk_rekey'] : "3600";?>" />
2636 933ea015 Carlos Eduardo Ramos
								<br/><?=gettext("Allowed values are 1-9999 but should not be shorter than Key Rotation time."); ?>
2637 9978e156 gnhb
							</td>
2638
						</tr>
2639
						<tr>
2640 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("Strict Key Regeneration"); ?></td>
2641 30ade846 gnhb
							<td class="vtable">
2642 339d2743 Colin Fleming
								<input name="wpa_strict_rekey" type="checkbox" value="yes"  class="formfld" id="wpa_strict_rekey" <?php if ($pconfig['wpa_strict_rekey']) echo "checked=\"checked\""; ?> />
2643 933ea015 Carlos Eduardo Ramos
								<br/><?=gettext("Setting this option will force the AP to rekey whenever a client disassociates."); ?>
2644 30ade846 gnhb
							</td>
2645 9978e156 gnhb
						</tr>
2646
						<tr>
2647 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("Enable IEEE802.1X Authentication"); ?></td>
2648 30ade846 gnhb
							<td class="vtable">
2649 339d2743 Colin Fleming
								<input name="ieee8021x" type="checkbox" value="yes"  class="formfld" id="ieee8021x" <?php if ($pconfig['ieee8021x']) echo "checked=\"checked\"";?> />
2650 933ea015 Carlos Eduardo Ramos
								<br/><?=gettext("Setting this option will enable 802.1x authentication."); ?>
2651 10e4d55e Pierre POMES
								<br/><span class="red"><strong><?=gettext("NOTE"); ?>:</strong></span> <?=gettext("this option requires checking the \"Enable WPA box\"."); ?>
2652 9978e156 gnhb
							</td>
2653
						</tr>
2654
						<tr>
2655 136c598d Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("802.1X Authentication Server IP Address"); ?></td>
2656 30ade846 gnhb
							<td class="vtable">
2657 2cbe4b47 Colin Fleming
								<input name="auth_server_addr" id="auth_server_addr" type="text" class="formfld unknown" size="66" value="<?=htmlspecialchars($pconfig['auth_server_addr']);?>" />
2658 136c598d Carlos Eduardo Ramos
								<br/><?=gettext("Enter the IP address of the 802.1X Authentication Server.  This is commonly a Radius server (FreeRadius, Internet Authentication Services, etc.)"); ?>
2659 9978e156 gnhb
							</td>
2660
						</tr>
2661
						<tr>
2662 933ea015 Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("802.1X Authentication Server Port"); ?></td>
2663 30ade846 gnhb
							<td class="vtable">
2664 2cbe4b47 Colin Fleming
								<input name="auth_server_port" id="auth_server_port" type="text" class="formfld unknown" size="66" value="<?=htmlspecialchars($pconfig['auth_server_port']);?>" />
2665 933ea015 Carlos Eduardo Ramos
								<br/><?=gettext("Leave blank for the default 1812 port."); ?>
2666 9978e156 gnhb
							</td>
2667
						</tr>
2668
						<tr>
2669 933ea015 Carlos Eduardo Ramos
							<td valign="top" class="vncell"><?=gettext("802.1X Authentication Server Shared Secret"); ?></td>
2670 30ade846 gnhb
							<td class="vtable">
2671 2cbe4b47 Colin Fleming
								<input name="auth_server_shared_secret" id="auth_server_shared_secret" type="text" class="formfld unknown" size="66" value="<?=htmlspecialchars($pconfig['auth_server_shared_secret']);?>" />
2672 30ade846 gnhb
								<br/>
2673 9978e156 gnhb
							</td>
2674 30ade846 gnhb
						</tr>
2675 32764288 Namezero
						<tr>
2676
					<td valign="top" class="vncell"><?=gettext("Secondary 802.1X Authentication Server IP Address"); ?></td>
2677
							<td class="vtable">
2678 2cbe4b47 Colin Fleming
								<input name="auth_server_addr2" id="auth_server_addr2" type="text" class="formfld unknown" size="66" value="<?=htmlspecialchars($pconfig['auth_server_addr2']);?>" />
2679 32764288 Namezero
								<br/><?=gettext("Enter the IP address of the 802.1X Authentication Server.  This is commonly a Radius server (FreeRadius, Internet Authentication Services, etc.)"); ?>
2680
							</td>
2681
						</tr>
2682
						<tr>
2683
							<td valign="top" class="vncell"><?=gettext("Secondary 802.1X Authentication Server Port"); ?></td>
2684
							<td class="vtable">
2685 2cbe4b47 Colin Fleming
								<input name="auth_server_port2" id="auth_server_port2" type="text" class="formfld unknown" size="66" value="<?=htmlspecialchars($pconfig['auth_server_port2']);?>" />
2686 32764288 Namezero
								<br/><?=gettext("Leave blank for the default 1812 port."); ?>
2687
							</td>
2688
						</tr>
2689
						<tr>
2690
							<td valign="top" class="vncell"><?=gettext("Secondary 802.1X Authentication Server Shared Secret"); ?></td>
2691
							<td class="vtable">
2692 2cbe4b47 Colin Fleming
								<input name="auth_server_shared_secret2" id="auth_server_shared_secret2" type="text" class="formfld unknown" size="66" value="<?=htmlspecialchars($pconfig['auth_server_shared_secret2']);?>" />
2693 32764288 Namezero
								<br/>
2694
							</td>
2695
						</tr>
2696 c9e7d30d Scott Ullrich
						<tr>
2697
							<td valign="top" class="vncell">802.1X <?=gettext("Authentication Roaming Preauth"); ?></td>
2698
							<td class="vtable">
2699 339d2743 Colin Fleming
								<input name="rsn_preauth" id="rsn_preauth" type="checkbox" class="formfld unknown" size="66" value="yes" <?php if ($pconfig['rsn_preauth']) echo "checked=\"checked\""; ?> />
2700 c9e7d30d Scott Ullrich
								<br/>
2701
							</td>
2702
						</tr>
2703 30ade846 gnhb
						<tr>
2704
							<td colspan="2" valign="top" height="16"></td>
2705
						</tr>
2706 a236affe N0YB
						<?php endif; ?>
2707 30ade846 gnhb
						<tr>
2708 136c598d Carlos Eduardo Ramos
							<td colspan="2" valign="top" class="listtopic"><?=gettext("Private networks"); ?></td>
2709 30ade846 gnhb
						</tr>
2710
						<tr>
2711
							<td valign="middle" class="vncell">&nbsp;</td>
2712
							<td class="vtable">
2713 c0948c6c Renato Botelho
								<a name="rfc1918"></a>
2714 339d2743 Colin Fleming
								<input name="blockpriv" type="checkbox" id="blockpriv" value="yes" <?php if ($pconfig['blockpriv']) echo "checked=\"checked\""; ?> />
2715 32b91bcf Colin Fleming
								<strong><?=gettext("Block private networks"); ?></strong><br/>
2716 136c598d Carlos Eduardo Ramos
								<?=gettext("When set, this option blocks traffic from IP addresses that are reserved " .
2717
								"for private  networks as per RFC 1918 (10/8, 172.16/12, 192.168/16) as"); ?>
2718 933ea015 Carlos Eduardo Ramos
								<?=gettext("well as loopback addresses (127/8)."); ?>&nbsp;&nbsp; <?=gettext("You should generally " .
2719 136c598d Carlos Eduardo Ramos
								"leave this option turned on, unless your WAN network lies in such " .
2720 c0948c6c Renato Botelho
								"a private address space, too."); ?>
2721 9978e156 gnhb
							</td>
2722
						</tr>
2723
						<tr>
2724 30ade846 gnhb
							<td valign="middle" class="vncell">&nbsp;</td>
2725 c0948c6c Renato Botelho
							<td class="vtable">
2726 339d2743 Colin Fleming
								<input name="blockbogons" type="checkbox" id="blockbogons" value="yes" <?php if ($pconfig['blockbogons']) echo "checked=\"checked\""; ?> />
2727 32b91bcf Colin Fleming
								<strong><?=gettext("Block bogon networks"); ?></strong><br/>
2728 136c598d Carlos Eduardo Ramos
								<?=gettext("When set, this option blocks traffic from IP addresses that are reserved " .
2729 933ea015 Carlos Eduardo Ramos
								"(but not RFC 1918) or not yet assigned by IANA."); ?>&nbsp;&nbsp;
2730 136c598d Carlos Eduardo Ramos
								<?=gettext("Bogons are prefixes that should never appear in the Internet routing table, " .
2731 933ea015 Carlos Eduardo Ramos
								"and obviously should not appear as the source address in any packets you receive."); ?>
2732 6b4480dc bcyrill
								<br/><br/>
2733
								<?=gettext("Note: The update frequency can be changed under System->Advanced Firewall/NAT settings.")?>
2734 30ade846 gnhb
							</td>
2735 9978e156 gnhb
						</tr>
2736 1600b1af Scott Ullrich
					</table> <!-- End "allcfg" table -->
2737
					</div> <!-- End "allcfg" div -->
2738
2739 168549b9 Colin Fleming
					<table width="100%" border="0" cellpadding="6" cellspacing="0" summary="buttons">
2740 9978e156 gnhb
						<tr>
2741 7b8db0c3 Erik Fonnesbeck
							<td width="22%" valign="top">
2742 30ade846 gnhb
								&nbsp;
2743
							</td>
2744 7b8db0c3 Erik Fonnesbeck
							<td width="78%">
2745 30ade846 gnhb
								<br/>
2746 2cbe4b47 Colin Fleming
								<input id="save" name="Submit" type="submit" class="formbtn" value="<?=gettext("Save"); ?>" />
2747
								<input id="cancel" type="button" class="formbtn" value="<?=gettext("Cancel"); ?>" onclick="history.back()" />
2748
								<input name="if" type="hidden" id="if" value="<?=$if;?>" />
2749 1d7e1d6c gnhb
								<?php if ($wancfg['if'] == $a_ppps[$pppid]['if']) : ?>
2750 2cbe4b47 Colin Fleming
								<input name="ppp_port" type="hidden" value="<?=htmlspecialchars($pconfig['port']);?>" />
2751 30ade846 gnhb
								<?php endif; ?>
2752 2cbe4b47 Colin Fleming
								<input name="ptpid" type="hidden" value="<?=htmlspecialchars($pconfig['ptpid']);?>" />
2753 9978e156 gnhb
							</td>
2754
						</tr>
2755 1600b1af Scott Ullrich
					</table>
2756 168549b9 Colin Fleming
					</div>
2757 9978e156 gnhb
				</td>
2758
			</tr>
2759
		</table>
2760
	</form>
2761 30ade846 gnhb
	<script type="text/javascript">
2762 32b91bcf Colin Fleming
	//<![CDATA[
2763 30ade846 gnhb
		var gatewayip;
2764
		var name;
2765 cfd40454 Seth Mos
		var gatewayipv6;
2766
		var namev6;
2767 30ade846 gnhb
		function show_add_gateway() {
2768
			document.getElementById("addgateway").style.display = '';
2769
			document.getElementById("addgwbox").style.display = 'none';
2770
			document.getElementById("gateway").style.display = 'none';
2771
			document.getElementById("save").style.display = 'none';
2772
			document.getElementById("cancel").style.display = 'none';
2773
			document.getElementById("gwsave").style.display = '';
2774
			document.getElementById("gwcancel").style.display = '';
2775 076b14b2 Vinicius Coque
			jQuery('#notebox').html("");
2776 30ade846 gnhb
		}
2777 cfd40454 Seth Mos
		function show_add_gateway_v6() {
2778
			document.getElementById("addgatewayv6").style.display = '';
2779
			document.getElementById("addgwboxv6").style.display = 'none';
2780
			document.getElementById("gatewayv6").style.display = 'none';
2781
			document.getElementById("save").style.display = 'none';
2782
			document.getElementById("cancel").style.display = 'none';
2783
			document.getElementById("gwsave").style.display = '';
2784
			document.getElementById("gwcancel").style.display = '';
2785 076b14b2 Vinicius Coque
			jQuery('#noteboxv6').html("");
2786 cfd40454 Seth Mos
		}
2787 30ade846 gnhb
		function hide_add_gateway() {
2788
			document.getElementById("addgateway").style.display = 'none';
2789 c0948c6c Renato Botelho
			document.getElementById("addgwbox").style.display = '';
2790 30ade846 gnhb
			document.getElementById("gateway").style.display = '';
2791
			document.getElementById("save").style.display = '';
2792
			document.getElementById("cancel").style.display = '';
2793
			document.getElementById("gwsave").style.display = '';
2794
			document.getElementById("gwcancel").style.display = '';
2795 56756d31 Renato Botelho
			jQuery('#status').html('');
2796 30ade846 gnhb
		}
2797 cfd40454 Seth Mos
		function hide_add_gateway_v6() {
2798
			document.getElementById("addgatewayv6").style.display = 'none';
2799
			document.getElementById("addgwboxv6").style.display = '';
2800
			document.getElementById("gatewayv6").style.display = '';
2801
			document.getElementById("save").style.display = '';
2802
			document.getElementById("cancel").style.display = '';
2803
			document.getElementById("gwsave").style.display = '';
2804
			document.getElementById("gwcancel").style.display = '';
2805 56756d31 Renato Botelho
			jQuery('#statusv6').html('');
2806 cfd40454 Seth Mos
		}
2807 30ade846 gnhb
		function hide_add_gatewaysave() {
2808
			document.getElementById("addgateway").style.display = 'none';
2809 09f26fb7 Renato Botelho
			jQuery('#status').html('<img src="/themes/<?=$g['theme'];?>/images/misc/loader.gif" alt="loader" /> One moment please...');
2810 076b14b2 Vinicius Coque
			var iface = jQuery('#if').val();
2811
			name = jQuery('#name').val();
2812
			var descr = jQuery('#gatewaydescr').val();
2813
			gatewayip = jQuery('#gatewayip').val();
2814 32764288 Namezero
2815 076b14b2 Vinicius Coque
			var defaultgw = jQuery('#defaultgw').val();
2816 30ade846 gnhb
			var url = "system_gateways_edit.php";
2817 d09e69da Renato Botelho
			var pars = 'isAjax=true&ipprotocol=inet&defaultgw=' + escape(defaultgw) + '&interface=' + escape(iface) + '&name=' + escape(name) + '&descr=' + escape(descr) + '&gateway=' + escape(gatewayip);
2818 076b14b2 Vinicius Coque
			jQuery.ajax(
2819 30ade846 gnhb
				url,
2820
				{
2821 076b14b2 Vinicius Coque
					type: 'post',
2822
					data: pars,
2823
					error: report_failure,
2824 56756d31 Renato Botelho
					success: save_callback
2825 c0948c6c Renato Botelho
				});
2826 30ade846 gnhb
		}
2827 cfd40454 Seth Mos
		function hide_add_gatewaysave_v6() {
2828
			document.getElementById("addgatewayv6").style.display = 'none';
2829 09f26fb7 Renato Botelho
			jQuery('#statusv6').html('<img src="/themes/<?=$g['theme'];?>/images/misc/loader.gif" alt="loader" /> One moment please...');
2830 076b14b2 Vinicius Coque
			var iface = jQuery('#if').val();
2831
			name = jQuery('#namev6').val();
2832
			var descr = jQuery('#gatewaydescrv6').val();
2833
			gatewayip = jQuery('#gatewayipv6').val();
2834
			var defaultgw = jQuery('#defaultgwv6').val();
2835 cfd40454 Seth Mos
			var url_v6 = "system_gateways_edit.php";
2836 d09e69da Renato Botelho
			var pars_v6 = 'isAjax=true&ipprotocol=inet6&defaultgw=' + escape(defaultgw) + '&interface=' + escape(iface) + '&name=' + escape(name) + '&descr=' + escape(descr) + '&gateway=' + escape(gatewayip);
2837 076b14b2 Vinicius Coque
			jQuery.ajax(
2838 cfd40454 Seth Mos
				url_v6,
2839
				{
2840 076b14b2 Vinicius Coque
					type: 'post',
2841
					data: pars_v6,
2842
					error: report_failure_v6,
2843 56756d31 Renato Botelho
					success: save_callback_v6
2844 cfd40454 Seth Mos
				});
2845
		}
2846 30ade846 gnhb
		function addOption(selectbox,text,value)
2847
		{
2848
			var optn = document.createElement("OPTION");
2849
			optn.text = text;
2850
			optn.value = value;
2851 076b14b2 Vinicius Coque
			selectbox.append(optn);
2852
			selectbox.prop('selectedIndex',selectbox.children().length-1);
2853 168549b9 Colin Fleming
			jQuery('#notebox').html("<p><strong><?=gettext("NOTE:"); ?><\/strong> <?=gettext("You can manage Gateways"); ?> <a target='_blank' href='system_gateways.php'><?=gettext("here"); ?><\/a>.<\/p>");
2854 c0948c6c Renato Botelho
		}
2855 cfd40454 Seth Mos
		function addOption_v6(selectbox,text,value)
2856
		{
2857
			var optn = document.createElement("OPTION");
2858
			optn.text = text;
2859
			optn.value = value;
2860 076b14b2 Vinicius Coque
			selectbox.append(optn);
2861
			selectbox.prop('selectedIndex',selectbox.children().length-1);
2862 168549b9 Colin Fleming
			jQuery('#noteboxv6').html("<p><strong><?=gettext("NOTE:"); ?><\/strong> <?=gettext("You can manage Gateways"); ?> <a target='_blank' href='system_gateways.php'><?=gettext("here"); ?><\/a>.<\/p>");
2863 cfd40454 Seth Mos
		}
2864 a0edece9 Darren Embry
		function report_failure(request, textStatus, errorThrown) {
2865
			if (textStatus === "error" && request.getResponseHeader("Content-Type") === "text/plain") {
2866
				alert(request.responseText);
2867
			} else {
2868
				alert("Sorry, we could not create your IPv4 gateway at this time.");
2869
			}
2870 30ade846 gnhb
			hide_add_gateway();
2871
		}
2872 a0edece9 Darren Embry
		function report_failure_v6(request, textStatus, errorThrown) {
2873
			if (textStatus === "error" && request.getResponseHeader("Content-Type") === "text/plain") {
2874
				alert(request.responseText);
2875
			} else {
2876
				alert("Sorry, we could not create your IPv6 gateway at this time.");
2877
			}
2878 cfd40454 Seth Mos
			hide_add_gateway_v6();
2879
		}
2880 6e704f19 Renato Botelho
		function save_callback(response) {
2881 30ade846 gnhb
			if(response) {
2882
				document.getElementById("addgateway").style.display = 'none';
2883
				hide_add_gateway();
2884 cfd40454 Seth Mos
				var gwtext = escape(name) + " - " + gatewayip;
2885 076b14b2 Vinicius Coque
				addOption(jQuery('#gateway'), gwtext, name);
2886 30ade846 gnhb
				// Auto submit form?
2887
				//document.iform.submit();
2888 09f26fb7 Renato Botelho
				//jQuery('#status').html('<img src="/themes/<?=$g['theme'];?>/images/misc/loader.gif" alt="loader /">');
2889 30ade846 gnhb
			} else {
2890
				report_failure();
2891
			}
2892
		}
2893 6e2a15e6 Evgeny Yurchenko
		function show_advanced_media() {
2894
			document.getElementById("showadvmediabox").innerHTML='';
2895
			aodiv = document.getElementById('showmediaadv');
2896
			aodiv.style.display = "block";
2897
		}
2898 6e704f19 Renato Botelho
		function save_callback_v6(response_v6) {
2899 cfd40454 Seth Mos
			if(response_v6) {
2900
				document.getElementById("addgatewayv6").style.display = 'none';
2901
				hide_add_gateway_v6();
2902
				var gwtext_v6 = escape(name) + " - " + gatewayip;
2903 076b14b2 Vinicius Coque
				addOption_v6(jQuery('#gatewayv6'), gwtext_v6, name);
2904 cfd40454 Seth Mos
				// Auto submit form?
2905
				//document.iform.submit();
2906 09f26fb7 Renato Botelho
				//jQuery('#statusv6').html('<img src="/themes/<?=$g['theme'];?>/images/misc/loader.gif" alt="loader" />');
2907 cfd40454 Seth Mos
			} else {
2908
				report_failure_v6();
2909
			}
2910
		}
2911 30ade846 gnhb
		<?php
2912 8672329c Erik Fonnesbeck
		echo "show_allcfg(document.iform.enable);";
2913 30ade846 gnhb
		echo "updateType('{$pconfig['type']}');\n";
2914 e029943a Seth Mos
		echo "updateTypeSix('{$pconfig['type6']}');\n";
2915 6c05cfb0 gnhb
		?>
2916 32b91bcf Colin Fleming
	//]]>
2917 30ade846 gnhb
	</script>
2918
	<?php include("fend.inc"); ?>
2919
	</body>
2920 b09a92b7 Ermal Luçi
</html>