summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBill Marquette <billm@pfsense.org>2005-07-13 03:09:18 +0000
committerBill Marquette <billm@pfsense.org>2005-07-13 03:09:18 +0000
commit1425e067d6db9b41eafe67070742e3b466178053 (patch)
treec6996ad986ab75ecba8c3f1eb815134202bba875
parentaca8110ae9f52c81bc88e762fbaf9cb8f2d8d2ca (diff)
downloadpfsense-1425e067d6db9b41eafe67070742e3b466178053.zip
pfsense-1425e067d6db9b41eafe67070742e3b466178053.tar.gz
Merge in virtual IP code
This changeset does the following: merges proxy arp and carp setup menus removes proxy arp menu from left side upgrades config file from 1.7 to 1.8 moves existing carp virtual IP and proxy arp config to new <virtualip> tag removes server NAT (why duplicate work?)
-rw-r--r--etc/inc/config.inc48
-rw-r--r--etc/inc/globals.inc2
-rw-r--r--etc/inc/interfaces.inc87
-rw-r--r--etc/inc/services.inc26
-rw-r--r--etc/inc/xmlparse.inc3
-rwxr-xr-xusr/local/www/carp_status.php26
-rwxr-xr-xusr/local/www/fbegin.inc4
-rwxr-xr-xusr/local/www/firewall_nat.php9
-rwxr-xr-xusr/local/www/firewall_nat_1to1.php11
-rwxr-xr-xusr/local/www/firewall_nat_1to1_edit.php10
-rwxr-xr-xusr/local/www/firewall_nat_edit.php9
-rwxr-xr-xusr/local/www/firewall_nat_out.php11
-rwxr-xr-xusr/local/www/firewall_nat_server.php2
-rwxr-xr-xusr/local/www/guiconfig.inc3
14 files changed, 152 insertions, 99 deletions
diff --git a/etc/inc/config.inc b/etc/inc/config.inc
index 940d779..e802a93 100644
--- a/etc/inc/config.inc
+++ b/etc/inc/config.inc
@@ -600,6 +600,54 @@ function convert_config() {
$config['shaper']['enable'] = FALSE;
$config['version'] = "1.7";
}
+ /* Convert 1.7 -> 1.8 */
+ if ($config['version'] == "1.7") {
+ if(isset($config['proxyarp']) && is_array($config['proxyarp']['proxyarpnet'])) {
+ $proxyarp = &$config['proxyarp']['proxyarpnet'];
+ foreach($proxyarp as $arpent){
+ $vip = array();
+ $vip['mode'] = "proxyarp";
+ $vip['interface'] = $arpent['interface'];
+ $vip['descr'] = $arpent['descr'];
+ if (isset($arpent['range'])) {
+ $vip['range'] = $arpent['range'];
+ $vip['type'] = "range";
+ } else {
+ $subnet = explode('/', $arpent['network']);
+ $vip['subnet'] = $subnet[0];
+ if (isset($subnet[1])) {
+ $vip['subnet_bits'] = $subnet[1];
+ $vip['type'] = "network";
+ } else {
+ $vip['subnet_bits'] = "32";
+ $vip['type'] = "single";
+ }
+ }
+ $config['virtualip']['vip'][] = $vip;
+ }
+ unset($config['proxyarp']);
+ }
+ if(isset($config['installedpackages']) && isset($config['installedpackages']['carp']) && is_array($config['installedpackages']['carp']['config'])) {
+ $carp = &$config['installedpackages']['carp']['config'];
+ foreach($carp as $carpent){
+ $vip = array();
+ $vip['mode'] = "carp";
+ $vip['interface'] = "AUTO";
+ $vip['descr'] = "CARP vhid {$carpent['vhid']}";
+ $vip['type'] = "single";
+ $vip['vhid'] = $carpent['vhid'];
+ $vip['advskew'] = $carpent['advskew'];
+ $vip['password'] = $carpent['password'];
+ $vip['subnet'] = $carpent['ipaddress'];
+ $vip['subnet_bits'] = "32";
+ $config['virtualip']['vip'][] = $vip;
+ }
+ unset($config['installedpackages']['carp']);
+ }
+
+ $config['version'] = "1.8";
+ }
+
if ($prev_version != $config['version'])
write_config("Upgraded config version level from {$prev_version} to {$config['version']}");
diff --git a/etc/inc/globals.inc b/etc/inc/globals.inc
index cb43bf1..d0b9803 100644
--- a/etc/inc/globals.inc
+++ b/etc/inc/globals.inc
@@ -50,7 +50,7 @@ $g = array(
"n_pptp_units" => 16, /* this value can be overriden in pptp->n_pptp_units */
"pptp_subnet" => 28, /* this value can be overriden in pptp->pptp_subnet */
"debug" => false,
- "latest_config" => "1.7",
+ "latest_config" => "1.8",
"nopkg_platforms" => array("cdrom"),
"nopccard_platforms" => array("wrap", "net48xx"),
"xmlrpcbaseurl" => "www.pfsense.com",
diff --git a/etc/inc/interfaces.inc b/etc/inc/interfaces.inc
index 8d760df..0efdac6 100644
--- a/etc/inc/interfaces.inc
+++ b/etc/inc/interfaces.inc
@@ -254,49 +254,54 @@ function interfaces_carp_configure() {
unlink_if_exists("/usr/local/pkg/pf/carp_rules.sh");
$carp_instances_counter = 0;
$pfsync_instances_counter = 0;
- if($config['installedpackages']['carpsettings']['config'] != "") {
- foreach($config['installedpackages']['carpsettings']['config'] as $carp)
- if($carp['pfsyncenabled'] != "") {
- if($carp['premption'] != "")
- mwexec("/sbin/sysctl net.inet.carp.preempt=1");
- if($carp['balancing'] != "")
- mwexec("/sbin/sysctl net.inet.arpbalance=1");
- $carp_sync_int = convert_friendly_interface_to_real_interface_name($carp['pfsyncinterface']);
- mwexec("/sbin/ifconfig pfsync0 create");
- mwexec("/sbin/ifconfig pfsync0 syncdev " . $carp_sync_int);
- mwexec("/sbin/ifconfig pfsync0 syncif " . $carp_sync_int);
- mwexec("/sbin/ifconfig {$carp_sync_int} up");
- mwexec("/sbin/ifconfig pfsync0 up");
- if($g['booting']) {
- /* install rules to alllow pfsync to sync up during boot
- * carp interfaces will remain down until the bootup sequence finishes
- */
- exec("echo pass quick proto carp all keep state > /tmp/rules.boot");
- exec("echo pass quick proto pfsync all >> /tmp/rules.boot");
- exec("echo pass out proto { tcp, udp } from any to any port 53 keep state >> /tmp/rules.boot");
- exec("/sbin/pfctl -f /tmp/rules.boot");
+ if (is_array($config['virtualip']['vip'])) {
+ if(is_array($config['installedpackages']['carpsettings']['config'])) {
+ foreach($config['installedpackages']['carpsettings']['config'] as $carp)
+ if($carp['pfsyncenabled'] != "") {
+ if($carp['premption'] != "")
+ mwexec("/sbin/sysctl net.inet.carp.preempt=1");
+ if($carp['balancing'] != "")
+ mwexec("/sbin/sysctl net.inet.arpbalance=1");
+ $carp_sync_int = convert_friendly_interface_to_real_interface_name($carp['pfsyncinterface']);
+ mwexec("/sbin/ifconfig pfsync0 create");
+ mwexec("/sbin/ifconfig pfsync0 syncdev " . $carp_sync_int);
+ mwexec("/sbin/ifconfig pfsync0 syncif " . $carp_sync_int);
+ mwexec("/sbin/ifconfig {$carp_sync_int} up");
+ mwexec("/sbin/ifconfig pfsync0 up");
+ if($g['booting']) {
+ /* install rules to alllow pfsync to sync up during boot
+ * carp interfaces will remain down until the bootup sequence finishes
+ */
+ exec("echo pass quick proto carp all keep state > /tmp/rules.boot");
+ exec("echo pass quick proto pfsync all >> /tmp/rules.boot");
+ exec("echo pass out proto { tcp, udp } from any to any port 53 keep state >> /tmp/rules.boot");
+ exec("/sbin/pfctl -f /tmp/rules.boot");
+ }
+ $pfsync_instances_counter++;
}
- $pfsync_instances_counter++;
}
- }
- if($config['installedpackages']['carp']['config'] != "") {
- foreach($config['installedpackages']['carp']['config'] as $carp) {
- /*
- * create the carp interface
- */
- mwexec("/sbin/ifconfig carp" . $carp_instances_counter . " create");
- mwexec("/sbin/ifconfig carp" . $carp_instances_counter . " down");
- $broadcast_address = gen_subnet_max($carp['ipaddress'], $carp['netmask']);
- if($carp['password'] != "") {
- $password = " pass " . $carp['password'];
- }
- $carpdev = "";
- if($carp['interface'] <> "AUTO" and $carp['interface'] <> "") {
- $ci = filter_opt_interface_to_real($carp['interface']);
- $carpdev = " carpdev {$ci} ";
+ $viparr = &$config['virtualip']['vip'];
+ foreach ($viparr as $vip) {
+ if ($vip['mode'] == "carp") {
+ /*
+ * create the carp interface
+ */
+ mwexec("/sbin/ifconfig carp" . $carp_instances_counter . " create");
+ mwexec("/sbin/ifconfig carp" . $carp_instances_counter . " down");
+ $broadcast_address = gen_subnet_max($vip['subnet'], $vip['subnet_bits']);
+ if($vip['password'] != "") {
+ $password = " pass " . $vip['password'];
+ }
+ /* XXX: billm - carpdev not in our build?
+ $carpdev = "";
+ if(isset($vip['interface']) && ($vip['interface'] != "AUTO" && $vip['interface'] != "")) {
+ $ci = filter_opt_interface_to_real($vip['interface']);
+ $carpdev = " carpdev {$ci} ";
+ }
+ */
+ mwexec("/sbin/ifconfig carp" . $carp_instances_counter . " " . $vip['subnet'] . "/" . $vip['subnet_bits'] . " broadcast " . $broadcast_address . " vhid " . $vip['vhid'] . "{$carpdev} advskew " . $vip['advskew'] . $password);
+ $carp_instances_counter++;
}
- mwexec("/sbin/ifconfig carp" . $carp_instances_counter . " " . $carp['ipaddress'] . "/" . $carp['netmask'] . " broadcast " . $broadcast_address . " vhid " . $carp['vhid'] . "{$carpdev} advskew " . $carp['advskew'] . $password);
- $carp_instances_counter++;
}
}
unmute_kernel_msgs();
@@ -903,4 +908,4 @@ function get_current_wan_address() {
}
}
-?> \ No newline at end of file
+?>
diff --git a/etc/inc/services.inc b/etc/inc/services.inc
index 45a61b8..4d45c5c 100644
--- a/etc/inc/services.inc
+++ b/etc/inc/services.inc
@@ -557,23 +557,25 @@ function services_proxyarp_configure() {
/* kill any running choparp */
killbyname("choparp");
- if (is_array($config['proxyarp']) && count($config['proxyarp'])) {
-
+ if (isset($config['virtualip']) && is_array($config['virtualip']['vip'])) {
$paa = array();
/* group by interface */
- foreach ($config['proxyarp']['proxyarpnet'] as $paent) {
- if ($paent['interface'])
- $if = $paent['interface'];
- else
- $if = "wan";
+ foreach ($config['virtualip']['vip'] as $vipent) {
+ if ($vipent['mode'] === "proxyarp") {
+ if ($vipent['interface'])
+ $if = $vipent['interface'];
+ else
+ $if = "wan";
- if (!is_array($paa[$if]))
- $paa[$if] = array();
+ if (!is_array($paa[$if]))
+ $paa[$if] = array();
- $paa[$if][] = $paent;
+ $paa[$if][] = $vipent;
+ }
}
+ if (count($paa))
foreach ($paa as $paif => $paents) {
if ($paif == "wan" && !(is_ipaddr($config['interfaces']['wan']['ipaddr']) ||
($config['interfaces']['wan']['ipaddr'] == "dhcp") ||
@@ -584,8 +586,8 @@ function services_proxyarp_configure() {
foreach ($paents as $paent) {
- if (isset($paent['network']))
- $args .= " " . escapeshellarg($paent['network']);
+ if (isset($paent['subnet']))
+ $args .= " " . escapeshellarg("{$paent['subnet']}/{$paent['subnet_bits']}");
else if (isset($paent['range']))
$args .= " " . escapeshellarg($paent['range']['from'] . "-" .
$paent['range']['to']);
diff --git a/etc/inc/xmlparse.inc b/etc/inc/xmlparse.inc
index 9d0e7ce..bb16495 100644
--- a/etc/inc/xmlparse.inc
+++ b/etc/inc/xmlparse.inc
@@ -35,7 +35,8 @@ function listtags() {
$ret = explode(" ", "cacert row config package columnitem option item fieldname field rule user key subqueue " .
"dnsserver winsserver encryption-algorithm-option hash-algorithm-option hosts tunnel " .
"onetoone staticmap route alias queue shellcmd earlyshellcmd mobilekey " .
- "service servernat proxyarpnet passthrumac allowedip wolentry vlan menu domainoverrides");
+ "service servernat proxyarpnet passthrumac allowedip wolentry vlan menu domainoverrides " .
+ "vip");
return $ret;
}
diff --git a/usr/local/www/carp_status.php b/usr/local/www/carp_status.php
index 73cc020..33aeca4 100755
--- a/usr/local/www/carp_status.php
+++ b/usr/local/www/carp_status.php
@@ -90,13 +90,18 @@ include("fbegin.inc");
echo "<input type=\"submit\" name=\"disablecarp\" id=\"disablecarp\" value=\"Disable Carp\">";
}
-if(!is_array($config['installedpackages']['carp']['config'])) {
+if(is_array($config['virtualip']['vip'])) {
+ foreach($config['virtualip']['vip'] as $carp) {
+ if ($carp['mode'] == "carp") $carpcount++;
+ }
+ if ($carpcount == 0) {
echo "</td></tr></table><center><br>Could not locate any defined CARP interfaces.";
echo "</center>";
include("fend.inc");
echo "</body></html>";
exit;
+ }
}
?>
@@ -111,21 +116,17 @@ if(!is_array($config['installedpackages']['carp']['config'])) {
</tr>
<?php
-if($config['installedpackages']['carp']['config'] <> "")
+if(is_array($config['virtualip']['vip'])) {
$carpint=0;
- foreach($config['installedpackages']['carp']['config'] as $carp) {
- $ipaddress = $carp['ipaddress'];
- $premption = $carp['premption'];
+ foreach($config['virtualip']['vip'] as $carp) {
+ if ($carp['mode'] != "carp") continue;
+ $ipaddress = $carp['subnet'];
$password = $carp['password'];
- $netmask = $carp['netmask'];
+ $netmask = $carp['subnet_bits'];
$vhid = $carp['vhid'];
$advskew = $carp['advskew'];
- $pfsync = $carp['pfsync'];
- $synciface = $carp['synciface'];
$carp_int = find_carp_interface($ipaddress);
$status = get_carp_interface_status($carp_int);
- if(isset($carp['balancing'])) $balancing = "true"; else $balancing = "false";
- if(isset($carp['premption'])) $premption = "true"; else $premption = "false";
echo "<tr>";
$align = "valign='middle'";
if($carp_enabled == false) {
@@ -147,7 +148,7 @@ if($config['installedpackages']['carp']['config'] <> "")
echo "</tr>";
$carpint++;
}
-
+}
?>
<tr><td>
<center>
@@ -171,5 +172,4 @@ Rounded("div#mainlevel","bl br","#FFF","#eeeeee","smooth");
</script>
</body>
-</html>
-
+</html> \ No newline at end of file
diff --git a/usr/local/www/fbegin.inc b/usr/local/www/fbegin.inc
index d3456f9..8f85ea4 100755
--- a/usr/local/www/fbegin.inc
+++ b/usr/local/www/fbegin.inc
@@ -108,6 +108,7 @@ function showhide_black(tspan, tri) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="/firewall_nat.php" class="navlnk">NAT</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="/firewall_rules.php" class="navlnk">Rules</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="/firewall_shaper.php" class="navlnk">Traffic Shaper</a><br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="/firewall_virtual_ip.php" class="navlnk">Virtual IPs</a><br>
<?php echo return_ext_menu("Firewall"); ?>
<strong>Services</strong><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="/services_captiveportal.php" class="navlnk">Captive portal</a><br>
@@ -116,7 +117,6 @@ function showhide_black(tspan, tri) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="/services_dhcp.php" class="navlnk">DHCP server</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="/services_dyndns.php" class="navlnk">Dynamic DNS</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="/services_snmp.php" class="navlnk">SNMP</a><br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="/services_proxyarp.php" class="navlnk">Proxy ARP</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="/services_wol.php" class="navlnk">Wake on LAN</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="/carp_status.php" class="navlnk">CARP (failover)</a><br>
<?php echo return_ext_menu("Services"); ?>
@@ -208,4 +208,4 @@ function showhide_black(tspan, tri) {
echo "</div>";
}
-?> \ No newline at end of file
+?>
diff --git a/usr/local/www/firewall_nat.php b/usr/local/www/firewall_nat.php
index 01d127d..b2e1c2f 100755
--- a/usr/local/www/firewall_nat.php
+++ b/usr/local/www/firewall_nat.php
@@ -143,11 +143,10 @@ include("head.inc");
<tr><td>
<?php
$tab_array = array();
- $tab_array[0] = array("Port Forward", true, "firewall_nat.php");
- $tab_array[1] = array("NAT Addresses", false, "firewall_nat_server.php");
- $tab_array[2] = array("1:1", false, "firewall_nat_1to1.php");
- $tab_array[3] = array("Outbound", false, "firewall_nat_out.php");
- $tab_array[4] = array("Outbound Load Balancing", false, "firewall_nat_out_load_balancing.php");
+ $tab_array[] = array("Port Forward", true, "firewall_nat.php");
+ $tab_array[] = array("1:1", false, "firewall_nat_1to1.php");
+ $tab_array[] = array("Outbound", false, "firewall_nat_out.php");
+ $tab_array[] = array("Outbound Load Balancing", false, "firewall_nat_out_load_balancing.php");
display_top_tabs($tab_array);
?>
</td></tr>
diff --git a/usr/local/www/firewall_nat_1to1.php b/usr/local/www/firewall_nat_1to1.php
index 9147eb4..3c77bb8 100755
--- a/usr/local/www/firewall_nat_1to1.php
+++ b/usr/local/www/firewall_nat_1to1.php
@@ -85,11 +85,10 @@ include("head.inc");
<table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr><td>
<?php
$tab_array = array();
- $tab_array[0] = array("Port Forward", false, "firewall_nat.php");
- $tab_array[1] = array("NAT Addresses", false, "firewall_nat_server.php");
- $tab_array[2] = array("1:1", true, "firewall_nat_1to1.php");
- $tab_array[3] = array("Outbound", false, "firewall_nat_out.php");
- $tab_array[4] = array("Outbound Load Balancing", false, "firewall_nat_out_load_balancing.php");
+ $tab_array[] = array("Port Forward", false, "firewall_nat.php");
+ $tab_array[] = array("1:1", true, "firewall_nat_1to1.php");
+ $tab_array[] = array("Outbound", false, "firewall_nat_out.php");
+ $tab_array[] = array("Outbound Load Balancing", false, "firewall_nat_out_load_balancing.php");
display_top_tabs($tab_array);
?>
</td></tr>
@@ -148,7 +147,7 @@ include("head.inc");
<tr>
<td colspan="4">
<p><span class="vexpl"><span class="red"><strong>Note:<br>
- </strong></span>Depending on the way your WAN connection is setup, you may also need <a href="services_proxyarp.php">proxy ARP</a>.</span></p>
+ </strong></span>Depending on the way your WAN connection is setup, you may also need a <a href="firewall_virtual_ip.php">Virtual IP</a>.</span></p>
</td>
<tr>
</table>
diff --git a/usr/local/www/firewall_nat_1to1_edit.php b/usr/local/www/firewall_nat_1to1_edit.php
index 26fed2a..66f0ccd 100755
--- a/usr/local/www/firewall_nat_1to1_edit.php
+++ b/usr/local/www/firewall_nat_1to1_edit.php
@@ -96,12 +96,12 @@ if ($_POST) {
}
}
- /* check for overlaps with server NAT */
- if (is_array($config['nat']['servernat'])) {
- foreach ($config['nat']['servernat'] as $natent) {
+ /* check for overlaps with Virtual IPs */
+ if (is_array($config['virtualip']['vip'])) {
+ foreach ($config['virtualip']['vip'] as $vipent) {
if (check_subnets_overlap($_POST['external'], $_POST['subnet'],
- $natent['ipaddr'], 32)) {
- $input_errors[] = "A server NAT entry overlaps with the specified external subnet.";
+ $vipent['subnet'], 32)) {
+ $input_errors[] = "Virtual IP entry overlaps with the specified external subnet.";
break;
}
}
diff --git a/usr/local/www/firewall_nat_edit.php b/usr/local/www/firewall_nat_edit.php
index 7ca4a14..7458010e 100755
--- a/usr/local/www/firewall_nat_edit.php
+++ b/usr/local/www/firewall_nat_edit.php
@@ -253,16 +253,15 @@ function ext_rep_change() {
<select name="extaddr" class="formfld">
<option value="" <?php if (!$pconfig['extaddr']) echo "selected"; ?>>Interface address</option>
<?php
- if (is_array($config['nat']['servernat'])):
- foreach ($config['nat']['servernat'] as $sn): ?>
- <option value="<?=$sn['ipaddr'];?>" <?php if ($sn['ipaddr'] == $pconfig['extaddr']) echo "selected"; ?>><?=htmlspecialchars("{$sn['ipaddr']} ({$sn['descr']})");?></option>
+ if (is_array($config['virtualip']['vip'])):
+ foreach ($config['virtualip']['vip'] as $sn): ?>
+ <option value="<?=$sn['subnet'];?>" <?php if ($sn['subnet'] == $pconfig['extaddr']) echo "selected"; ?>><?=htmlspecialchars("{$sn['subnet']} ({$sn['descr']})");?></option>
<?php endforeach; endif; ?>
<option value="any" <?php if($pconfig['extaddr'] == "any") echo "selected"; ?>>any</option>
</select><br>
<span class="vexpl">
If you want this rule to apply to another IP address than the IP address of the interface chosen above,
- select it here (you need to define IP addresses on the
- <a href="firewall_nat_server.php">NAT Addresses</a> page first). Also note that if you are trying to redirect connections on the LAN select the "any" option.</span></td>
+ select it here (you need to define <a href="firewall_virtual_ip.php">Virtual IP</a> addresses on the first). Also note that if you are trying to redirect connections on the LAN select the "any" option.</span></td>
</tr>
<tr>
<td width="22%" valign="top" class="vncellreq">Protocol</td>
diff --git a/usr/local/www/firewall_nat_out.php b/usr/local/www/firewall_nat_out.php
index f8a3f2a..d7e556a 100755
--- a/usr/local/www/firewall_nat_out.php
+++ b/usr/local/www/firewall_nat_out.php
@@ -189,11 +189,10 @@ include("head.inc");
<table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr><td>
<?php
$tab_array = array();
- $tab_array[0] = array("Port Forward", false, "firewall_nat.php");
- $tab_array[1] = array("NAT Addresses", false, "firewall_nat_server.php");
- $tab_array[2] = array("1:1", false, "firewall_nat_1to1.php");
- $tab_array[3] = array("Outbound", true, "firewall_nat_out.php");
- $tab_array[4] = array("Outbound Load Balancing", false, "firewall_nat_out_load_balancing.php");
+ $tab_array[] = array("Port Forward", false, "firewall_nat.php");
+ $tab_array[] = array("1:1", false, "firewall_nat_1to1.php");
+ $tab_array[] = array("Outbound", true, "firewall_nat_out.php");
+ $tab_array[] = array("Outbound Load Balancing", false, "firewall_nat_out_load_balancing.php");
display_top_tabs($tab_array);
?>
</td></tr>
@@ -222,7 +221,7 @@ include("head.inc");
rules will be automatically generated anymore. Instead, only the mappings
you specify below will be used. With advanced outbound NAT disabled,
a mapping is automatically created for each interface's subnet
- (except WAN).</span> If you use target addresses other than the WAN interface's IP address, then depending on<span class="vexpl"> the way your WAN connection is setup, you may also need <a href="services_proxyarp.php">proxy ARP</a>.</span><br>
+ (except WAN).</span> If you use target addresses other than the WAN interface's IP address, then depending on<span class="vexpl"> the way your WAN connection is setup, you may also need a <a href="firewall_virtual_ip.php">Virtual IP</a>.</span><br>
<br>
You may enter your own mappings below.</p>
</td>
diff --git a/usr/local/www/firewall_nat_server.php b/usr/local/www/firewall_nat_server.php
index 8c58b7e..6c40db5 100755
--- a/usr/local/www/firewall_nat_server.php
+++ b/usr/local/www/firewall_nat_server.php
@@ -146,7 +146,7 @@ include("head.inc");
<tr>
<td colspan="2">
<p><span class="vexpl"><span class="red"><strong>Note:<br>
- </strong></span>The external IP addresses defined on this page may be used in <a href="firewall_nat.php">inbound NAT</a> mappings. Depending on the way your WAN connection is setup, you may also need <a href="services_proxyarp.php">proxy ARP</a>.</span></p>
+ </strong></span>The external IP addresses defined on this page may be used in <a href="firewall_nat.php">inbound NAT</a> mappings. Depending on the way your WAN connection is setup, you may also need a <a href="services_virtual_ip.php">Virtual IP</a>.</span></p>
</td>
</tr>
</table>
diff --git a/usr/local/www/guiconfig.inc b/usr/local/www/guiconfig.inc
index 431d967..f0205b2 100755
--- a/usr/local/www/guiconfig.inc
+++ b/usr/local/www/guiconfig.inc
@@ -64,6 +64,7 @@ $d_sysrebootreqd_path = $g['varrun_path'] . "/sysreboot.reqd";
$d_passthrumacsdirty_path = $g['varrun_path'] . "/passthrumacs.dirty";
$d_allowedipsdirty_path = $g['varrun_path'] . "/allowedips.dirty";
$d_ovpnclidirty_path = $g['varrun_path'] . "/ovpnclient.dirty";
+$d_vipconfdirty_path = $g['varrun_path'] . "/vip.conf.dirty";
/* used by progress bar */
$lastseen = "-1";
@@ -605,4 +606,4 @@ function ipsec_ca_sort() {
}
-?> \ No newline at end of file
+?>
OpenPOWER on IntegriCloud