aboutsummaryrefslogtreecommitdiff
path: root/README.ipv6.txt
blob: f9b617139b73d6e516fab679db89cffc5527f1f2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
[ 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

* Working:
  OK:
  - upd6,tcp6: GNU/Linux, win32
  - udp4->upd6,tcp4->tcp6 (ipv4/6 mapped): GNU/Linux
    (gives a warning on local!=remote proto matching)
  NOT:
  - tcp4->tcp6 (ipv4/6 mapped): win32
    fails w/connection refused



* 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 <june_IPv6_addr> --dev tun1 \
      --ifconfig 10.4.0.1 10.4.0.2 --verb 5 --secret key

  On june:
    openvpn --proto udp6 --remote <may_IPv6_addr>  --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 ...: