Merge remote branch 'mainline/master'

This commit is contained in:
Erik Fonnesbeck 2010-04-28 21:10:57 -06:00
commit 1364604bb5
11 changed files with 102 additions and 131 deletions

View File

@ -299,7 +299,7 @@ function return_gateways_array($disabled = false) {
$gateway['gateway'] = get_interface_gateway($ifname, $gateway['dynamic']);
$gateway['interface'] = get_real_interface($ifname);
$gateway['friendlyiface'] = $ifname;
$gateway['name'] = "{$ifname}";
$gateway['name'] = "{$friendly}_GW";
$gateway['attribute'] = "system";
/* Loopback dummy for dynamic interfaces without a IP */

View File

@ -245,51 +245,24 @@ function system_routing_configure() {
}
/* Enable fast routing, if enabled */
/* XXX: More checks need to be done for subsystems that are not compatibel with fast routing. */
if(isset($config['staticroutes']['enablefastrouting']) && !isset($config['ipsec']['enable']))
mwexec("/sbin/sysctl net.inet.ip.fastforwarding=1");
$route_str = exec_command("/usr/bin/netstat -rnf inet");
/* clear out old routes, if necessary */
if (file_exists("{$g['vardb_path']}/routes.db")) {
$fd = fopen("{$g['vardb_path']}/routes.db", "r");
if (!$fd) {
printf("Error: cannot open routes DB file in system_routing_configure().\n");
return 1;
}
while (!feof($fd)) {
$oldrt = trim(fgets($fd));
if (($oldrt) && (stristr($route_str, $oldrt)))
mwexec("/sbin/route delete " . escapeshellarg($oldrt));
}
fclose($fd);
unlink("{$g['vardb_path']}/routes.db");
}
if (false) {
/* if list */
$iflist = get_configured_interface_list();
$dont_remove_route = false;
foreach ($iflist as $ifent => $ifname) {
/*
* XXX: The value of this is really when this function can take
* an interface as parameter.
*/
/* do not process interfaces that will end up with gateways */
if (interface_has_gateway($ifent) ||
$config['interfaces'][$ifent]['ipaddr'] == "carpdev-dhcp") {
$dont_remove_route = true;
break;
$gatewayip = "";
$interfacegw = "";
/* tack on all the hard defined gateways as well */
if (is_array($config['gateways']['gateway_item'])) {
foreach ($config['gateways']['gateway_item'] as $gateway) {
if (isset($gateway['defaultgw'])) {
if ($gateway['gateway'] == "dynamic")
$gateway['gateway'] = get_interface_gateway($gateway['interface']);
$gatewayip = $gateway['gateway'];
$interfacegw = $gateway['interface'];
break;
}
}
}
if ($dont_remove_route == false) {
/* remove default route */
mwexec("/sbin/route delete default", true);
}
}
$dont_add_route = false;
/* if OLSRD is enabled, allow WAN to house DHCP. */
if($config['installedpackages']['olsrd']) {
@ -300,33 +273,15 @@ function system_routing_configure() {
}
}
}
if($dont_add_route == false) {
if(is_array($config['gateways']['gateway_item'])) {
foreach($config['gateways']['gateway_item'] as $gateway) {
if(isset($gateway['defaultgw'])) {
$gatewayip = $gateway['gateway'];
$interfacegw = $gateway['interface'];
/* This handles the case where a dynamic gateway is choosen as default. */
if (!is_ipaddr($gatewayip))
$gatewayip = get_interface_gateway($interfacegw);
break;
}
}
if(($interfacegw <> "bgpd") && (is_ipaddr($gatewayip))) {
preg_match("/default[ ]+([0-9].*?)[ ]+/i", $route_str, $elements);
if(trim($elements[1]) != "$gatewayip") {
mwexec("/sbin/route delete default " . escapeshellarg($gatewayip), true);
}
mwexec("/sbin/route add default " . escapeshellarg($gatewayip), true);
}
} else {
log_error("SYSTEM: We do not have a gateways array in our XML. Is this configuration damaged?");
/* adding gateway for 1.2-style configs without the new
gateway setup configured.
Force WAN to be default gateway because that is the
1.2 behavior.
*/
if (($interfacegw <> "bgpd") && (is_ipaddr($gatewayip)))
mwexec("/sbin/route delete default; /sbin/route add default " . escapeshellarg($gatewayip), true);
else {
/* Adding gateway for 1.2-style configs without the new
* gateway setup configured.
* Force WAN to be default gateway because that is the 1.2 behavior.
*/
log_error("SYSTEM: We do not have a default gateway in our config. Is this configuration damaged?");
if (is_ipaddr($config['interfaces']['wan']['gateway'])) {
$gatewayip = $config['interfaces']['wan']['gateway'];
mwexec("/sbin/route add default " . escapeshellarg($gatewayip), true);
@ -335,43 +290,35 @@ function system_routing_configure() {
}
if (is_array($config['staticroutes']['route'])) {
$fd = fopen("{$g['vardb_path']}/routes.db", "w");
if (!$fd) {
printf("Error: cannot open routes DB file in system_routing_configure().\n");
return 1;
}
$route_str = array();
exec("/usr/bin/netstat -rnf inet | /usr/bin/cut -d \" \" -f 1", $route_str);
$route_str = array_flip($route_str);
$gateways_arr = return_gateways_array();
foreach ($config['staticroutes']['route'] as $rtent) {
unset($gatewayip);
unset($interfacegw);
if(is_array($config['gateways']['gateway_item'])) {
foreach($config['gateways']['gateway_item'] as $gateway) {
if($rtent['gateway'] == $gateway['name']) {
$gatewayip = $gateway['gateway'];
$interfacegw = $gateway['interface'];
/* This handles the case where a dynamic gateway is choosen. */
if (!is_ipaddr($gatewayip))
$gatewayip = get_interface_gateway($interfacegw);
break;
}
}
}
if((is_ipaddr($rtent['gateway'])) && empty($gatewayip)) {
$gatewayip = "";
if (isset($gateways_arr[$rtent['gateway']])) {
$gatewayip = $gateways_arr[$rtent['gateway']]['gateway'];
$interfacegw = get_real_interface($rtent['interface']);
} else if (is_ipaddr($rtent['gateway'])) {
$gatewayip = $rtent['gateway'];
$interfacegw = $rtent['interface'];
}
if((isset($rtent['interfacegateway'])) && (! is_ipaddr($gatewayip))) {
mwexec("/sbin/route add " . escapeshellarg($rtent['network']) .
" -iface " . escapeshellarg(convert_friendly_interface_to_real_interface_name($interfacegw)));
} else {
mwexec("/sbin/route add " . escapeshellarg($rtent['network']) .
" " . escapeshellarg($gatewayip));
log_error("Static Routes: Gateway ip could not be found for {$rtent['network']}");
continue;
}
$action = "add";
if (isset($route_str[$rtent['network']]))
$action = "change";
if (is_ipaddr($gatewayip)) {
mwexec("/sbin/route {$action} " . escapeshellarg($rtent['network']) .
" " . escapeshellarg($gatewayip));
} else if (!empty($interfacegw)) {
mwexec("/sbin/route {$action} " . escapeshellarg($rtent['network']) .
" -iface " . escapeshellarg($interfacegw));
}
/* record route so it can be easily removed later (if necessary) */
fwrite($fd, $rtent['network'] . "\n");
}
fclose($fd);
}
return 0;

View File

@ -921,9 +921,9 @@ function upgrade_046_to_047() {
$ph1ent['myid_type'] = "fqdn";
$ph1ent['myid_data'] = $tunnel['p1']['myident']['fqdn'];
}
if (isset($tunnel['p1']['myident']['user_fqdn'])) {
if (isset($tunnel['p1']['myident']['ufqdn'])) {
$ph1ent['myid_type'] = "user_fqdn";
$ph1ent['myid_data'] = $tunnel['p1']['myident']['user_fqdn'];
$ph1ent['myid_data'] = $tunnel['p1']['myident']['ufqdn'];
}
if (isset($tunnel['p1']['myident']['asn1dn'])) {
$ph1ent['myid_type'] = "asn1dn";
@ -1343,7 +1343,7 @@ function upgrade_051_to_052() {
$server['tunnel_network'] = $server['addresspool'];
unset($server['addresspool']);
if (isset($server['use_lzo'])) {
$server['compress'] = true;
$server['compression'] = "on";
unset($server['use_lzo']);
}
if ($server['nopool'])
@ -1439,7 +1439,7 @@ function upgrade_051_to_052() {
$client['proxy_addr'] = $client['poxy_hostname'];
unset($client['proxy_addr']);
if (isset($client['use_lzo'])) {
$client['compress'] = true;
$client['compression'] = "on";
unset($client['use_lzo']);
}
$client['resolve_retry'] = $client['infiniteresolvretry'];

View File

@ -728,7 +728,7 @@ function display_row($trc, $value, $fieldname, $type, $rowhelper, $size) {
} else {
$source_value = $opt[$rowhelper['value']];
}
if($opt['value'] == $value)
if($source_value == $value)
$selected = " SELECTED";
$text .= "<option value='" . $source_value . "'" . $selected . ">" . $source_name . "</option>";
echo "<option value='" . $source_value . "'" . $selected . ">" . $source_name . "</option>\n";

View File

@ -59,6 +59,7 @@ $pconfig['disablenatreflection'] = $config['system']['disablenatreflection'];
$pconfig['reflectiontimeout'] = $config['system']['reflectiontimeout'];
$pconfig['bypassstaticroutes'] = isset($config['filter']['bypassstaticroutes']);
$pconfig['disablescrub'] = isset($config['system']['disablescrub']);
$pconfig['tftpinterface'] = $config['system']['tftpinterface'];
if ($_POST) {
@ -321,7 +322,7 @@ function update_description(itemnum) {
<option value="<?=$ifent;?>" <?php if (stristr($pconfig['tftpinterface'], $ifent)) echo "selected"; ?>><?=gettext($ifdesc);?></option>
<?php endforeach; ?>
</select>
<strong>Choose the interfaces where you want TFTP proxy help to be enabled.</strong>
<strong>Choose the interfaces where you want TFTP proxy helper to be enabled.</strong>
</td>
</tr>
<tr>

View File

@ -47,11 +47,8 @@ require_once("shaper.inc");
if (!is_array($config['staticroutes']['route']))
$config['staticroutes']['route'] = array();
if (!is_array($config['gateways']['gateway_item']))
$config['gateways']['gateway_item'] = array();
$a_routes = &$config['staticroutes']['route'];
$a_gateways = &$config['gateways']['gateway_item'];
$a_gateways = return_gateways_array(true);
$changedesc = "Static Routes: ";
if ($_POST) {
@ -92,6 +89,7 @@ if ($_POST) {
if ($_GET['act'] == "del") {
if ($a_routes[$_GET['id']]) {
$changedesc .= "removed route to " . $a_routes[$_GET['id']['route']];
mwexec("/sbin/route delete " . escapeshellarg($a_routes[$_GET['id']]['network']));
unset($a_routes[$_GET['id']]);
write_config($changedesc);
mark_subsystem_dirty('staticroutes');
@ -160,17 +158,12 @@ include("head.inc");
</td>
<td class="listr" ondblclick="document.location='system_routes_edit.php?id=<?=$i;?>';">
<?php
echo $route['gateway'] . " ";
echo $a_gateways[$route['gateway']]['name'] . " ";
?>
</td>
<td class="listr" ondblclick="document.location='system_routes_edit.php?id=<?=$i;?>';">
<?php
foreach($a_gateways as $gateway) {
if($gateway['name'] == $route['gateway']) {
echo strtoupper($gateway['interface']) . " ";
}
}
echo convert_friendly_interface_to_friendly_descr($a_gateways[$route['gateway']]['friendlyiface']) . " ";
?>
</td>
<td class="listbg" ondblclick="document.location='system_routes_edit.php?id=<?=$i;?>';">

View File

@ -57,11 +57,9 @@ require("guiconfig.inc");
if (!is_array($config['staticroutes']['route']))
$config['staticroutes']['route'] = array();
if (!is_array($config['gateways']['gateway_item']))
$config['gateways']['gateway_item'] = array();
$a_routes = &$config['staticroutes']['route'];
$a_gateways = &$config['gateways']['gateway_item'];
$a_gateways = return_gateways_array(true);
$id = $_GET['id'];
if (isset($_POST['id']))
@ -99,13 +97,7 @@ if ($_POST) {
$input_errors[] = "A valid destination network bit count must be specified.";
}
if ($_POST['gateway']) {
$match = false;
foreach($a_gateways as $gateway) {
if(in_array($_POST['gateway'], $gateway)) {
$match = true;
}
}
if(!$match)
if (!isset($a_gateways[$_POST['gateway']]))
$input_errors[] = "A valid gateway must be specified.";
}
@ -174,11 +166,19 @@ include("head.inc");
<td width="78%" class="vtable">
<select name="gateway" id="gateway" class="formselect">
<?php
foreach ($a_gateways as $gateway): ?>
<option value="<?=$gateway['name'];?>" <?php if ($gateway['name'] == $pconfig['gateway']) echo "selected"; ?>>
<?=htmlspecialchars($gateway['name']);?>
</option>
<?php endforeach; ?>
foreach ($a_gateways as $gateway) {
if ($gateway['attribute'] == "system") {
echo "<option value='{$gateway['friendlyiface']}' ";
if ($gateway['friendlyiface'] == $pconfig['gateway'])
echo "selected";
} else {
echo "<option value='{$gateway['name']}' ";
if ($gateway['name'] == $pconfig['gateway'])
echo "selected";
}
echo ">" . htmlspecialchars($gateway['name']) . "</option>\n";
}
?>
</select> <br />
<div id='addgwbox'>
Choose which gateway this route applies to or <a OnClick="show_add_gateway();" href="#">add a new one</a>.

View File

@ -125,7 +125,7 @@ if(!$pconfig['backend'])
<td width="78%" class="vtable">
<input name="session_timeout" id="session_timeout" type="text" size="8" value="<?=htmlspecialchars($pconfig['session_timeout']);?>" />
<br />
<?=gettext("Time in minutes to expire idle management sessions. The default is 4 hours (240 minutes). <br/> 0 means to never expire sessions. NOTE: This is a security risk!");?><br />
<?=gettext("Time in minutes to expire idle management sessions. The default is 4 hours (240 minutes). <br/> Enter 0 to never expire sessions. NOTE: This is a security risk!");?><br />
</td>
</tr>
<tr>

View File

@ -112,6 +112,7 @@ if($_GET['act']=="edit"){
$pconfig['passtos'] = $a_server[$id]['passtos'];
$pconfig['client2client'] = $a_server[$id]['client2client'];
$pconfig['dynamic_ip'] = $a_server[$id]['dynamic_ip'];
$pconfig['pool_enable'] = $a_server[$id]['pool_enable'];
$pconfig['dns_domain'] = $a_server[$id]['dns_domain'];
@ -299,6 +300,7 @@ if ($_POST) {
$server['passtos'] = $pconfig['passtos'];
$server['client2client'] = $pconfig['client2client'];
$server['dynamic_ip'] = $pconfig['dynamic_ip'];
$server['pool_enable'] = $pconfig['pool_enable'];
if ($pconfig['dns_domain_enable'])
@ -905,6 +907,24 @@ function netbios_change() {
<tr>
<td colspan="2" valign="top" class="listtopic">Client Settings</td>
</tr>
<tr>
<td width="22%" valign="top" class="vncell">Dynamic IP</td>
<td width="78%" class="vtable">
<table border="0" cellpadding="2" cellspacing="0">
<tr>
<td>
<?php set_checked($pconfig['dynamic_ip'],$chk); ?>
<input name="dynamic_ip" type="checkbox" id="dynamic_ip" value="yes" <?=$chk;?>">
</td>
<td>
<span class="vexpl">
Allow connected clients to retain their connections if their IP address changes.<br>
</span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="22%" valign="top" class="vncell">Address Pool</td>
<td width="78%" class="vtable">

View File

@ -538,6 +538,8 @@ function step12_submitphpaction() {
$server['passtos'] = $pconfig['step10']['tos'];
if (isset($pconfig['step10']['interclient']))
$server['client2client'] = $pconfig['step10']['interclient'];
if (isset($pconfig['step10']['dynip']))
$server['dynamic_ip'] = $pconfig['step10']['dynip'];
if (isset($pconfig['step10']['addrpool']))
$server['pool_enable'] = $pconfig['step10']['addrpool'];
if (isset($pconfig['step10']['defaultdomain']))

View File

@ -756,6 +756,14 @@
<type>listtopic</type>
<name>Client Settings</name>
</field>
<field>
<displayname>Dynamic IP</displayname>
<name>dynip</name>
<type>checkbox</type>
<value>on</value>
<description>Allow connected clients to retain their connections if their IP address changes.</description>
<bindstofield>ovpnserver->step10->dynip</bindstofield>
</field>
<field>
<displayname>Address Pool</displayname>
<name>addrpool</name>