diff --git a/src/etc/inc/openvpn.inc b/src/etc/inc/openvpn.inc index 7bee885bb..d92dffa51 100644 --- a/src/etc/inc/openvpn.inc +++ b/src/etc/inc/openvpn.inc @@ -940,6 +940,15 @@ function openvpn_resync_csc_conf($settings, $server) $conf .= "ifconfig-push {$clientip} " . gen_subnet_mask($mask) . "\n"; } } + if (!empty($settings['tunnel_networkv6'])) { + list($ipv6, $prefix) = explode('/', $settings['tunnel_networkv6']); + list($ipv6_1, $ipv6_2) = openvpn_get_interface_ipv6($ipv6, $prefix); + if ($server['dev_mode'] == 'tun' && empty($server['topology_subnet'])) { + $conf .= "ifconfig-ipv6-push {$ipv6_2} {$ipv6_1}\n"; + } else { + $conf .= "ifconfig-ipv6-push {$ipv6_2} {$prefix}\n"; + } + } if (!empty($settings['local_network'])) { $conf .= openvpn_gen_routes($settings['local_network'], "ipv4", true); diff --git a/src/www/vpn_openvpn_csc.php b/src/www/vpn_openvpn_csc.php index e18989f5f..01c8c437c 100644 --- a/src/www/vpn_openvpn_csc.php +++ b/src/www/vpn_openvpn_csc.php @@ -35,7 +35,7 @@ require_once("plugins.inc"); // define all fields used in this form $all_form_fields = "custom_options,disable,common_name,block,description - ,tunnel_network,local_network,local_networkv6,remote_network + ,tunnel_network,tunnel_networkv6,local_network,local_networkv6,remote_network ,remote_networkv6,gwredir,push_reset,dns_domain,dns_server1 ,dns_server2,dns_server3,dns_server4,ntp_server1,ntp_server2 ,netbios_enable,netbios_ntype,netbios_scope,wins_server1 @@ -131,6 +131,9 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') { if ($result = openvpn_validate_cidr($pconfig['tunnel_network'], 'IPv4 Tunnel Network')) { $input_errors[] = $result; } + if ($result = openvpn_validate_cidr($pconfig['tunnel_networkv6'], 'IPv6 Tunnel Network', false, "ipv6")) { + $input_errors[] = $result; + } if ($result = openvpn_validate_cidr($pconfig['local_network'], 'IPv4 Local Network', true, "ipv4")) { $input_errors[] = $result; } @@ -466,6 +469,21 @@ if ($act!="new" && $act!="edit") { + + + + + + +