Project

General

Profile

Download (19.3 KB) Statistics
| Branch: | Tag: | Revision:
1 d173230c Seth Mos
<?php 
2 124aee67 Chris Buechler
/* $Id$ */
3 d173230c Seth Mos
/*
4
	system_gateways_edit.php
5
	part of pfSense (http://pfsense.com)
6
	
7 6216690b smos
	Copyright (C) 2010 Seth Mos <seth.mos@dds.nl>.
8 d173230c Seth Mos
	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 1d333258 Scott Ullrich
/*
32
	pfSense_MODULE:	routing
33
*/
34 d173230c Seth Mos
35 6b07c15a Matthew Grooms
##|+PRIV
36
##|*IDENT=page-system-gateways-editgateway
37
##|*NAME=System: Gateways: Edit Gateway page
38
##|*DESCR=Allow access to the 'System: Gateways: Edit Gateway' page.
39
##|*MATCH=system_gateways_edit.php*
40
##|-PRIV
41
42 124aee67 Chris Buechler
require("guiconfig.inc");
43 4666b787 Ermal Lu?i
require("pkg-utils.inc");
44 d173230c Seth Mos
45 99c61352 Ermal
$a_gateways = return_gateways_array(true);
46 87f0be87 Chris Buechler
$a_gateways_arr = array();
47
foreach($a_gateways as $gw) {
48
	$a_gateways_arr[] = $gw;
49
}
50
$a_gateways = $a_gateways_arr;
51 d173230c Seth Mos
52 616e1956 Seth Mos
if (!is_array($config['gateways']['gateway_item']))
53
        $config['gateways']['gateway_item'] = array();
54
        
55
$a_gateway_item = &$config['gateways']['gateway_item'];
56
57 87f0be87 Chris Buechler
$id = $_GET['id'];
58
if (isset($_POST['id']))
59 d173230c Seth Mos
	$id = $_POST['id'];
60
61
if (isset($_GET['dup'])) {
62
	$id = $_GET['dup'];
63
}
64
65
if (isset($id) && $a_gateways[$id]) {
66 bb849003 Ermal
	$pconfig = array();
67 e90db2b4 Ermal Lu?i
	$pconfig['name'] = $a_gateways[$id]['name'];
68 5f53260a Ermal
	$pconfig['weight'] = $a_gateways[$id]['weight'];
69 e90db2b4 Ermal Lu?i
	$pconfig['interface'] = $a_gateways[$id]['interface'];
70 883c53c9 Ermal Lu?i
	$pconfig['friendlyiface'] = $a_gateways[$id]['friendlyiface'];
71 d44d26c1 Ermal
	if (isset($a_gateways[$id]['dynamic']))
72
		$pconfig['dynamic'] = true;
73
	$pconfig['gateway'] = $a_gateways[$id]['gateway'];
74 883c53c9 Ermal Lu?i
	$pconfig['defaultgw'] = isset($a_gateways[$id]['defaultgw']);
75 023920e7 Ermal
	$pconfig['latencylow'] = $a_gateway_item[$id]['latencylow'];
76
        $pconfig['latencyhigh'] = $a_gateway_item[$id]['latencyhigh'];
77
        $pconfig['losslow'] = $a_gateway_item[$id]['losslow'];
78
        $pconfig['losshigh'] = $a_gateway_item[$id]['losshigh'];
79
        $pconfig['down'] = $a_gateway_item[$id]['down'];
80 99c61352 Ermal
	$pconfig['monitor'] = $a_gateways[$id]['monitor'];
81 e90db2b4 Ermal Lu?i
	$pconfig['descr'] = $a_gateways[$id]['descr'];
82
	$pconfig['attribute'] = $a_gateways[$id]['attribute'];
83 d173230c Seth Mos
}
84
85 124aee67 Chris Buechler
if (isset($_GET['dup'])) {
86 d173230c Seth Mos
	unset($id);
87 124aee67 Chris Buechler
	unset($pconfig['attribute']);
88
}
89 d173230c Seth Mos
90
if ($_POST) {
91
92
	unset($input_errors);
93
94
	/* input validation */
95 d44d26c1 Ermal
	$reqdfields = explode(" ", "name interface");
96
	$reqdfieldsn = array(gettext("Name"), gettext("Interface"));
97 883c53c9 Ermal Lu?i
98 d173230c Seth Mos
	do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors);
99 883c53c9 Ermal Lu?i
100 d173230c Seth Mos
	if (! isset($_POST['name'])) {
101
		$input_errors[] = "A valid gateway name must be specified.";
102
	}
103 31ace93c Seth Mos
	if (! is_validaliasname($_POST['name'])) {
104 df152a88 Carlos Eduardo Ramos
		$input_errors[] = gettext("The gateway name must not contain invalid characters.");
105 31ace93c Seth Mos
	}
106 87f0be87 Chris Buechler
	/* skip system gateways which have been automatically added */
107 d52b71c7 Ermal Lu?i
	if (($_POST['gateway'] && (!is_ipaddr($_POST['gateway'])) && ($_POST['attribute'] != "system")) && ($_POST['gateway'] != "dynamic")) {
108 df152a88 Carlos Eduardo Ramos
		$input_errors[] = gettext("A valid gateway IP address must be specified.");
109 87f0be87 Chris Buechler
	}
110 15a13dab Scott Ullrich
111 d44d26c1 Ermal
	if ($_POST['gateway'] && (is_ipaddr($_POST['gateway'])) && !$_REQUEST['isAjax']) {
112
		if (!empty($config['interfaces'][$_POST['interface']]['ipaddr'])) {
113 78ae2b14 Ermal
			if (is_ipaddr($config['interfaces'][$_POST['interface']]['ipaddr']) && (empty($_POST['gateway']) || $_POST['gateway'] == "dynamic"))
114 d44d26c1 Ermal
				$input_errors[] = gettext("Dynamic gateway values cannot be specified for interfaces with a static ip configuration.");
115
		}
116 b29b1a33 Chris Buechler
		$parent_ip = get_interface_ip($_POST['interface']);
117 e227df57 Ermal Lu?i
		if (is_ipaddr($parent_ip)) {
118
			$parent_sn = get_interface_subnet($_POST['interface']);
119
			if(!ip_in_subnet($_POST['gateway'], gen_subnet($parent_ip, $parent_sn) . "/" . $parent_sn)) {
120 181b29ca Vinicius Coque
				$input_errors[] = sprintf(gettext("The gateway address %s does not lie within the chosen interface's subnet."), $_POST['gateway']);
121 e227df57 Ermal Lu?i
			}
122 e7d3b8f4 Seth Mos
		}
123
	}
124 883c53c9 Ermal Lu?i
	if (($_POST['monitor'] <> "") && !is_ipaddr($_POST['monitor']) && $_POST['monitor'] != "dynamic") {
125 df152a88 Carlos Eduardo Ramos
		$input_errors[] = gettext("A valid monitor IP address must be specified.");
126 d173230c Seth Mos
	}
127
128 8b060357 Seth Mos
	if (isset($_POST['name'])) {
129 31ace93c Seth Mos
		/* check for overlaps */
130
		foreach ($a_gateways as $gateway) {
131 2328dcc5 Seth Mos
			if (isset($id) && ($a_gateways[$id]) && ($a_gateways[$id] === $gateway)) {
132 23fafd14 Ermal
				if ($gateway['name'] != $_POST['name'])
133
					$input_errors[] = gettext("Changing name on a gateway is not allowed because it can leave stale gateways around.");
134 31ace93c Seth Mos
				continue;
135
			}
136 2328dcc5 Seth Mos
			if($_POST['name'] <> "") {
137 883c53c9 Ermal Lu?i
				if (($gateway['name'] <> "") && ($_POST['name'] == $gateway['name']) && ($gateway['attribute'] != "system")) {
138 0e94685b Renato Botelho
					$input_errors[] = sprintf(gettext('The gateway name "%s" already exists.'), $_POST['name']);
139 2328dcc5 Seth Mos
					break;
140
				}
141
			}
142
			if(is_ipaddr($_POST['gateway'])) {
143 883c53c9 Ermal Lu?i
				if (($gateway['gateway'] <> "") && ($_POST['gateway'] == $gateway['gateway']) && ($gateway['attribute'] != "system")) {
144 0e94685b Renato Botelho
					$input_errors[] = sprintf(gettext('The gateway IP address "%s" already exists.'), $_POST['gateway']);
145 2328dcc5 Seth Mos
					break;
146
				}
147 31ace93c Seth Mos
			}
148 2328dcc5 Seth Mos
			if(is_ipaddr($_POST['monitor'])) {
149 883c53c9 Ermal Lu?i
				if (($gateway['monitor'] <> "") && ($_POST['monitor'] == $gateway['monitor']) && ($gateway['attribute'] != "system")) {
150 0e94685b Renato Botelho
					$input_errors[] = sprintf(gettext('The monitor IP address "%s" is already in use. You must choose a different monitor IP.'), $_POST['monitor']);
151 2328dcc5 Seth Mos
					break;
152
				}
153 31ace93c Seth Mos
			}
154 d173230c Seth Mos
		}
155
	}
156
157 023920e7 Ermal
	/* input validation */
158
        if($_POST['latencylow']) {
159
                if (! is_numeric($_POST['latencylow'])) {
160
                        $input_errors[] = gettext("The low latency watermark needs to be a numeric value.");
161
                }
162
        }
163
164
        if($_POST['latencyhigh']) {
165
                if (! is_numeric($_POST['latencyhigh'])) {
166
                        $input_errors[] = gettext("The high latency watermark needs to be a numeric value.");
167
                }
168
        }
169
        if($_POST['losslow']) {
170
                if (! is_numeric($_POST['losslow'])) {
171
                        $input_errors[] = gettext("The low loss watermark needs to be a numeric value.");
172
                }
173
        }
174
        if($_POST['losshigh']) {
175
                if (! is_numeric($_POST['losshigh'])) {
176
                        $input_errors[] = gettext("The high loss watermark needs to be a numeric value.");
177
                }
178
        }
179
180
        if(($_POST['latencylow']) && ($_POST['latencyhigh'])){
181
                if(($_POST['latencylow'] > $_POST['latencyhigh'])) {
182
                        $input_errors[] = gettext("The High latency watermark needs to be higher then the low latency watermark");
183
                }
184
        }
185
186
        if(($_POST['losslow']) && ($_POST['losshigh'])){
187
                if($_POST['losslow'] > $_POST['losshigh']) {
188
                        $input_errors[] = gettext("The High packet loss watermark needs to be higher then the low packet loss watermark");
189
                }
190
        }
191
	if($_POST['down']) {
192
                if (! is_numeric($_POST['down']) || $_POST['down'] < 1) {
193
                        $input_errors[] = gettext("The low latency watermark needs to be a numeric value.");
194
                }
195
        }
