batctl: tr / ping - ignore packets with wrong sequence number

Message ID 1328537057-19373-1-git-send-email-lindner_marek@yahoo.de (mailing list archive)
State Accepted, archived
Commit 2ecb2c8b060b63f801d9070633806a0ba5e6ff3f
Headers

Commit Message

Marek Lindner Feb. 6, 2012, 2:04 p.m. UTC
  Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
---
 ping.c       |    5 +++++
 traceroute.c |    5 +++++
 2 files changed, 10 insertions(+), 0 deletions(-)
  

Comments

Marek Lindner Feb. 11, 2012, 11:18 a.m. UTC | #1
On Monday, February 06, 2012 22:04:17 Marek Lindner wrote:
> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
> ---
>  ping.c       |    5 +++++
>  traceroute.c |    5 +++++
>  2 files changed, 10 insertions(+), 0 deletions(-)

Applied in revision 2ecb2c8.

Regards,
Marek
  

Patch

diff --git a/ping.c b/ping.c
index dff0f33..791cfb7 100644
--- a/ping.c
+++ b/ping.c
@@ -196,6 +196,7 @@  int ping(char *mesh_iface, int argc, char **argv)
 			goto sleep;
 		}
 
+read_packet:
 		start_timer();
 
 		FD_ZERO(&read_socket);
@@ -229,6 +230,10 @@  int ping(char *mesh_iface, int argc, char **argv)
 			goto sleep;
 		}
 
+		/* after receiving an unexpected seqno we keep waiting for our answer */
+		if (htons(seq_counter) != icmp_packet_in.seqno)
+			goto read_packet;
+
 		switch (icmp_packet_in.msg_type) {
 		case ECHO_REPLY:
 			time_delta = end_timer();
diff --git a/traceroute.c b/traceroute.c
index f9e62cd..fdc9e4a 100644
--- a/traceroute.c
+++ b/traceroute.c
@@ -142,6 +142,7 @@  int traceroute(char *mesh_iface, int argc, char **argv)
 				continue;
 			}
 
+read_packet:
 			start_timer();
 
 			tv.tv_sec = 2;
@@ -168,6 +169,10 @@  int traceroute(char *mesh_iface, int argc, char **argv)
 				continue;
 			}
 
+			/* after receiving an unexpected seqno we keep waiting for our answer */
+			if (htons(seq_counter) != icmp_packet_in.seqno)
+				goto read_packet;
+
 			switch (icmp_packet_in.msg_type) {
 			case ECHO_REPLY:
 				dst_reached = 1;