The current advanced sockets interface makes it possible to add
destination options to packets sent via that socket, but currently there
does not seem to be any generic mechanism for adding options to arbitrary
packets sent to certain destinations. Correct me if I have missed some
mechanism for this purpose.
I think that there is a need for such a mechanism. At least Mobile IPv6
and probably also IPSec need to add destination options to all packets
sent to certain addresses independently of the sockets. We have added
hooks to our Mobile IPv6 module into ip6_output.c's ip6_xmit and
ip6_build_xmit to add the options before fragmentation is done. It seemed
to be the right place to add them.
However, the pmtu calculation does not work with tcp if options are added.
We solved this rather kludgily by reserving space in tcp_ipv6.c for the
maximum number of options that MIPv6 could add.
Are there any plans for a generic routine for adding extension headers? It
would make the addition of extension headers easier, if the for example
the sk_buff structure had a pointer to a ipv6_txoptions structure and the
headers would be copied to the sk_buff just before doing the pmtu checks
and fragmentation. Also a netfilter hook just before the copying of the
extension headers to the skb would be great.
Any comments on these ideas? BTW, is there any documentation
besides the source code of the operation of the IPv6 routing table and
destination cache in the 2.3 kernel series?
MIPL Mobile IPv6,