196
197 d173230c Seth Mos
	if (!$input_errors) {
198 7fa03a98 gnhb
		if (!($_POST['weight'] > 1 || $_POST['latencylow'] || $_POST['latencyhigh'] ||
199 c568e682 Ermal
		    $_POST['losslow'] || $_POST['losshigh'] || $_POST['down'] ||
200 7fa03a98 gnhb
		    $_POST['defaultgw'] || is_ipaddr($_POST['monitor']) || is_ipaddr($_POST['gateway']))) {
201
		/* Delete from config if gw is dynamic and user is not saving any additional gateway data that system doesn't know */
202 c568e682 Ermal
			if (isset($id) && $a_gateway_item[$id])
203
				unset($a_gateway_item[$id]);
204
			write_config();
205 d44d26c1 Ermal
			header("Location: system_gateways.php");
206
			exit;
207
		}
208
209
210 c6865c5e Ermal
		$reloadif = "";
211 d44d26c1 Ermal
		$gateway = array();
212
213
		if (empty($_POST['interface']))
214
			$gateway['interface'] = $pconfig['friendlyiface'];
215
		else
216 3befe730 Ermal
			$gateway['interface'] = $_POST['interface'];
217 d44d26c1 Ermal
		if (is_ipaddr($_POST['gateway']))
218
			$gateway['gateway'] = $_POST['gateway'];
219
		else
220
			$gateway['gateway'] = "dynamic";
221
		$gateway['name'] = $_POST['name'];
222
		$gateway['weight'] = $_POST['weight'];
223
		$gateway['descr'] = $_POST['descr'];
224
		if (is_ipaddr($_POST['monitor']))
225
			$gateway['monitor'] = $_POST['monitor'];
226
227
		if ($_POST['defaultgw'] == "yes" || $_POST['defaultgw'] == "on") {
228
			$i = 0;
229 a531d687 Ermal
			foreach($a_gateway_item as $gw) {
230 d44d26c1 Ermal
				unset($config['gateways']['gateway_item'][$i]['defaultgw']);
231 c6865c5e Ermal
				if ($gw['interface'] != $_POST['interface'] && $gw['defaultgw'])
232
					$reloadif = $gw['interface'];
233 d44d26c1 Ermal
				$i++;
234 bb849003 Ermal
			}
235 d44d26c1 Ermal
			$gateway['defaultgw'] = true;
236 124aee67 Chris Buechler
		}
237 d44d26c1 Ermal
238
		if ($_POST['latencylow'])
239
			$gateway['latencylow'] = $_POST['latencylow'];
240
		if ($_POST['latencyhigh'])
241
               		$gateway['latencyhigh'] = $_POST['latencyhigh'];
242
		if ($_POST['losslow'])
243
              			$gateway['losslow'] = $_POST['losslow'];
244
		if ($_POST['losshigh'])
245
               		$gateway['losshigh'] = $_POST['losshigh'];
246
		if ($_POST['down'])
247
               		$gateway['down'] = $_POST['down'];
248
249
		/* when saving the manual gateway we use the attribute which has the corresponding id */
250
		if (isset($id) && $a_gateway_item[$id])
251
			$a_gateway_item[$id] = $gateway;
252
		else
253
			$a_gateway_item[] = $gateway;
254
255 a368a026 Ermal Lu?i
		mark_subsystem_dirty('staticroutes');
256 d44d26c1 Ermal
	
257 d173230c Seth Mos
		write_config();
258 d44d26c1 Ermal
259 ad862220 Charlie
		if($_REQUEST['isAjax']) {
260
			echo $_POST['name'];
261
			exit;
262 c6865c5e Ermal
		} else if (!empty($reloadif))
263
			send_event("interface reconfigure {$reloadif}");
264 ad862220 Charlie
		
265 d173230c Seth Mos
		header("Location: system_gateways.php");
266
		exit;
267 ea939fc3 Ermal
	} else {
268 883c53c9 Ermal Lu?i
		$pconfig = $_POST;
269 ea939fc3 Ermal
		if (empty($_POST['friendlyiface']))
270
			$pconfig['friendlyiface'] = $_POST['interface'];
271
	}
272 d173230c Seth Mos
}
273
274 2328dcc5 Seth Mos
275 df152a88 Carlos Eduardo Ramos
$pgtitle = array(gettext("System"),gettext("Gateways"),gettext("Edit gateway"));
276 02ca24c9 jim-p
$statusurl = "status_gateways.php";
277
278 d173230c Seth Mos
include("head.inc");
279
280
?>
281
282
<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
283
<?php include("fbegin.inc"); ?>
284 883c53c9 Ermal Lu?i
<script language="JavaScript">
285 023920e7 Ermal
function show_advanced_gateway() {
286
        document.getElementById("showadvgatewaybox").innerHTML='';
287
        aodiv = document.getElementById('showgatewayadv');
288
        aodiv.style.display = "block";
289
}
290 883c53c9 Ermal Lu?i
</script>
291 d173230c Seth Mos
<?php if ($input_errors) print_input_errors($input_errors); ?>
292
            <form action="system_gateways_edit.php" method="post" name="iform" id="iform">
