From 82239e6d455fc7d49f1db8dd3b4935b45b8c6fb3 Mon Sep 17 00:00:00 2001
From: Michael Tuexen <tuexen@fh-muenster.de>
Date: Sun, 22 Dec 2013 15:21:08 +0000
Subject: [PATCH] net-test: packetdrill: fix non aligned memory access to TCP
 SACK option

Fixes "make tests" on FreeBSD/arm.

Signed-off-by: tuexen@fh-muenster.de
---
 gtests/net/packetdrill/run_packet.c            | 13 +++++++------
 gtests/net/packetdrill/tcp_options_to_string.c |  6 ++----
 2 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/gtests/net/packetdrill/run_packet.c b/gtests/net/packetdrill/run_packet.c
index 639940fb..5b4c9f2b 100644
--- a/gtests/net/packetdrill/run_packet.c
+++ b/gtests/net/packetdrill/run_packet.c
@@ -422,12 +422,13 @@ static int offset_sack_blocks(struct packet *packet,
 				return STATUS_ERR;
 			int i = 0;
 			for (i = 0; i < num_blocks; ++i) {
-				struct sack_block *block =
-				    option->data.sack.block + i;
-				block->left =
-				    htonl(ntohl(block->left) + ack_offset);
-				block->right =
-				    htonl(ntohl(block->right) + ack_offset);
+				u32 val;
+				val = ntohl(option->data.sack.block[i].left);
+				val += ack_offset;
+				option->data.sack.block[i].left = htonl(val);
+				val = ntohl(option->data.sack.block[i].right);
+				val += ack_offset;
+				option->data.sack.block[i].right = htonl(val);
 			}
 		}
 	}
diff --git a/gtests/net/packetdrill/tcp_options_to_string.c b/gtests/net/packetdrill/tcp_options_to_string.c
index 758675a5..d022ec2c 100644
--- a/gtests/net/packetdrill/tcp_options_to_string.c
+++ b/gtests/net/packetdrill/tcp_options_to_string.c
@@ -92,13 +92,11 @@ int tcp_options_to_string(struct packet *packet,
 				goto out;
 			int i = 0;
 			for (i = 0; i < num_blocks; ++i) {
-				const struct sack_block *block =
-				    option->data.sack.block + i;
 				if (i > 0)
 					fputc(' ', s);
 				fprintf(s, "%u:%u",
-					ntohl(block->left),
-					ntohl(block->right));
+					ntohl(option->data.sack.block[i].left),
+					ntohl(option->data.sack.block[i].right));
 			}
 			break;
 
-- 
GitLab