From 277ed6cb2c869589c57a1c0331bc547022bf6037 Mon Sep 17 00:00:00 2001 From: bcyrill Date: Fri, 28 Dec 2012 22:09:50 +0100 Subject: Add [] to IPv6 address --- etc/inc/captiveportal.inc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'etc') diff --git a/etc/inc/captiveportal.inc b/etc/inc/captiveportal.inc index 23ac756..830aca4 100644 --- a/etc/inc/captiveportal.inc +++ b/etc/inc/captiveportal.inc @@ -1906,8 +1906,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}/"; } -- cgit v1.1 From 45bef774b009af7a9176bc6a4a28a9668bc69f9f Mon Sep 17 00:00:00 2001 From: bcyrill Date: Fri, 28 Dec 2012 22:12:07 +0100 Subject: Get IPv6 address for IPv6 clients --- etc/inc/captiveportal.inc | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'etc') 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; } -- cgit v1.1 From 6088472784205497e4c5697bcaa2435c11a8ce95 Mon Sep 17 00:00:00 2001 From: bcyrill Date: Fri, 28 Dec 2012 22:14:14 +0100 Subject: Determine subnet from address family --- etc/inc/captiveportal.inc | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'etc') diff --git a/etc/inc/captiveportal.inc b/etc/inc/captiveportal.inc index d70c5ac..5c94d7a 100644 --- a/etc/inc/captiveportal.inc +++ b/etc/inc/captiveportal.inc @@ -1850,16 +1850,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; -- cgit v1.1