293 124aee67 Chris Buechler
	<?php
294 e9df5769 Seth Mos
295
	/* If this is a system gateway we need this var */
296 124aee67 Chris Buechler
	if(($pconfig['attribute'] == "system") || is_numeric($pconfig['attribute'])) {
297
		echo "<input type='hidden' name='attribute' id='attribute' value='{$pconfig['attribute']}' >\n";
298
	}
299 883c53c9 Ermal Lu?i
	echo "<input type='hidden' name='friendlyiface' id='friendlyiface' value='{$pconfig['friendlyiface']}' >\n";
300 124aee67 Chris Buechler
	?>
301 d173230c Seth Mos
              <table width="100%" border="0" cellpadding="6" cellspacing="0">
302 56d4e7fb Scott Ullrich
				<tr>
303 df152a88 Carlos Eduardo Ramos
					<td colspan="2" valign="top" class="listtopic"><?=gettext("Edit gateway"); ?></td>
304 56d4e7fb Scott Ullrich
				</tr>	
305 d173230c Seth Mos
                <tr> 
306 df152a88 Carlos Eduardo Ramos
                  <td width="22%" valign="top" class="vncellreq"><?=gettext("Interface"); ?></td>
307 d173230c Seth Mos
                  <td width="78%" class="vtable">
308 d44d26c1 Ermal
		 	<select name='interface' class='formselect' >
309 bb849003 Ermal
310 11d2be54 Ermal
		<?php 
311 883c53c9 Ermal Lu?i
                      	$interfaces = get_configured_interface_with_descr(false, true);
312
			foreach ($interfaces as $iface => $ifacename) {
313
				echo "<option value=\"{$iface}\"";
314
				if ($iface == $pconfig['friendlyiface'])
315
					echo " selected";
316
				echo ">" . htmlspecialchars($ifacename) . "</option>";
317
			}
318
			if (is_package_installed("openbgpd") == 1) {
319
				echo "<option value=\"bgpd\"";
320
				if ($pconfig['interface'] == "bgpd") 
321
					echo " selected";
322 df152a88 Carlos Eduardo Ramos
				echo ">" . gettext("Use BGPD") . "</option>";
323 883c53c9 Ermal Lu?i
			}
324
 		  ?>
325 d173230c Seth Mos
                    </select> <br>
326 df152a88 Carlos Eduardo Ramos
                    <span class="vexpl"><?=gettext("Choose which interface this gateway applies to."); ?></span></td>
327 d173230c Seth Mos
                </tr>
328
                <tr>
329 df152a88 Carlos Eduardo Ramos
                  <td width="22%" valign="top" class="vncellreq"><?=gettext("Name"); ?></td>
330 d173230c Seth Mos
                  <td width="78%" class="vtable"> 
331
                    <input name="name" type="text" class="formfld unknown" id="name" size="20" value="<?=htmlspecialchars($pconfig['name']);?>"> 
332 df152a88 Carlos Eduardo Ramos
                    <br> <span class="vexpl"><?=gettext("Gateway name"); ?></span></td>
333 d173230c Seth Mos
                </tr>
334
		<tr>
335 df152a88 Carlos Eduardo Ramos
                  <td width="22%" valign="top" class="vncellreq"><?=gettext("Gateway"); ?></td>
336 d173230c Seth Mos
                  <td width="78%" class="vtable"> 
337 d44d26c1 Ermal
                    <input name="gateway" type="text" class="formfld host" id="gateway" size="40" value="<?php if ($pconfig['dynamic']) echo "dynamic"; else echo $pconfig['gateway']; ?>">
