summaryrefslogtreecommitdiffstats
path: root/etc/inc/pfsense-utils.inc
diff options
context:
space:
mode:
authorChris Buechler <cmb@pfsense.org>2009-02-14 15:19:15 -0500
committerChris Buechler <cmb@pfsense.org>2009-02-14 15:19:15 -0500
commite5cd25dbb16b1fea1371d0e1fb0d4f8a45a1e739 (patch)
treed7928128d3fc5fa09cbf21384c87ab10b7987b6e /etc/inc/pfsense-utils.inc
parent554e259ed5b2f8c44510d12a9ffcac5d03c19729 (diff)
downloadpfsense-e5cd25dbb16b1fea1371d0e1fb0d4f8a45a1e739.zip
pfsense-e5cd25dbb16b1fea1371d0e1fb0d4f8a45a1e739.tar.gz
changes from smos@
Diffstat (limited to 'etc/inc/pfsense-utils.inc')
-rw-r--r--etc/inc/pfsense-utils.inc19
1 files changed, 14 insertions, 5 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) {
OpenPOWER on IntegriCloud