diff options
Diffstat (limited to 'Generate')
-rwxr-xr-x | Generate | 23 |
1 files changed, 19 insertions, 4 deletions
@@ -292,6 +292,8 @@ $config['hosts'].each_pair{ |name, host| if host['ipv6'] host['networks6'][host['vpn_address6']+"/128"] = host['groups'].join(',') end + host['default6'] = false unless host.has_key?('default6') + host['openvpn_ge_23'] = true if host['openvpn_ge_24'] host['inet_port'] = {} } throw "Duplicate iface names" unless hostlist.collect{ |host| host['ifacename'] }.uniq.size == $config['hosts'].size @@ -642,6 +644,9 @@ hostlist.each{ |host| upscriptname = "#{dir}/"+upscriptnamebase conffile = File.new("#{dir}/#{$NAMESPACE}-%s.conf"%[peer['name']], "w") + upscript = File.new(upscriptname, "w") + + conffile.puts "dev %s"%[peer['ifacename']] conffile.puts "tun-ipv6" if host['ipv6'] and peer['ipv6'] #mtu = 1434 @@ -709,17 +714,27 @@ hostlist.each{ |host| conffile.puts "keepalive 7 30" conffile.puts "verb 3" conffile.puts "script-security 2" - conffile.puts "redirect-gateway def1" if host['default-via'] and host['default-via'] == peer['name'] - conffile.close + if host['default-via'] and host['default-via'] == peer['name'] + if host['default6'] and host['ipv6'] and host['openvpn_ge_24'] + conffile.puts "redirect-gateway def1 ipv6" + else + conffile.puts "redirect-gateway def1" + end + end ########## - upscript = File.new(upscriptname, "w") upscript.puts UPSCRIPT if host['ipv6'] and peer['ipv6'] - upscript.puts "ip -6 addr add #{ host['link-local'][ peer['name'] ]['me'] }/64 dev $TUN_DEV" + if host['openvpn_ge_24'] + conffile.puts "ifconfig-ipv6 %s %s"%[host['link-local'][ peer['name'] ]['me'], host['link-local'][ peer['name'] ]['peer'] ] + else + upscript.puts "ip -6 addr add #{ host['link-local'][ peer['name'] ]['me'] }/64 dev $TUN_DEV" + end upscript.puts "ip -6 addr add #{ host['vpn_address6'] }/128 dev $TUN_DEV" end upscript.puts "true" + + conffile.close upscript.close File.chmod(0755, upscriptname) == 1 or throw "Cannot chmod #{upscriptname}" |