Project

General

Profile

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