Hello all, Attached is a patch which includes the relevant functionality for adding mipv6 extension headers to data packets. It probably does not compile, as I included only the files which are directly involved in the adding mechanism to minimize the size of the patch. If you want to try out the mechanism I can prepare a full patch. The patch is against bk changeset 1.1325 and is meant as a basis for discussion about the extension header addition mechanism. The code is still work in progress and lacks a proper interface. The mechanism has been tested with tcp and raw sockets and with tcp+ipsec. An overview of the system: User inserts the mipv6 information into the kernel. Based on this information ip6_add_miproute adds a new cached route. This cached route contains mip6_output as output function for adding the extension headers, a decreased pmtu and mipv6 binding information. The route also contains a pointer (u.dst->child) to a new route which contains correct forwarding information for mipv6 intermediate hops and the raw pmtu. Adding of extension headers in mip6_output is done as in esp6_output. The mechanism is fairly close to xfrm, except for storing the mipv6 information only in a cached route. Thus the state for a mipv6 binding is soft. This is a tradeoff between keeping the overhead of mipv6 small and having persistent state. If routes change, the mipv6 state can be easily reinserted into the kernel, since the userspace daemon needs to keep track of it for signaling purposes anyhow. I will not go more into details here, but I am happy to answer any questions about the design. Your comments are much appreciated. Regards, Henrik