summaryrefslogtreecommitdiffstats
path: root/etc
diff options
context:
space:
mode:
authorScott Ullrich <sullrich@pfsense.org>2008-05-25 00:05:18 +0000
committerScott Ullrich <sullrich@pfsense.org>2008-05-25 00:05:18 +0000
commit3fceab6c8948caf7669b282abd4f00cd3ca934e7 (patch)
treee75ec43d54294767927f4a20128d6780288a6b93 /etc
parent03aebc4c5075dfbb1537f9a78f8fe54c21e97082 (diff)
downloadpfsense-3fceab6c8948caf7669b282abd4f00cd3ca934e7.zip
pfsense-3fceab6c8948caf7669b282abd4f00cd3ca934e7.tar.gz
CarpDEV fixes. It now works!!
Diffstat (limited to 'etc')
-rw-r--r--etc/inc/filter.inc48
-rw-r--r--etc/inc/interfaces.inc8
-rw-r--r--etc/inc/system.inc3
3 files changed, 46 insertions, 13 deletions
diff --git a/etc/inc/filter.inc b/etc/inc/filter.inc
index 16bb287..26917c5 100644
--- a/etc/inc/filter.inc
+++ b/etc/inc/filter.inc
@@ -335,14 +335,29 @@ function filter_generate_aliases() {
if($config['interfaces']['lan'])
$aliases .= "lan = \"{ {$config['interfaces']['lan']['if']}{$lan_aliases} }\"\n";
+ $wanif = $config['interfaces']['wan']['if'];
+
+ /* carpdev support on WAN */
+ if($config['interfaces']['wan']['ipaddr'] == "carpdev-dhcp") {
+ $viparr = &$config['virtualip']['vip'];
+ $counter = 0;
+ foreach ($viparr as $vip) {
+ if ($vip['mode'] == "carpdev-dhcp") {
+ if($vip['interface'] == "wan")
+ $wanif = " carp{$counter}";
+ $counter++;
+ }
+ }
+ }
+
if($config['interfaces']['wan']['ipaddr'] == "pppoe") {
- $aliases .= "pppoe0 = \"{ " . $config['interfaces']['wan']['if'] . " " .get_real_wan_interface() . " }\" \n";
- $aliases .= "wan = \"{ " . $config['interfaces']['wan']['if'] . "{$wan_aliases} pppoe0 }\"\n";
+ $aliases .= "pppoe0 = \"{ " . $wanif . " " . get_real_wan_interface() . " }\" \n";
+ $aliases .= "wan = \"{ " . $wanif . "{$wan_aliases} pppoe0 }\"\n";
} else if ($config['interfaces']['wan']['ipaddr'] == "pptp") {
- $aliases .= "pptp0 = \"{ " . $config['interfaces']['wan']['if'] . " " . get_real_wan_interface() . " }\" \n";
- $aliases .= "wan = \"{ " . $config['interfaces']['wan']['if'] . "{$wan_aliases} pptp0 }\"\n";
+ $aliases .= "pptp0 = \"{ " . $wanif . " " . get_real_wan_interface() . " }\" \n";
+ $aliases .= "wan = \"{ " . $wanif . "{$wan_aliases} pptp0 }\"\n";
} else {
- $aliases .= "wan = \"{ " . get_real_wan_interface() . "{$wan_aliases} }\"\n";
+ $aliases .= "wan = \"{ " . get_real_wan_interface() . "{$wan_aliases} }\"\n";
}
$aliases .= "enc0 = \"{ enc0 }\"\n";
@@ -517,10 +532,25 @@ function filter_nat_rules_generate_if($if, $src = "any", $srcport = "", $dst = "
return;
/* Use interface name if IP isn't specified */
- if ($natip != "")
- $tgt = "{$natip}/32";
- else
- $tgt = "($if)";
+ if ($natip != "")
+ $tgt = "{$natip}/32";
+ else
+ $tgt = "($if)";
+
+ if($if == $config['interfaces']['wan']['if']) {
+ /* carpdev support on WAN */
+ if($config['interfaces']['wan']['ipaddr'] == "carpdev-dhcp") {
+ $viparr = &$config['virtualip']['vip'];
+ $counter = 0;
+ foreach ($viparr as $vip) {
+ if ($vip['mode'] == "carpdev-dhcp") {
+ if($vip['interface'] == "wan")
+ $tgt = "carp{$counter}";
+ $counter++;
+ }
+ }
+ }
+ }
/* Add the hard set source port (useful for ISAKMP) */
if ($natport != "")
diff --git a/etc/inc/interfaces.inc b/etc/inc/interfaces.inc
index 9e85efd..4b86879 100644
--- a/etc/inc/interfaces.inc
+++ b/etc/inc/interfaces.inc
@@ -508,8 +508,8 @@ function interfaces_carp_configure() {
mwexec("/sbin/ifconfig pfsync0 syncdev lo0 up");
}
$fd = fopen("/tmp/carp.sh", "w");
+ $viparr = &$config['virtualip']['vip'];
if($config['virtualip']['vip']) {
- $viparr = &$config['virtualip']['vip'];
mwexec("/sbin/sysctl net.inet.carp.allow=1");
} else {
$viparr = array();
@@ -1685,7 +1685,7 @@ function get_real_wan_interface() {
$wanif = "pppoe0";
if ($wancfg['ipaddr'] == "pptp")
$wanif = "pptp0";
-
+
return $wanif;
}
@@ -1696,8 +1696,8 @@ function get_current_wan_address($interface = "wan") {
$interface = filter_translate_type_to_real_interface($interface);
- if($wancfg['ipaddr'] == "carpdev-dhcp")
- return "\${$interface}";
+ if($wancfg['ipaddr'] == "carpdev-dhcp")
+ return "\$" . convert_real_interface_to_friendly_interface_name($interface);
$ifinfo = "";
if(in_array($wancfg['ipaddr'], array('dhcp'))) {
diff --git a/etc/inc/system.inc b/etc/inc/system.inc
index 721372e..31ff8a8 100644
--- a/etc/inc/system.inc
+++ b/etc/inc/system.inc
@@ -230,6 +230,9 @@ function system_routing_configure() {
$dont_remove_route = true;
}
+ if($config['interfaces']['wan']['ipaddr'] == "carpdev-dhcp")
+ $dont_remove_route = true;
+
if($dont_remove_route == false) {
/* remove default route */
mwexec("/sbin/route delete default");
OpenPOWER on IntegriCloud