Project

General

Profile

Download (17 KB) Statistics
| Branch: | Tag: | Revision:
1 5b237745 Scott Ullrich
<?php 
2
/*
3
	interfaces_assign.php
4
	part of m0n0wall (http://m0n0.ch/wall)
5
	Written by Jim McBeath based on existing m0n0wall files
6
	
7 94a77286 Scott Ullrich
	Copyright (C) 2003-2005 Manuel Kasper <mk@neon1.net>.
8 5b237745 Scott Ullrich
	All rights reserved.
9
	
10
	Redistribution and use in source and binary forms, with or without
11
	modification, are permitted provided that the following conditions are met:
12
	
13
	1. Redistributions of source code must retain the above copyright notice,
14
	   this list of conditions and the following disclaimer.
15
	
16
	2. Redistributions in binary form must reproduce the above copyright
17
	   notice, this list of conditions and the following disclaimer in the
18
	   documentation and/or other materials provided with the distribution.
19
	
20
	THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
21
	INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
22
	AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
23
	AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
24
	OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25
	SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26
	INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27
	CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28
	ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29
	POSSIBILITY OF SUCH DAMAGE.
30
*/
31 7ac5a4cb Scott Ullrich
/*
32
	pfSense_BUILDER_BINARIES:	/bin/rm
33
	pfSense_MODULE:	interfaces
34
*/
35 5b237745 Scott Ullrich
36 6b07c15a Matthew Grooms
##|+PRIV
37
##|*IDENT=page-interfaces-assignnetworkports
38
##|*NAME=Interfaces: Assign network ports page
39
##|*DESCR=Allow access to the 'Interfaces: Assign network ports' page.
40
##|*MATCH=interfaces_assign.php*
41
##|-PRIV
42
43 8cc6876f groo
$pgtitle = array(gettext("Interfaces"),gettext("Assign network ports"));
44 af1e2031 jim-p
$statusurl = "status_interfaces.php";
45
46 5b237745 Scott Ullrich
require("guiconfig.inc");
47 5a7d827b sullrich
require("functions.inc");
48
require("filter.inc");
49
require("shaper.inc");
50
require("ipsec.inc");
51
require("vpn.inc");
52 4c86a165 sullrich
require("captiveportal.inc");
53 6e6233d0 sullrich
require("rrd.inc");
54 5b237745 Scott Ullrich
55
/*
56
	In this file, "port" refers to the physical port name,
57
	while "interface" refers to LAN, WAN, or OPTn.
58
*/
59
60
/* get list without VLAN interfaces */
61
$portlist = get_interface_list();
62
63 7c53bc7b Erik Fonnesbeck
/* add wireless clone interfaces */
64
if (is_array($config['wireless']['clone']) && count($config['wireless']['clone'])) {
65
	foreach ($config['wireless']['clone'] as $clone) {
66
		$portlist[$clone['cloneif']] = $clone;
67
		$portlist[$clone['cloneif']]['iswlclone'] = true;
68
	}
69
}
70
71 5b237745 Scott Ullrich
/* add VLAN interfaces */
72
if (is_array($config['vlans']['vlan']) && count($config['vlans']['vlan'])) {
73
	foreach ($config['vlans']['vlan'] as $vlan) {
74 d59557dc Ermal Luçi
		$portlist[$vlan['vlanif']] = $vlan;
75
		$portlist[$vlan['vlanif']]['isvlan'] = true;
76 5b237745 Scott Ullrich
	}
77
}
78
79 38738505 Ermal Luçi
/* add Bridge interfaces */
80 b47c94bd Ermal Luçi
if (is_array($config['bridges']['bridged']) && count($config['bridges']['bridged'])) {
81
        foreach ($config['bridges']['bridged'] as $bridge) {
82 38738505 Ermal Luçi
                $portlist[$bridge['bridgeif']] = $bridge;
83
                $portlist[$bridge['bridgeif']]['isbridge'] = true;
84
        }
85
}
86
87
/* add GIF interfaces */
88
if (is_array($config['gifs']['gif']) && count($config['gifs']['gif'])) {
89
        foreach ($config['gifs']['gif'] as $gif) {
90
                $portlist[$gif['gifif']] = $gif;
91
                $portlist[$gif['gifif']]['isgif'] = true;
92
        }
93
}
94
95
/* add GRE interfaces */
96
if (is_array($config['gres']['gre']) && count($config['gres']['gre'])) {
97
        foreach ($config['gres']['gre'] as $gre) {
98
                $portlist[$gre['greif']] = $gre;
99
                $portlist[$gre['greif']]['isgre'] = true;
100
        }
101
}
102
103 dbdd08af Ermal Luçi
/* add LAGG interfaces */
104 c720925c Ermal Luçi
if (is_array($config['laggs']['lagg']) && count($config['laggs']['lagg'])) {
105
        foreach ($config['laggs']['lagg'] as $lagg) {
106
                $portlist[$lagg['laggif']] = $lagg;
107
                $portlist[$lagg['laggif']]['islagg'] = true;
108 dbdd08af Ermal Luçi
		/* LAGG members cannot be assigned */
109
		$lagifs = explode(',', $lagg['members']);
110
		foreach ($lagifs as $lagif)
111
			if (isset($portlist[$lagif]))
112
				unset($portlist[$lagif]);
113 c720925c Ermal Luçi
        }
114
}
115
116 265188ea Ermal Lu?i
/* add QinQ interfaces */
117
if (is_array($config['qinqs']['qinqentry']) && count($config['qinqs']['qinqentry'])) {
118
        foreach ($config['qinqs']['qinqentry'] as $qinq) {
119 08057ba6 Ermal Lu?i
                $portlist["vlan{$qinq['tag']}"]['descr'] = "VLAN {$qinq['tag']}";
120 265188ea Ermal Lu?i
                $portlist["vlan{$qinq['tag']}"]['isqinq'] = true;
121
                /* QinQ members */
122
                $qinqifs = explode(' ', $qinq['members']);
123
                foreach ($qinqifs as $qinqif) {
124
			$portlist["vlan{$qinq['tag']}_{$qinqif}"]['descr'] = "QinQ {$qinqif}";
125
			$portlist["vlan{$qinq['tag']}_{$qinqif}"]['isqinq'] = true;
126
		}
127
        }
128
}
129 c720925c Ermal Luçi
130 860c4e80 Chris Buechler
/* add PPP interfaces */
131
if (is_array($config['ppps']['ppp']) && count($config['ppps']['ppp'])) {
132 611ae852 Ermal
	foreach ($config['ppps']['ppp'] as $pppid => $ppp) {
133 99c26d44 gnhb
		$portname = $ppp['if'];
134 860c4e80 Chris Buechler
		$portlist[$portname] = $ppp;
135
		$portlist[$portname]['isppp'] = true;
136 3f2ef8d7 gnhb
		$ports_base = basename($ppp['ports']);
137 42809b4a gnhb
		if (isset($ppp['descr']))
138 99c26d44 gnhb
			$portlist[$portname]['descr'] = strtoupper($ppp['if']). "({$ports_base}) - {$ppp['descr']}";
139 00b702cc gnhb
		else if (isset($ppp['username']))
140 99c26d44 gnhb
			$portlist[$portname]['descr'] = strtoupper($ppp['if']). "({$ports_base}) - {$ppp['username']}";
141 42809b4a gnhb
		else
142 99c26d44 gnhb
			$portlist[$portname]['descr'] = strtoupper($ppp['if']). "({$ports_base})";
143 860c4e80 Chris Buechler
	}
144
}
145
146 d59557dc Ermal Luçi
if ($_POST['apply']) {
147
	if (file_exists("/var/run/interface_mismatch_reboot_needed"))
148 eef52225 jim-p
		system_reboot();
149 d59557dc Ermal Luçi
	else {
150
		write_config();
151
152
		$retval = 0;
153
		$retval = filter_configure();
154 0027de0a Ermal Lu?i
		$savemsg = get_std_save_message($retval);
155 d59557dc Ermal Luçi
156
		if (stristr($retval, "error") <> true)
157
			$savemsg = get_std_save_message($retval);
158
		else
159
			$savemsg = $retval;
160
	}
161
162
} else if ($_POST) {
163 5b237745 Scott Ullrich
164
	unset($input_errors);
165
166
	/* input validation */
167
168
	/* Build a list of the port names so we can see how the interfaces map */
169
	$portifmap = array();
170
	foreach ($portlist as $portname => $portinfo)
171
		$portifmap[$portname] = array();
172
173
	/* Go through the list of ports selected by the user,
174
	   build a list of port-to-interface mappings in portifmap */
175
	foreach ($_POST as $ifname => $ifport) {
176
		if (($ifname == 'lan') || ($ifname == 'wan') || (substr($ifname, 0, 3) == 'opt'))
177
			$portifmap[$ifport][] = strtoupper($ifname);
178
	}
179
180
	/* Deliver error message for any port with more than one assignment */
181
	foreach ($portifmap as $portname => $ifnames) {
182
		if (count($ifnames) > 1) {
183 ddc55e12 Erik Fonnesbeck
			$errstr = sprintf(gettext('Port %1$s '.
184
				' was assigned to %2$s' .
185
				' interfaces:'), $portname, count($ifnames));
186 5b237745 Scott Ullrich
				
187
			foreach ($portifmap[$portname] as $ifn)
188
				$errstr .= " " . $ifn;
189
			
190
			$input_errors[] = $errstr;
191
		}
192
	}
193
194
195
	if (!$input_errors) {
196
		/* No errors detected, so update the config */
197
		foreach ($_POST as $ifname => $ifport) {
198
		
199
			if (($ifname == 'lan') || ($ifname == 'wan') ||
200
				(substr($ifname, 0, 3) == 'opt')) {
201
				
202
				if (!is_array($ifport)) {
203 e7bfa231 Ermal Lu?i
					$reloadif = false;
204 44088ce8 Ermal Lu?i
					if (!empty($config['interfaces'][$ifname]['if']) && $config['interfaces'][$ifname]['if'] <> $ifport) {
205
						interface_bring_down($ifname);
206 e7bfa231 Ermal Lu?i
						/* Mark this to be reconfigured in any case. */
207
						$reloadif = true;
208 44088ce8 Ermal Lu?i
					}
209 5b237745 Scott Ullrich
					$config['interfaces'][$ifname]['if'] = $ifport;
210 99c26d44 gnhb
					if (isset($portlist[$ifport]['isppp']))
211 c86e8f76 gnhb
						$config['interfaces'][$ifname]['ipaddr'] = $portlist[$ifport]['type'];
212 42809b4a gnhb
					
213 5b237745 Scott Ullrich
					/* check for wireless interfaces, set or clear ['wireless'] */
214 94a77286 Scott Ullrich
					if (preg_match($g['wireless_regex'], $ifport)) {
215 5b237745 Scott Ullrich
						if (!is_array($config['interfaces'][$ifname]['wireless']))
216
							$config['interfaces'][$ifname]['wireless'] = array();
217
					} else {
218
						unset($config['interfaces'][$ifname]['wireless']);
219
					}
220
					
221 d59557dc Ermal Luçi
					/* make sure there is a descr for all interfaces */
222
					if (!isset($config['interfaces'][$ifname]['descr']))
223
						$config['interfaces'][$ifname]['descr'] = strtoupper($ifname);
224 c86e8f76 gnhb
						
225 b13efb03 Erik Fonnesbeck
					if ($reloadif == true) {
226
						if (preg_match($g['wireless_regex'], $ifport))
227
							interface_sync_wireless_clones($config['interfaces'][$ifname], false);
228 e7bfa231 Ermal Lu?i
						/* Reload all for the interface. */
229
						interface_configure($ifname, true);
230 b13efb03 Erik Fonnesbeck
					}
231 5b237745 Scott Ullrich
				}
232
			}
233
		}
234
	
235
		write_config();
236 6e6233d0 sullrich
		
237
		enable_rrd_graphing();
238 5b237745 Scott Ullrich
	}
239
}
240
241
if ($_GET['act'] == "del") {
242
	$id = $_GET['id'];
243 3c43a344 Scott Ullrich
244 7ec05d27 Ermal Luçi
	if (link_interface_to_bridge($id))
245 8cc6876f groo
		$input_errors[] = gettext("The interface is part of a bridge. Please remove it from the bridge to continue");
246 c6bacfe5 Ermal Luçi
	else if (link_interface_to_gre($id))
247 8cc6876f groo
		$input_errors[] = gettext("The interface is part of a gre tunnel. Please delete the tunnel to continue");
248 c6bacfe5 Ermal Luçi
	else if (link_interface_to_gif($id))
249 8cc6876f groo
		$input_errors[] = gettext("The interface is part of a gif tunnel. Please delete the tunnel to continue");
250 1723f72d Ermal Luçi
	else {
251
		unset($config['interfaces'][$id]['enable']);
252 fa4a331f Ermal
		$realid = get_real_interface($id);
253 1723f72d Ermal Luçi
		interface_bring_down($id);   /* down the interface */
254 3c43a344 Scott Ullrich
		
255 1723f72d Ermal Luçi
		unset($config['interfaces'][$id]);	/* delete the specified OPTn or LAN*/
256
257
		if($id == "lan") {
258
			unset($config['interfaces']['lan']);
259
			if (is_array($config['dhcpd']))
260
				unset($config['dhcpd']['lan']);
261
				unset($config['shaper']);
262
				unset($config['ezshaper']);
263
				unset($config['nat']);
264
				system("rm /var/dhcpd/var/db/*");
265
        			services_dhcpd_configure();
266
		}
267 c3bc7432 Ermal Luçi
268 05855d1d Ermal
		if (count($config['filter']['rule']) > 0) {
269 c86e8f76 gnhb
			foreach ($config['filter']['rule'] as $x => $rule) {
270
				if($rule['interface'] == $id)
271
					unset($config['filter']['rule'][$x]);
272 e27d0494 Ermal
			}
273 1723f72d Ermal Luçi
        	}
274 05855d1d Ermal
		if (is_array($config['nat']['advancedoutbound']) && count($config['nat']['advancedoutbound']['rule']) > 0) {
275 c86e8f76 gnhb
        	foreach ($config['nat']['advancedoutbound']['rule'] as $x => $rule) {
276
				if($rule['interface'] == $id)
277
					unset($config['nat']['advancedoutbound']['rule'][$x]['interface']);
278 e27d0494 Ermal
        		}
279
		}
280 c86e8f76 gnhb
		if (is_array($config['nat']['rule']) && count($config['nat']['rule']) > 0) {
281
			foreach ($config['nat']['rule'] as $x => $rule) {
282
				if($rule['interface'] == $id)
283
					unset($config['nat']['rule'][$x]['interface']);
284 e27d0494 Ermal
			}
285 c86e8f76 gnhb
        }
286 c3bc7432 Ermal Luçi
287 1723f72d Ermal Luçi
		write_config();
288 21eebbb0 Scott Ullrich
	
289 b3a07b12 sullrich
		/* If we are in firewall/routing mode (not single interface)
290
		 * then ensure that we are not running DHCP on the wan which
291
		 * will make a lot of ISP's unhappy.
292
		 */
293 1723f72d Ermal Luçi
		if($config['interfaces']['lan']) {
294
			unset($config['dhcpd']['wan']);		
295
		}
296 7850de1c Ermal Lu?i
297 fa4a331f Ermal
		link_interface_to_vlans($realid, "update");
298 98a0128c Scott Ullrich
	
299 8cc6876f groo
		$savemsg = gettext("Interface has been deleted.");
300 1723f72d Ermal Luçi
	}
301 5b237745 Scott Ullrich
}
302
303
if ($_GET['act'] == "add") {
304
	/* find next free optional interface number */
305 bda86e8f Scott Ullrich
	if(!$config['interfaces']['lan']) {
306 8cc6876f groo
		$newifname = gettext("lan");
307
		$descr = gettext("LAN");
308 0d21552c Scott Ullrich
		$config['interfaces'][$newifname] = array();
309 d59557dc Ermal Luçi
		$config['interfaces'][$newifname]['descr'] = $descr;
310 bda86e8f Scott Ullrich
	} else {
311 8a648100 Ermal Luçi
		for ($i = 1; $i <= count($config['interfaces']); $i++) {
312
			if (!$config['interfaces']["opt{$i}"])
313
				break;
314
		}
315 bda86e8f Scott Ullrich
		$newifname = 'opt' . $i;
316 01b8a2ff Renato Botelho
		$descr = "OPT" . $i;
317 0d21552c Scott Ullrich
		$config['interfaces'][$newifname] = array();
318 d59557dc Ermal Luçi
		$config['interfaces'][$newifname]['descr'] = $descr;
319 bda86e8f Scott Ullrich
	}
320 cec4323f Erik Fonnesbeck
321
	uksort($config['interfaces'], "compare_interface_names");
322
323 5b237745 Scott Ullrich
	/* Find an unused port for this interface */
324
	foreach ($portlist as $portname => $portinfo) {
325
		$portused = false;
326
		foreach ($config['interfaces'] as $ifname => $ifdata) {
327
			if ($ifdata['if'] == $portname) {
328
				$portused = true;
329
				break;
330
			}
331
		}
332
		if (!$portused) {
333
			$config['interfaces'][$newifname]['if'] = $portname;
334 8f0289e7 Erik Fonnesbeck
			if (preg_match($g['wireless_regex'], $portname)) {
335 5b237745 Scott Ullrich
				$config['interfaces'][$newifname]['wireless'] = array();
336 8f0289e7 Erik Fonnesbeck
				interface_sync_wireless_clones($config['interfaces'][$newifname], false);
337
			}
338 5b237745 Scott Ullrich
			break;
339
		}
340
	}
341
	
342 d59557dc Ermal Luçi
        /* XXX: Do not remove this. */
343 7ac5a4cb Scott Ullrich
        mwexec("/bin/rm -f /tmp/config.cache");
344 d59557dc Ermal Luçi
345 5b237745 Scott Ullrich
	write_config();
346 093a01b0 Scott Ullrich
347 8cc6876f groo
	$savemsg = gettext("Interface has been added.");
348 21eebbb0 Scott Ullrich
349 5b237745 Scott Ullrich
}
350
351 cec4323f Erik Fonnesbeck
function compare_interface_names($a, $b) {
352
	if ($a == $b)
353
		return 0;
354
	else if ($a == 'wan')
355
		return -1;
356
	else if ($b == 'wan')
357
		return 1;
358
	else if ($a == 'lan')
359
		return -1;
360
	else if ($b == 'lan')
361
		return 1;
362
363
	return strnatcmp($a, $b);
364
}
365
366 7f43ca88 Scott Ullrich
include("head.inc");
367
368 23be6f1b Scott Ullrich
if(file_exists("/var/run/interface_mismatch_reboot_needed")) 
369 d59557dc Ermal Luçi
	if ($_POST)
