* ping6 sets IPV6_PMTUDISC_DO option on multicast packets
@ 2007-11-16 21:29 Tushar Gohad
0 siblings, 0 replies; only message in thread
From: Tushar Gohad @ 2007-11-16 21:29 UTC (permalink / raw)
To: YOSHIFUJI Hideaki / 吉藤英明; +Cc: netdev
Yoshifuji-san,
I noticed that ping6 forces the IPV6_PMTUDISC_DO option on packets sent
to multicast destinations. Is this a requirement?
Due to the following check recently introduced in the ip6_fragment()
code, multicast packets that are over PMTU in size are never sent out,
since ping6 code always sets the PMTUDISC_DO option and ip6_fragment()
always fails.
=== net/ipv6/ip6_output.c ===
573 static int ip6_fragment(struct sk_buff *skb, int (*output)
(struct sk_buff *))
574 {
......
592 /* We must not fragment if the socket is set to force MTU
discovery
......
596 if (!np || np->pmtudisc >= IPV6_PMTUDISC_DO) {
597 skb->dev = skb->dst->dev;
598 icmpv6_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu,
skb->dev);
599 IP6_INC_STATS(ip6_dst_idev(skb->dst),
IPSTATS_MIB_FRAGFAILS);
600 kfree_skb(skb);
601 return -EMSGSIZE;
602 }
......
--
This check in the kernel code makes perfect sense, since the option is
implies "do not fragment."
Should the ping6 code be fixed in that case?
Thanks,
- Tushar
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2007-11-16 21:23 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-11-16 21:29 ping6 sets IPV6_PMTUDISC_DO option on multicast packets Tushar Gohad
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.