From 8f6f2a11dcd5dbc342449cf984067cde7c379178 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ermal=20Lu=C3=A7i?= Date: Wed, 10 Sep 2008 10:26:06 +0000 Subject: Correctly return gre/gif addresses if selected on the firewall rules or needed elsewhere. --- etc/inc/interfaces.inc | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'etc') diff --git a/etc/inc/interfaces.inc b/etc/inc/interfaces.inc index aa61ab1..1287048 100644 --- a/etc/inc/interfaces.inc +++ b/etc/inc/interfaces.inc @@ -1753,18 +1753,27 @@ function get_current_wan_address($interface = "wan") { default: if (isset($cfg['ispointtopoint']) && $cfg['pointtopoint']) { /* get interface info with netstat */ - exec("/usr/bin/netstat -nWI " . escapeshellarg($realif) . " -f inet", $ifinfo -); + exec("/usr/bin/netstat -nWI " . escapeshellarg($realif) . " -f inet", $ifinfo); if (isset($ifinfo[1])) { $aif = preg_split("/\s+/", $ifinfo[1]); $curwanip = chop($aif[3]); - if ($curwanip && is_ipaddr($curwanip) && ($curwanip != "0.0.0.0")) return $curwanip; } return null; - } + } else if (stristr($realif, "gre")) { + if (is_array($config['gres']['gre'])) + foreach ($config['gres']['gre'] as $grecfg) + if ($grecfg['greif'] == $realif) + return ($grecfg['tunnel-local-addr']); + } else if (stristr($realif, "gif")) { + if (is_array($config['gifs']['gre'])) + foreach ($config['gifs']['gif'] as $gifcfg) + if ($gifcfg['gifif'] == $realif) + return ($gifcfg['tunnel-local-addr']); + } + break; } -- cgit v1.1