On Tue, 14 Jun 2016 10:41:46 +0000
Jonas Danielsson <[email protected]> wrote:

> > -----Original Message-----
> > From: Bernhard Reutner-Fischer [mailto:[email protected]]
> > Sent: den 14 juni 2016 11:40
> > To: Jonas Danielsson; [email protected]
> > Cc: Jonas Danielsson
> > Subject: Re: [PATCH] networking: ping: Avoid zero checksum in
> > simple ping
> > 
> > On June 14, 2016 8:30:37 AM GMT+02:00, Jonas Danielsson
> > <[email protected]> wrote:  
> > >The ICMP RFC says that identifier and sequence number may be zero.
> > >Having them zero for a Echo message, along with a data of zero:s as
> > >well will result in a Echo reply message with only zero:s.
> > >
> > >Some NAT implementations seem to get the checksum wrong on these
> > >packages. Setting a checksum of 0x0 instead of 0xffff.  
> > 
> > Who does that, for example?  
> 
> > >--- a/networking/ping.c
> > >+++ b/networking/ping.c
> > >@@ -214,6 +214,7 @@ static void ping4(len_and_sockaddr *lsa)
> > >   pkt = (struct icmp *) G.packet;
> > >   /*memset(pkt, 0, sizeof(G.packet)); already is */
> > >   pkt->icmp_type = ICMP_ECHO;
> > >+  pkt->icmp_id = (uint16_t) getpid();  
> > 
> > Why is getpid() superior to 1 or 42 for that matter?
> 
> It is not, but since CONFIG_FANCY_PING used getpid() I used
> It here as well. It could be 1 or 42.

Technically, if two users ping same host at same time, the ping replies
can be confused for each other. Ping tool should use random() or
getpid() or similar way to select id, and filter the responses to match
id sent.

/Timo
_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to