On Saturday, June 29, 2002 10:40:18 PM UTC+3, Samuel Thibault wrote: > (Previous mail seemed to be garbaged by mime attachment) > > Hello, > > man recv says, about flags : > > MSG_TRUNC > Return the real length of the packet, even when it > was longer than the passed buffer. Only valid for > packet sockets. > > But it is neither implemented in ipv4/udp.c, nor in ipv6/udp.c, although > it is in tcp.c, for instance ! > > By searching with google, I could read old manpages where it didn't exist, > but I find it very useful, especially in conjunction with MSG_PEEK, for > trying to read a packet with a little buffer, and then really get it with > an appropriate buffer. > > So here's a patch which cures 2.4.18, and also works on 2.5 kernels. > > Best regards, > > Samuel Thibault > > diff -urN linux-2.4.18/net/ipv4/udp.c linux-2.4.18-cor/net/ipv4/udp.c > --- linux-2.4.18/net/ipv4/udp.c Mon Jun 10 23:34:59 2002 > +++ linux-2.4.18-cor/net/ipv4/udp.c Mon Jun 10 23:35:31 2002 > @@ -680,7 +680,7 @@ > } > if (sk->protinfo.af_inet.cmsg_flags) > ip_cmsg_recv(msg, skb); > - err = copied; > + err = (flags&MSG_TRUNC) ? skb->len - sizeof(struct udphdr) : copied; > > out_free: > skb_free_datagram(sk, skb); > diff -urN linux-2.4.18/net/ipv6/udp.c linux-2.4.18-cor/net/ipv6/udp.c > --- linux-2.4.18/net/ipv6/udp.c Mon Jun 10 23:35:07 2002 > +++ linux-2.4.18-cor/net/ipv6/udp.c Mon Jun 10 23:35:36 2002 > @@ -432,7 +432,7 @@ > } > } > } > - err = copied; > + err = (flags&MSG_TRUNC) ? skb->len - sizeof(struct udphdr) : copied; > > out_free: > skb_free_datagram(sk, skb); > > - > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majord...@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/
man i want to see full example about receivefrom and MSG_TRUNC flag please -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/