Index: in6_pcb.c =================================================================== RCS file: /home/dcvs/src/sys/netinet6/in6_pcb.c,v retrieving revision 1.34 diff -u -u -r1.34 in6_pcb.c --- in6_pcb.c 5 Jan 2008 14:02:40 -0000 1.34 +++ in6_pcb.c 11 Aug 2008 10:09:58 -0000 @@ -879,6 +879,20 @@ if ((inp->inp_vflag & INP_IPV6) == 0) continue; + /* + * If the error designates a new path MTU for a destination + * and the application (associated with this socket) wanted to + * know the value, notify. Note that we notify for all + * disconnected sockets if the corresponding application + * wanted. This is because some UDP applications keep sending + * sockets disconnected. + * XXX: should we avoid to notify the value to TCP sockets? + */ + if (cmd == PRC_MSGSIZE && (inp->inp_flags & IN6P_MTU) != 0 && + (IN6_IS_ADDR_UNSPECIFIED(&inp->in6p_faddr) || + IN6_ARE_ADDR_EQUAL(&inp->in6p_faddr, &sa6_dst->sin6_addr))) { + ip6_notify_pmtu(inp, (struct sockaddr_in6 *)dst, arg); + } /* * Detect if we should notify the error. If no source and