David S. Miller <[EMAIL PROTECTED]> wrote: > > One idea is to pass in a "const struct flowi *flp" into the > dst->ops->update_pmtu() handler which has the src/dest address fields > filled in. I did code something like that up, then threw it away, but > such a simple change is easily rematerializable.
Thanks for the excellent summary Dave. I was just thinking about the cow + update_pmtu implementation. What we could do is have a new dst->ops->cow() function that executed a COW if necessary. So for IPv4 it would return the dst as is, for IPv6 it'd return the dst if it's already the most specific, otherwise it'd perform a COW and return the resulting dst. You could then say dst = dst->ops->cow(dst, flow); dst->update_pmtu(dst, mtu); You can also store the returned dst in the socket. I think this is worthwhile since receiving an PMTU message is usually followed by a retransmission which means that you'll need to look up the dst again if we don't update the cached version. Cheers, -- Visit Openswan at http://www.openswan.org/ Email: Herbert Xu ~{PmV>HI~} <[EMAIL PROTECTED]> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html