370 8cc6876f groo
		$savemsg = gettext("Reboot is needed. Please apply the settings in order to reboot.");
371 c35e12af Scott Ullrich
	else
372 8cc6876f groo
		$savemsg = gettext("Interface mismatch detected.  Please resolve the mismatch and click Save.  The firewall will reboot afterwards.");
373 23be6f1b Scott Ullrich
374 5b237745 Scott Ullrich
?>
375 6eb47218 Scott Ullrich
376
<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
377 5b237745 Scott Ullrich
<?php include("fbegin.inc"); ?>
378 a2dab9bc Bill Marquette
379 5b237745 Scott Ullrich
<form action="interfaces_assign.php" method="post" name="iform" id="iform">
380 f2cb6a9f Scott Ullrich
381 d59557dc Ermal Luçi
<?php if (file_exists("/tmp/reload_interfaces")): ?><p>
382 120c21bd jim-p
	<?php print_info_box_np(gettext("The interface configuration has been changed.<br>You must apply the changes in order for them to take effect."));?><br>
383 b100b85d Scott Ullrich
<?php elseif($savemsg): ?>
384
	<?php print_info_box($savemsg); ?>
385 d59557dc Ermal Luçi
<?php endif; ?>
386
387 f2cb6a9f Scott Ullrich
<?php if ($input_errors) print_input_errors($input_errors); ?>
388
389 5b237745 Scott Ullrich
<table width="100%" border="0" cellpadding="0" cellspacing="0">
390 94a77286 Scott Ullrich
  <tr><td class="tabnavtbl">
