Skip to content

Commit

Permalink
fix endian type of udp connect / reply messages
Browse files Browse the repository at this point in the history
for example. if you run a iperf3 server on a little endian host, but
client is bug endian it will result in the following error if you try to
start a udp bandwidth test

Connect received for Socket 5, sz=4, buf=36373839, i=0, max_len_wait_for_reply=4
iperf3: error - unable to read from stream socket: Invalid argument

the reason that that all messages are reversed. fix this by swapping the
message values to little endian host order on big endian systems

Signed-off-by: Sebastian Gottschall <[email protected]>
  • Loading branch information
BrainSlayer committed Feb 7, 2023
1 parent 758bfd8 commit 9caff37
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 1 deletion.
8 changes: 8 additions & 0 deletions src/iperf.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@
#include "queue.h"
#include "cjson.h"
#include "iperf_time.h"
#include "portable_endian.h"

#if defined(HAVE_SSL)
#include <openssl/bio.h>
Expand Down Expand Up @@ -431,9 +432,16 @@ struct iperf_test
extern int gerror; /* error value from getaddrinfo(3), for use in internal error handling */

/* UDP "connect" message and reply (textual value for Wireshark, etc. readability - legacy was numeric) */

#if BYTE_ORDER == BIG_ENDIAN
#define UDP_CONNECT_MSG 0x39383736
#define UDP_CONNECT_REPLY 0x36373839
#define LEGACY_UDP_CONNECT_REPLY 0xb168de3a
#else
#define UDP_CONNECT_MSG 0x36373839 // "6789" - legacy value was 123456789
#define UDP_CONNECT_REPLY 0x39383736 // "9876" - legacy value was 987654321
#define LEGACY_UDP_CONNECT_REPLY 987654321 // Old servers may still reply with the legacy value
#endif

/* In Reverse mode, maximum number of packets to wait for "accept" response - to handle out of order packets */
#define MAX_REVERSE_OUT_OF_ORDER_PACKETS 2
Expand Down
1 change: 0 additions & 1 deletion src/iperf_udp.c
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@
#include "timer.h"
#include "net.h"
#include "cjson.h"
#include "portable_endian.h"

#if defined(HAVE_INTTYPES_H)
# include <inttypes.h>
Expand Down

0 comments on commit 9caff37

Please sign in to comment.