338 df152a88 Carlos Eduardo Ramos
                    <br> <span class="vexpl"><?=gettext("Gateway IP address"); ?></span></td>
339 d173230c Seth Mos
                </tr>
340
		<tr>
341 df152a88 Carlos Eduardo Ramos
		  <td width="22%" valign="top" class="vncell"><?=gettext("Default Gateway"); ?></td>
342 d173230c Seth Mos
		  <td width="78%" class="vtable">
343 d44d26c1 Ermal
			<input name="defaultgw" type="checkbox" id="defaultgw" value="yes" <?php if ($pconfig['defaultgw'] == true) echo "checked"; ?> />
344 df152a88 Carlos Eduardo Ramos
			<strong><?=gettext("Default Gateway"); ?></strong><br />
345
			<?=gettext("This will select the above gateway as the default gateway"); ?>
346 d173230c Seth Mos
		  </td>
347
		</tr>
348
		<tr>
349 df152a88 Carlos Eduardo Ramos
		  <td width="22%" valign="top" class="vncell"><?=gettext("Monitor IP"); ?></td>
350 d173230c Seth Mos
		  <td width="78%" class="vtable">
351 616e1956 Seth Mos
			<?php
352 d44d26c1 Ermal
				if ($pconfig['gateway'] == $pconfig['monitor'])
353 616e1956 Seth Mos
					$monitor = "";
354 d44d26c1 Ermal
				else
355 616e1956 Seth Mos
					$monitor = htmlspecialchars($pconfig['monitor']);
356
			?>
357
			<input name="monitor" type="text" id="monitor" value="<?php echo $monitor; ?>" />
358 df152a88 Carlos Eduardo Ramos
			<strong><?=gettext("Alternative monitor IP"); ?></strong> <br />
359 e88ace75 Chris Buechler
			<?=gettext("Enter an alternative address here to be used to monitor the link. This is used for the " .
360 0e94685b Renato Botelho
			"quality RRD graphs as well as the load balancer entries. Use this if the gateway does not respond " .
361
			"to ICMP echo requests (pings)"); ?>.</strong>
362 d173230c Seth Mos
			<br />
363
		  </td>
364
		</tr>
365 5f53260a Ermal
		<tr>
366 023920e7 Ermal
		  <td width="22%" valign="top" class="vncell"><?=gettext("Advanced");?></td>
367 5f53260a Ermal
		  <td width="78%" class="vtable">
368 023920e7 Ermal
			<div id="showadvgatewaybox" <? if (!empty($pconfig['latencylow']) || !empty($pconfig['latencyhigh']) || !empty($pconfig['losslow']) || !empty($pconfig['losshigh']) || (isset($pconfig['weight']) && $pconfig['weight'] > 1)) echo "style='display:none'"; ?>>
369
				<input type="button" onClick="show_advanced_gateway()" value="Advanced"></input> - Show advanced option</a>
370
			</div>
371
			<div id="showgatewayadv" <? if (empty($pconfig['latencylow']) && empty($pconfig['latencyhigh']) && empty($pconfig['losslow']) && empty($pconfig['losshigh']) && (empty($pconfig['weight']) || $pconfig['weight'] == 1)) echo "style='display:none'"; ?>>
372
                        <table class="tabcont" width="100%" border="0" cellspacing="0" cellpadding="6">
373
			<tr>
374
                                <td width="22%" valign="top" class="vncellreq"><?=gettext("Weight");?></td>
375
                                <td width="78%" class="vtable">
376
					<select name='weight' class='formfldselect' id='weight'>
377
				<?php
378
					for ($i = 1; $i < 6; $i++) {
379
                                        	$selected = "";
380
                                        	if ($pconfig['weight'] == $i)
381
                                                	$selected = "selected";
382
                                        	echo "<option value='{$i}' {$selected} >{$i}</option>";
383
                                	}
