[ Last updated: 17-Sep-2009. ] This README covers UDP/IPv6 v0.4.x ( --udp6 and --tcp6-xxxxxx ) support for openvpn-2.1. Available under GPLv2 from http://github.com/jjo/openvpn-ipv6 , also thanks to Bernhard Schmidt, you'll find deb packages for latest Ubuntu distros at: https://launchpad.net/~berni/+archive/ipv6/+packages * Status: o OK: - upd6,tcp6: GNU/Linux, win32 - udp4->upd6,tcp4->tcp6 (ipv4/6 mapped): GNU/Linux (gives a warning on local!=remote proto matching) o NOT: - tcp4->tcp6 (ipv4/6 mapped): win32 fails w/connection refused o NOT tested: - mgmt console * Setup: ./configure --enable-ipv6 (by default) * Usage: For IPv6 just specify "-p upd6" an proper IPv6 hostnames, adapting the example from man page ... On may: openvpn --proto udp6 --remote --dev tun1 \ --ifconfig 10.4.0.1 10.4.0.2 --verb 5 --secret key On june: openvpn --proto udp6 --remote --dev tun1 \ --ifconfig 10.4.0.2 10.4.0.1 --verb 5 --secret key Same for --proto tcp6-client, tcp6-server. * Main code changes summary: - socket.h: New struct openvpn_sockaddr type that holds sockaddrs and pktinfo, (here I omitted #ifdef USE_PF_xxxx, see socket.h ) struct openvpn_sockaddr { union { struct sockaddr sa; struct sockaddr_in in; struct sockaddr_in6 in6; } addr; }; struct link_socket_addr { struct openvpn_sockaddr local; struct openvpn_sockaddr remote; struct openvpn_sockaddr actual; }; PRO: allows simple type overloading: local.addr.sa, local.addr.in, local.addr.in6 ... etc (also local.pi.in and local.pi.in6) - several function prototypes moved from sockaddr_in to openvpn_sockaddr - several new sockaddr functions needed to "generalize" AF_xxxx operations: addr_copy(), addr_zero(), ...etc proto_is_udp(), proto_is_dgram(), proto_is_net() * TODO: See TODO.ipv6 -- JuanJo Ciarlante jjo () google () com : : . Linux IP Aliasing author . . Modular algo (AES et all) support for FreeSWAN/OpenSWAN author . :... plus other scattered free software bits in the wild ...: