diff options
author | Chris Buechler <cmb@pfsense.org> | 2009-02-14 15:19:15 -0500 |
---|---|---|
committer | Chris Buechler <cmb@pfsense.org> | 2009-02-14 15:19:15 -0500 |
commit | e5cd25dbb16b1fea1371d0e1fb0d4f8a45a1e739 (patch) | |
tree | d7928128d3fc5fa09cbf21384c87ab10b7987b6e /etc | |
parent | 554e259ed5b2f8c44510d12a9ffcac5d03c19729 (diff) | |
download | pfsense-e5cd25dbb16b1fea1371d0e1fb0d4f8a45a1e739.zip pfsense-e5cd25dbb16b1fea1371d0e1fb0d4f8a45a1e739.tar.gz |
changes from smos@
Diffstat (limited to 'etc')
-rw-r--r-- | etc/inc/pfsense-utils.inc | 19 | ||||
-rw-r--r-- | etc/inc/vpn.inc | 1 |
2 files changed, 14 insertions, 6 deletions
diff --git a/etc/inc/pfsense-utils.inc b/etc/inc/pfsense-utils.inc index b22aaca..7d57579 100644 --- a/etc/inc/pfsense-utils.inc +++ b/etc/inc/pfsense-utils.inc @@ -1434,11 +1434,20 @@ function find_interface_ip($interface, $flush = false) { } function guess_interface_from_ip($ipaddress) { - $ret = exec_command("/usr/bin/netstat -rn | /usr/bin/awk '/^{$ipaddress}/ {print $6}'"); - if(empty($ret)) { - return false; - } - return $ret; + exec("netstat -rn", $output, $ret); + foreach($output as $line) { + if(preg_match("/^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\/[0-9]+[ ]+link[#]/", $line)) { + $fields = preg_split("/[ ]+/", $line); + if(ip_in_subnet($ipaddress, $fields[0])) { + return $fields[5]; + } + } + } + $ret = exec_command("/sbin/route -n get {$ipaddress} | /usr/bin/awk '/interface/ { print \$2; };'"); + if(empty($ret)) { + return false; + } + return $ret; } function filter_opt_interface_to_real($opt) { diff --git a/etc/inc/vpn.inc b/etc/inc/vpn.inc index 4e3eee9..6ab3693 100644 --- a/etc/inc/vpn.inc +++ b/etc/inc/vpn.inc @@ -1200,7 +1200,6 @@ function vpn_ipsec_refresh_policies() { } else { rename("{$g['tmp_path']}/{$tmpfile}", ("{$g['tmp_path']}/failed.{$tmpfile}")); } - unlink("{$g['tmp_path']}/{$tmpfile}"); } } } |