Subject: Re: CVS commit: src/sys
To: Jun-ichiro itojun Hagino <itojun@itojun.org>
From: Jonathan Stone <jonathan@dsg.stanford.edu>
List: source-changes
Date: 08/22/2003 14:31:39
[...]
> freebsd uses unified inpcb for IPv4 and IPv6. netbsd uses separate
> inpcb/in6pcb. therefore code has to be different.
> i thought about unification of inpcb/in6pcb for a long time, but
> end up not doing it due to increased memory usage/too many changes
``too many changes?'' That doesnt' strike me ais not a good reason.
Nor is it in the traditions of the NetBSD Project.
> (i would name common portion as inpcb and IPv4-only portion in4pcb,
> hence many IPv4 code has to be changed).
I'd name it somewhat differently.
>> Can you please defer chagne the inpcb6* to an struct socket*, until
>> after that review?
>
> sorry no, i will change it to struct socket * now.
Then I reserve the right to revert to passing inpcb6* at some later
date, shuold that be the appropriate thing to do.
with your commit
> you *broke* KAME IPsec policy checking for the case where IPv4 mapped
> address is used on AF_INET6 socket.
Can you explain just how the code is ``broken''? The previous code
took an in6pcb, followed the pointer to the struct socket*, and passed
the struct socket* via the set_socket() kludge. The code I checked in
simply passes the same in6pcb* which the KAME code started with to
ip6_output() as an explicit argument. Then, ip6_output() immediately
follows the *VERY SAME* pointer, to obtain the struct socket* it used
to receive via the aux-mbuf/packet-tag.
Interally, ip6_output() and the KAME ipsec code continues to use the
struct socket *. There is effectively change to the struct socket*
seen by the KAME-code internals. I dont see how that will break
anything, which wasn't already broken before.
Why do you think the code needs to be changed immediately?
Is there a corner case which I missed?