384
				?>
385
					</select>
386
					<br /><?=gettext("Weight for this gateway when used in a Gateway Group.");?> <br />
387
		   		</td>
388
			</tr>
389
                        <tr>
390
                                <td width="22%" valign="top" class="vncellreq"><?=gettext("Latency thresholds");?></td>
391
                                <td width="78%" class="vtable">
392
                                <?=gettext("From");?>
393
                                    <input name="latencylow" type="text" class="formfld unknown" id="latencylow" size="2"
394
                                        value="<?=htmlspecialchars($pconfig['latencylow']);?>">
395
                                <?=gettext("To");?>
396
                                    <input name="latencyhigh" type="text" class="formfld unknown" id="latencyhigh" size="2"
397
                                        value="<?=htmlspecialchars($pconfig['latencyhigh']);?>">
398
                                    <br> <span class="vexpl"><?=gettext("These define the low and high water marks for latency in milliseconds.");?></span></td>
399
                                </td>
400
                        </tr>
401
                        <tr>
402
                                <td width="22%" valign="top" class="vncellreq"><?=gettext("Packet Loss thresholds");?></td>
403
                                <td width="78%" class="vtable">
404
                                <?=gettext("From");?>
405
                                    <input name="losslow" type="text" class="formfld unknown" id="losslow" size="2"
406
                                        value="<?=htmlspecialchars($pconfig['losslow']);?>">
407
                                <?=gettext("To");?>
408
                                    <input name="losshigh" type="text" class="formfld unknown" id="losshigh" size="2"
409
                                        value="<?=htmlspecialchars($pconfig['losshigh']);?>">
410
                                    <br> <span class="vexpl"><?=gettext("These define the low and high water marks for packet loss in %.");?></span></td>
411
                                </td>
412
                        </tr>
413
			<tr>
414
                                <td width="22%" valign="top" class="vncellreq"><?=gettext("Down");?></td>
415
                                <td width="78%" class="vtable">
416
                                    <input name="down" type="text" class="formfld unknown" id="down" size="2"
417
                                        value="<?=htmlspecialchars($pconfig['down']);?>">
418
                                    <br> <span class="vexpl"><?=gettext("This defines the down time for the alarm to fire, in seconds.");?></span></td>
419
                                </td>
420
                        </tr>
421
                        </table>
422
			</div>
423 5f53260a Ermal
		   </td>
424
		</tr>
425 d173230c Seth Mos
		<tr>
426 df152a88 Carlos Eduardo Ramos
                  <td width="22%" valign="top" class="vncell"><?=gettext("Description"); ?></td>
427 d173230c Seth Mos
                  <td width="78%" class="vtable"> 
428
                    <input name="descr" type="text" class="formfld unknown" id="descr" size="40" value="<?=htmlspecialchars($pconfig['descr']);?>">
429 0e94685b Renato Botelho
                    <br> <span class="vexpl"><?=gettext("You may enter a description here for your reference (not parsed)"); ?>.</span></td>
430 d173230c Seth Mos
                </tr>
431
                <tr>
432
                  <td width="22%" valign="top">&nbsp;</td>
433
                  <td width="78%"> 
434 bfb0b9dc Vinicius Coque
                    <input name="Submit" type="submit" class="formbtn" value="<?=gettext("Save");?>"> <input type="button" value="<?=gettext("Cancel");?>" class="formbtn"  onclick="history.back()">
435 d173230c Seth Mos
                    <?php if (isset($id) && $a_gateways[$id]): ?>
436
                    <input name="id" type="hidden" value="<?=$id;?>">
437
                    <?php endif; ?>
438
                  </td>
439
                </tr>
440
              </table>
441
</form>
442
<?php include("fend.inc"); ?>
443
<script language="JavaScript">
444 883c53c9 Ermal Lu?i
enable_change(document.iform.defaultgw);
445 d173230c Seth Mos
</script>
446
</body>
447
</html>