391 c8b8ff69 Scott Ullrich
<?php
392
	$tab_array = array();
393 5465972a Carlos Eduardo Ramos
	$tab_array[0] = array(gettext("Interface assignments"), true, "interfaces_assign.php");
394
	$tab_array[1] = array(gettext("Interface Groups"), false, "interfaces_groups.php");
395
	$tab_array[2] = array(gettext("Wireless"), false, "interfaces_wireless.php");
396
	$tab_array[3] = array(gettext("VLANs"), false, "interfaces_vlan.php");
397
	$tab_array[4] = array(gettext("QinQs"), false, "interfaces_qinq.php");
398
	$tab_array[5] = array(gettext("PPPs"), false, "interfaces_ppps.php");
399
	$tab_array[7] = array(gettext("GRE"), false, "interfaces_gre.php");
400
	$tab_array[8] = array(gettext("GIF"), false, "interfaces_gif.php");
401
	$tab_array[9] = array(gettext("Bridges"), false, "interfaces_bridge.php");
402
	$tab_array[10] = array(gettext("LAGG"), false, "interfaces_lagg.php");
403 c8b8ff69 Scott Ullrich
	display_top_tabs($tab_array);
404
?>  
405 5b237745 Scott Ullrich
  </td></tr>
406
  <tr> 
