summaryrefslogtreecommitdiffstats
path: root/etc
diff options
context:
space:
mode:
authorbcyrill <cyrill@bannwart.info>2012-12-28 22:12:07 +0100
committerbcyrill <cyrill@bannwart.info>2012-12-28 22:12:07 +0100
commit45bef774b009af7a9176bc6a4a28a9668bc69f9f (patch)
tree43344b35360955aafcb21107808408d264b356a9 /etc
parent277ed6cb2c869589c57a1c0331bc547022bf6037 (diff)
downloadpfsense-45bef774b009af7a9176bc6a4a28a9668bc69f9f.zip
pfsense-45bef774b009af7a9176bc6a4a28a9668bc69f9f.tar.gz
Get IPv6 address for IPv6 clients
Diffstat (limited to 'etc')
-rw-r--r--etc/inc/captiveportal.inc15
1 files changed, 11 insertions, 4 deletions
diff --git a/etc/inc/captiveportal.inc b/etc/inc/captiveportal.inc
index 830aca4..d70c5ac 100644
--- a/etc/inc/captiveportal.inc
+++ b/etc/inc/captiveportal.inc
@@ -1549,18 +1549,25 @@ function getNasIP()
function portal_ip_from_client_ip($cliip) {
global $config, $cpzone;
+ $isipv6 = is_ipaddrv6($cliip);
$interfaces = explode(",", $config['captiveportal'][$cpzone]['interface']);
foreach ($interfaces as $cpif) {
- $ip = get_interface_ip($cpif);
- $sn = get_interface_subnet($cpif);
+ if ($isipv6) {
+ $ip = get_interface_ipv6($cpif);
+ $sn = get_interface_subnetv6($cpif);
+ } else {
+ $ip = get_interface_ip($cpif);
+ $sn = get_interface_subnet($cpif);
+ }
if (ip_in_subnet($cliip, "{$ip}/{$sn}"))
return $ip;
}
- $iface = exec_command("/sbin/route -n get {$cliip} | /usr/bin/awk '/interface/ { print \$2; };'");
+ $inet = ($isipv6) ? '-inet6' : '-inet';
+ $iface = exec_command("/sbin/route -n get {$inet} {$cliip} | /usr/bin/awk '/interface/ { print \$2; };'");
$iface = trim($iface, "\n");
if (!empty($iface)) {
- $ip = find_interface_ip($iface);
+ $ip = ($isipv6) ? find_interface_ipv6($iface) : find_interface_ip($iface);
if (is_ipaddr($ip))
return $ip;
}
OpenPOWER on IntegriCloud