summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorErmal <eri@pfsense.org>2013-01-31 14:06:24 +0000
committerErmal <eri@pfsense.org>2013-01-31 14:06:39 +0000
commitef1c048b0f8f4d90a19e9c233d923f60f28ffaa7 (patch)
treeb401320da2bcf7c5f1b586f90f46b22660aadeed
parentceba035a486b404774861ac048f24e4a9ed21be1 (diff)
downloadpfsense-ef1c048b0f8f4d90a19e9c233d923f60f28ffaa7.zip
pfsense-ef1c048b0f8f4d90a19e9c233d923f60f28ffaa7.tar.gz
Do delayed handling of track6 interfaces a bit earlier. More thoughts need to be done on the track6 configuration
-rw-r--r--etc/inc/interfaces.inc65
1 files changed, 56 insertions, 9 deletions
diff --git a/etc/inc/interfaces.inc b/etc/inc/interfaces.inc
index 79e5413..0ab9e8c 100644
--- a/etc/inc/interfaces.inc
+++ b/etc/inc/interfaces.inc
@@ -431,6 +431,24 @@ function interfaces_bridge_configure($checkmember = 0) {
foreach ($config['bridges']['bridged'] as $bridge) {
if(empty($bridge['bridgeif']))
$bridge['bridgeif'] = "bridge{$i}";
+ if ($checkmember == 1) {
+ $members = explode(',', $bridge['members']);
+ foreach ($members as $member) {
+ if (strstr($bridge['if'], "_vip"))
+ continue 2;
+ if (!empty($config['interfaces'][$bridge['if']]) && $config['interfaces'][$bridge['if']]['ipaddrv6'] == "track6")
+ continue 2;
+ }
+ }
+ else if ($checkmember == 2) {
+ $members = explode(',', $bridge['members']);
+ foreach ($members as $member) {
+ if (!strstr($bridge['if'], "_vip"))
+ continue 2;
+ if (empty($config['interfaces'][$bridge['if']]) || $config['interfaces'][$bridge['if']]['ipaddrv6'] != "track6")
+ continue 2;
+ }
+ }
/* XXX: Maybe we should report any errors?! */
interface_bridge_configure($bridge, $checkmember);
$i++;
@@ -759,10 +777,18 @@ function interfaces_gre_configure($checkparent = 0) {
foreach ($config['gres']['gre'] as $i => $gre) {
if(empty($gre['greif']))
$gre['greif'] = "gre{$i}";
- if ($checkparent == 1 && strstr($gre['if'], "_vip"))
- continue;
- if ($checkparent == 2 && !strstr($gre['if'], "_vip"))
- continue;
+ if ($checkparent == 1) {
+ if (strstr($gre['if'], "_vip"))
+ continue;
+ if (!empty($config['interfaces'][$gre['if']]) && $config['interfaces'][$gre['if']]['ipaddrv6'] == "track6")
+ continue;
+ }
+ else if ($checkparent == 2) {
+ if (!strstr($gre['if'], "_vip"))
+ continue;
+ if (empty($config['interfaces'][$gre['if']]) || $config['interfaces'][$gre['if']]['ipaddrv6'] != "track6")
+ continue;
+ }
/* XXX: Maybe we should report any errors?! */
interface_gre_configure($gre);
}
@@ -825,10 +851,18 @@ function interfaces_gif_configure($checkparent = 0) {
foreach ($config['gifs']['gif'] as $i => $gif) {
if(empty($gif['gifif']))
$gre['gifif'] = "gif{$i}";
- if ($checkparent == 1 && strstr($gif['if'], "_vip"))
- continue;
- if ($checkparent == 2 && !strstr($gif['if'], "_vip"))
- continue;
+ if ($checkparent == 1) {
+ if (strstr($gif['if'], "_vip"))
+ continue;
+ if (!empty($config['interfaces'][$gif['if']]) && $config['interfaces'][$gif['if']]['ipaddrv6'] == "track6")
+ continue;
+ }
+ else if ($checkparent == 2) {
+ if (!strstr($gre['if'], "_vip"))
+ continue;
+ if (empty($config['interfaces'][$gif['if']]) || $config['interfaces'][$gif['if']]['ipaddrv6'] != "track6")
+ continue;
+ }
/* XXX: Maybe we should report any errors?! */
interface_gif_configure($gif);
}
@@ -940,6 +974,7 @@ function interfaces_configure() {
$iflist = get_configured_interface_with_descr();
$delayed_list = array();
$bridge_list = array();
+ $track6_list = array();
/* This is needed to speedup interfaces on bootup. */
$reload = false;
@@ -958,7 +993,7 @@ function interfaces_configure() {
//echo "Delaying OpenVPN interface configuration...done.\n";
continue;
} else if (!empty($config['interfaces'][$if]['ipaddrv6']) && $config['interfaces'][$if]['ipaddrv6'] == "track6") {
- $delayed_list[$if] = $ifname;
+ $tack6_list[$if] = $ifname;
} else {
if ($g['booting'])
printf(gettext("Configuring %s interface..."), $ifname);
@@ -986,6 +1021,18 @@ function interfaces_configure() {
/* set up BRIDGe virtual interfaces */
interfaces_bridge_configure(1);
+ foreach ($track6_list as $if => $ifname) {
+ if ($g['booting'])
+ printf(gettext("Configuring %s interface..."), $ifname);
+ if ($g['debug'])
+ log_error(sprintf(gettext("Configuring %s"), $ifname));
+
+ interface_configure($if, $reload);
+
+ if ($g['booting'])
+ echo gettext("done.") . "\n";
+ }
+
/* bring up vip interfaces */
interfaces_vips_configure();
OpenPOWER on IntegriCloud