407 d732f186 Bill Marquette
    <td>
408
	<div id="mainarea">
409
        <table class="tabcont" width="100%" border="0" cellpadding="0" cellspacing="0">
410
       <tr> 
411 5465972a Carlos Eduardo Ramos
	<td class="listhdrr"><?=gettext("Interface"); ?></td>
412
	<td class="listhdr"><?=gettext("Network port"); ?></td>
413 5b237745 Scott Ullrich
	<td class="list">&nbsp;</td>
414
  </tr>
415
  <?php foreach ($config['interfaces'] as $ifname => $iface):
416
  	if ($iface['descr'])
417
		$ifdescr = $iface['descr'];
418
	else
419
		$ifdescr = strtoupper($ifname);
420
	?>
421
  <tr> 
422
	<td class="listlr" valign="middle"><strong><?=$ifdescr;?></strong></td>
423
	  <td valign="middle" class="listr">
424 8548648e Scott Ullrich
		<select onChange="javascript:\$('savediv').appear();" name="<?=$ifname;?>" id="<?=$ifname;?>">
425 5b237745 Scott Ullrich
		  <?php foreach ($portlist as $portname => $portinfo): ?>
426 46d8071e Scott Ullrich
			<option  value="<?=$portname;?>"  <?php if ($portname == $iface['if']) echo " selected";?>>
