Andrew Morton wrote: > On Mon, 4 Feb 2008 13:46:13 -0800 (PST) > [EMAIL PROTECTED] wrote: >> >> Open a tun device as type TUN, set the TUN_NO_PI flag, and try sending an >> IPv6 >> packet. The packet appears at the interface under tcpdumps, but propagates no >> further. This is because the default protocol info used for tun devices where >> the TUN_NO_PI flag is set assumes IPv4 as can be seen by the initialization >> at >> the top of the tun_get_user function in drivers/net/tun.c file given by >> >> struct tun_pi pi = { 0, __constant_htons(ETH_P_IP) }; >> >> This can easily be fixed by adding a quick check at the top of tun_get_user. >> Basically the code that used to read >> >> if (!(tun->flags & TUN_NO_PI)) { >> if ((len -= sizeof(pi)) > count) >> return -EINVAL; >> >> if(memcpy_fromiovec((void *)&pi, iv, sizeof(pi))) >> return -EFAULT; >> } >> >> when changed to read >> >> if (!(tun->flags & TUN_NO_PI)) { >> if ((len -= sizeof(pi)) > count) >> return -EINVAL; >> >> if(memcpy_fromiovec((void *)&pi, iv, sizeof(pi))) >> return -EFAULT; >> } >> else { >> /* Fixup default pi if IPv6 rather than IPv4 */ >> if (((tun->flags & TUN_TYPE_MASK) == TUN_TUN_DEV) && >> (*(char *)(iv->iov_base) == 0x60)) { >> pi.proto = __constant_htons(ETH_P_IPV6); >> } >> } >> >> fixes the problem. >> >> How do we get this in as part of the maintained codebase?? >> > > Please email a tested patch prepared as described in > > Documentation/SubmittingPatches > Documentation/SubmitChecklist > http://www.zip.com.au/~akpm/linux/patches/stuff/tpp.txt > > to > > Maxim Krasnyansky <[EMAIL PROTECTED]> > "David S. Miller" <[EMAIL PROTECTED]> > Andrew Morton <[EMAIL PROTECTED]> > netdev@vger.kernel.org
btw I'd be ok with this fix. But I guess the questions is why not use struct tun_pi in the apps instead ? Max -- 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