summaryrefslogtreecommitdiffstats
path: root/etc
diff options
context:
space:
mode:
authorChris Buechler <cmb@pfsense.org>2012-12-30 15:22:59 -0800
committerChris Buechler <cmb@pfsense.org>2012-12-30 15:22:59 -0800
commite9189747de49402762b2d176a8871ed38ff4e782 (patch)
tree158b420f05473d1292aec8f2044abfa900811cfc /etc
parent41085ea85370da5dd420a52c4b7bb1668caf5622 (diff)
parent6088472784205497e4c5697bcaa2435c11a8ce95 (diff)
downloadpfsense-e9189747de49402762b2d176a8871ed38ff4e782.zip
pfsense-e9189747de49402762b2d176a8871ed38ff4e782.tar.gz
Merge pull request #293 from bcyrill/patch-11
Add some unobtrusive IPv6 changes to CP
Diffstat (limited to 'etc')
-rw-r--r--etc/inc/captiveportal.inc32
1 files changed, 22 insertions, 10 deletions
diff --git a/etc/inc/captiveportal.inc b/etc/inc/captiveportal.inc
index 69b2b9b..9418c14 100644
--- a/etc/inc/captiveportal.inc
+++ b/etc/inc/captiveportal.inc
@@ -1551,18 +1551,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;
}
@@ -1845,16 +1852,17 @@ function portal_allow($clientip,$clientmac,$username,$password = null, $attribut
pfSense_pipe_action("pipe {$bw_up_pipeno} config bw {$bw_up}Kbit/s queue 100 buckets 16");
pfSense_pipe_action("pipe {$bw_down_pipeno} config bw {$bw_down}Kbit/s queue 100 buckets 16");
+ $clientsn = (is_ipaddrv6($clientip)) ? 128 : 32;
captiveportal_ipfw_set_context($cpzone);
if (!isset($config['captiveportal'][$cpzone]['nomacfilter']))
- pfSense_ipfw_Tableaction($cpzone, IP_FW_TABLE_ADD, 1, $clientip, 32, $clientmac, $bw_up_pipeno);
+ pfSense_ipfw_Tableaction($cpzone, IP_FW_TABLE_ADD, 1, $clientip, $clientsn, $clientmac, $bw_up_pipeno);
else
- pfSense_ipfw_Tableaction($cpzone, IP_FW_TABLE_ADD, 1, $clientip, 32, NULL, $bw_up_pipeno);
+ pfSense_ipfw_Tableaction($cpzone, IP_FW_TABLE_ADD, 1, $clientip, $clientsn, NULL, $bw_up_pipeno);
if (!isset($config['captiveportal'][$cpzone]['nomacfilter']))
- pfSense_ipfw_Tableaction("", IP_FW_TABLE_ADD, 2, $clientip, 32, $clientmac, $bw_down_pipeno);
+ pfSense_ipfw_Tableaction("", IP_FW_TABLE_ADD, 2, $clientip, $clientsn, $clientmac, $bw_down_pipeno);
else
- pfSense_ipfw_Tableaction("", IP_FW_TABLE_ADD, 2, $clientip, 32, NULL, $bw_down_pipeno);
+ pfSense_ipfw_Tableaction("", IP_FW_TABLE_ADD, 2, $clientip, $clientsn, NULL, $bw_down_pipeno);
if ($attributes['voucher'])
$attributes['session_timeout'] = $remaining_time;
@@ -1916,8 +1924,12 @@ function portal_allow($clientip,$clientmac,$username,$password = null, $attribut
$config['captiveportal'][$cpzone]['zoneid'];
if (!$ifip)
$ourhostname = $config['system']['hostname'] . ":{$httpport}";
- else
- $ourhostname = "{$ifip}:{$httpport}";
+ else {
+ if (is_ipaddrv6($ifip))
+ $ourhostname = "[{$ifip}]:{$httpport}";
+ else
+ $ourhostname = "{$ifip}:{$httpport}";
+ }
$logouturl = "http://{$ourhostname}/";
}
OpenPOWER on IntegriCloud