On Mon, Apr 25, 2005 at 11:25:14AM -0600, James Yonan wrote:
> On Mon, 25 Apr 2005, JuanJo Ciarlante wrote:
>
> > On Thu, Apr 21, 2005 at 06:27:03PM -0600, James Yonan wrote:
> > > I would like to merge your IPv6 patch into the 2.1 branch, once it gets
> > > started (I'd like to keep the 2.0.x branch as stable as possible, with
> > > minimalistic changes that don't go beyond bug fixes and small patches).
> > >
> > > One potential speed bump will be in merging both IPv6 + the multihomed
> > > patch which will definitely be going into 2.1:
> > >
> > > http://openvpn.net/patch/openvpn-2.0_rc16MH.patch
> > >
> > > Because both patches touch much of the same code, there will likely be a
> > > need for manual merging.
> >
> > Ok ... indeed I tested "patch --dry ..." and shouted about 80% rejects.
> > I could merge both in my own CVS, but because it's a rather daunting task,
> > I would like to be sure it's a productive one :-) ie. that it will have a
> > high chance to be merged , of course, if resulting patch quality qualifies.
>
> The MH (multihomed) patch has a near 100% chance of being merged, since it
> is necessary for OpenVPN to operate properly as a multihomed server. Here
> is more info about it:
>
> http://openvpn.net/archive/openvpn-users/2005-02/msg00640.html
>
> The important thing in doing the merge is not so much to make the
> multihomed feature work with IPv6 (right away) as it is to do the correct
> accounting and authentication of both source and destination address of
> received packets (without this patch, OpenVPN does not keep track of
> destination IP address of received packets when running in a multi-homed
> context).
Ok
I've borrowed some sleep hours last night and ended having a consistent
merge, some polishing bits remain still (I'post as soon as I have it ready).
Nice to see same mechanism (w/ diff. goals) in MH and IPv6 patch:
generalization of socket address type.
I've actually "moved upper" the pktinfo to the openvpn_sockaddr type:
struct openvpn_sockaddr {
union {
struct sockaddr addr;
struct sockaddr_in in;
#ifdef USE_PF_INET6
struct sockaddr_in6 in6;
#endif
#ifdef USE_PF_UNIX
struct sockaddr_un un;
#endif
} /* u */; /* use GCC anon union for now ... */
#if ENABLE_IP_PKTINFO
struct in_pktinfo pi;
#endif
};
and corresponding link_socket_addr:
struct link_socket_addr
{
struct openvpn_sockaddr local;
struct openvpn_sockaddr remote;
struct openvpn_sockaddr actual;
};
RATIONALE:
I this that moving ip_pktinfo to "main" openvpn_sockaddr struct allows
specifing output interface/etc even for client mode; so this
"generalization" is a good thing IMO.
There are new functions like addr_copy() , addr_zero() which replace
sin.sin_xxxx ... asignments to cope w/different AFs.
That "GCC (and others cc's) anon. union " usage is temporary there,
as a syntatic sugar:
eg: addr->in.sin_addr
instead of: addr->u.in.sin_addr
but I'll obviously be changed.
> I think it's a fairly high priority to get your IPv6 patch + MH + the
> BETA2.0-THREAD branch in the CVS merged as a baseline for 2.1. I don't
> expect the BETA2.0-THREAD code to conflict either with the MH or IPv6
> patches.
cool ... as soon as I stabilize the merge we could try to apply to THREAD
branch.
> I'd be glad to work with you on this, as I am also interested in
> extending the IPv6 support to allow IPv6 tunnels over OpenVPN in
> client/server mode (right now, IPv6 tunnels are only supported in
> point-to-point mode).
wow thanks... nice.
>
> Incidentally, does your IPv6 patch affect performance when it is inactive,
> i.e. when IPv4 is being used?
Some memory extra to hold the ipv4+ipv6 af union above; and new code paths
are more or less:
+ switch(addr.sa_family) {
+ case AF_INET:
/* current code */
+ case AF_INET6:
+ /* ipv6 code */
+ }
So I think the performance impact it's quite negligible.
Anyway ... all IPv6 code is ifdef'd as #ifdef USE_PF_INET6.
Regards!
--
--Juanjo
# Juan Jose Ciarlante (JuanJo) jjo ;at; mendoza.gov.ar #
# GnuPG Public Key: gpg --keyserver wwwkeys.eu.pgp.net --recv-key 66727177 #
# Key fingerprint: 0D2F 3E5D 8B5C 729E 0560 F453 A3F7 E249 6672 7177 #