427 99c26d44 gnhb
				<?php if ($portinfo['isvlan']) {
428 ddc55e12 Erik Fonnesbeck
					$descr = sprintf(gettext('VLAN %1$s on %2$s'),$portinfo['tag'],$portinfo['if']);
429 91a5b98a gnhb
				if ($portinfo['descr'])
430
					$descr .= " (" . $portinfo['descr'] . ")";
431
					echo htmlspecialchars($descr);
432
				} elseif ($portinfo['iswlclone']) {
433
					$descr = $portinfo['cloneif'];
434
					if ($portinfo['descr'])
435
						$descr .= " (" . $portinfo['descr'] . ")";
436
					echo htmlspecialchars($descr);
437
				} elseif ($portinfo['isppp']) {
438
					echo htmlspecialchars($portinfo['descr']);
439
				} elseif ($portinfo['isbridge']) {
440
					$descr = strtoupper($portinfo['bridgeif']);
441
					if ($portinfo['descr'])
442
						$descr .= " (" . $portinfo['descr'] . ")";
443
					echo htmlspecialchars($descr);
444
				} elseif ($portinfo['isgre']) {
445
					$descr = "GRE {$portinfo['remote-addr']}";
446
					if ($portinfo['descr'])
447
						$descr .= " (" . $portinfo['descr'] . ")";
448
					echo htmlspecialchars($descr);
449
				} elseif ($portinfo['isgif']) {
450
					$descr = "GRE {$portinfo['remote-addr']}";
451
					if ($portinfo['descr'])
452
						$descr .= " (" . $portinfo['descr'] . ")";
453
					echo htmlspecialchars($descr);
454
				} elseif ($portinfo['islagg']) {
455
					$descr = strtoupper($portinfo['laggif']);
456
					if ($portinfo['descr'])
457
						$descr .= " (" . $portinfo['descr'] . ")";
458
					echo htmlspecialchars($descr);
459
				} elseif ($portinfo['isqinq']) {
460
					echo htmlspecialchars($portinfo['descr']);
461
				} else
462
					echo htmlspecialchars($portname . " (" . $portinfo['mac'] . ")");
463 c86e8f76 gnhb
			?></option>
464 265188ea Ermal Lu?i
		<?php endforeach; ?>
465
	</select>
466
	</td>
467
	<td valign="middle" class="list">
468 b0d756ba Scott Ullrich
		  <?php if ($ifname != 'wan'): ?>
469 8cc6876f groo
		  <a href="interfaces_assign.php?act=del&id=<?=$ifname;?>"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" title=<?=gettext("delete interface"); ?> width="17" height="17" border="0"></a> 
470 5b237745 Scott Ullrich
		  <?php endif; ?>
471
		</td>
472
  </tr>
473
  <?php endforeach; ?>
474
  <?php if (count($config['interfaces']) < count($portlist)): ?>
475
  <tr>
476
	<td class="list" colspan="2"></td>
477
	<td class="list" nowrap>
478 8cc6876f groo
	<a href="interfaces_assign.php?act=add"><img src="./themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" title=<?=gettext("add interface"); ?> width="17" height="17" border="0"></a>
479 5b237745 Scott Ullrich
	</td>
480
  </tr>
481
  <?php else: ?>
482
  <tr>
483
	<td class="list" colspan="3" height="10"></td>
484
  </tr>
485
  <?php endif; ?>
486
</table>
487 d732f186 Bill Marquette
</div>
488 0d21552c Scott Ullrich
<br/>
489 46d8071e Scott Ullrich
<div name='savediv' id='savediv' style='display:none;'>
490
	<input name="Submit" type="submit" class="formbtn" value="<?=gettext("Save"); ?>"><br><br>
491
	<p>
492
</div>
493 bd705fb8 Scott Ullrich
</p>
494 94a77286 Scott Ullrich
<ul>
495 8cc6876f groo
  <li><span class="vexpl"><?=gettext("change the IP address of your computer"); ?></span></li>
496
  <li><span class="vexpl"><?=gettext("renew its DHCP lease"); ?></span></li>
497
  <li><span class="vexpl"><?=gettext("access the webConfigurator with the new IP address"); ?></span></li>
498
  <li><span class="vexpl"><?=gettext("interfaces that are configured as members of a lagg(4) interface will not be shown."); ?></span></li>
499 94a77286 Scott Ullrich
</ul></td>
500 5b237745 Scott Ullrich
	</tr>
501
</table>
502
</form>
503
<?php include("fend.inc"); ?>
504 c8b8ff69 Scott Ullrich
</body>
505
</html>