From: Ammar Faizi <[email protected]>
To: Jens Axboe <[email protected]>
Cc: Ammar Faizi <[email protected]>,
io_uring Mailing List <[email protected]>,
Louvian Lyndal <[email protected]>
Subject: [PATCH liburing v2 1/2] test: Fix endianess issue on `bind()` and `connect()`
Date: Mon, 27 Sep 2021 20:40:22 +0700 [thread overview]
Message-ID: <[email protected]> (raw)
In-Reply-To: <[email protected]>
When we call `bind()` or `connect()`, the `addr` and `port` should be
in big endian value representation.
Portability notes:
- Do not hard code the address with integer like this `0x0100007fU`.
Instead, use `inet_addr("127.0.0.1")` to ensure portability for
the machine with different endianess. It's also cleaner and more
readable to use `inet_addr()` from `#include <arpa/inet.h>`.
- Use `htons(port_number)` to make sure the port_number is properly
choosen instead directly assign it with integer (still about
endianess problem).
This commit fixes endianess issue in these files:
test/232c93d07b74-test.c
test/accept-link.c
test/accept.c
test/poll-link.c
test/shutdown.c
test/socket-rw-eagain.c
test/socket-rw.c
Fixes: 08bd815170ab4352d71019f4d3e532cd3f6f0489 ("Un-DOSify test/232c93d07b74-test.c")
Fixes: 4bce856d43ab1f9a64477aa5a8f9f02f53e64b74 ("Improve reliability of poll/accept-link tests")
Fixes: 76e3b7921fee98a5627cd270628b6a5160d3857d ("Add nonblock empty socket read test")
Fixes: 7de625356997dea66826007676224285d407a0fe ("test/accept: code reuse cleanup")
Fixes: 8a3a8d744db428a326e2f54093665411734fa3a8 ("Add IORING_OP_SHUTDOWN test case")
Fixes: e3adbfc235da96ac97a9cafac78292a22eb12036 ("Moves function calls out of assert().")
Suggested-by: Louvian Lyndal <[email protected]>
Signed-off-by: Ammar Faizi <[email protected]>
---
test/232c93d07b74-test.c | 9 +++++----
test/accept-link.c | 11 +++++++----
test/accept.c | 5 +++--
test/poll-link.c | 11 +++++++----
test/shutdown.c | 5 +++--
test/socket-rw-eagain.c | 5 +++--
test/socket-rw.c | 5 +++--
7 files changed, 31 insertions(+), 20 deletions(-)
diff --git a/test/232c93d07b74-test.c b/test/232c93d07b74-test.c
index cd194cb..4153aef 100644
--- a/test/232c93d07b74-test.c
+++ b/test/232c93d07b74-test.c
@@ -19,6 +19,7 @@
#include <sys/un.h>
#include <netinet/tcp.h>
#include <netinet/in.h>
+#include <arpa/inet.h>
#include "liburing.h"
@@ -75,8 +76,8 @@ static void *rcv(void *arg)
struct sockaddr_in addr;
addr.sin_family = AF_INET;
- addr.sin_port = PORT;
- addr.sin_addr.s_addr = 0x0100007fU;
+ addr.sin_port = htons(PORT);
+ addr.sin_addr.s_addr = inet_addr("127.0.0.1");
res = bind(s0, (struct sockaddr *) &addr, sizeof(addr));
assert(res != -1);
} else {
@@ -190,8 +191,8 @@ static void *snd(void *arg)
struct sockaddr_in addr;
addr.sin_family = AF_INET;
- addr.sin_port = PORT;
- addr.sin_addr.s_addr = 0x0100007fU;
+ addr.sin_port = htons(PORT);
+ addr.sin_addr.s_addr = inet_addr("127.0.0.1");
ret = connect(s0, (struct sockaddr*) &addr, sizeof(addr));
assert(ret != -1);
} else {
diff --git a/test/accept-link.c b/test/accept-link.c
index 605e0ec..f111275 100644
--- a/test/accept-link.c
+++ b/test/accept-link.c
@@ -11,6 +11,7 @@
#include <netinet/tcp.h>
#include <netinet/in.h>
#include <poll.h>
+#include <arpa/inet.h>
#include "liburing.h"
@@ -42,7 +43,8 @@ struct data {
unsigned expected[2];
unsigned just_positive[2];
unsigned long timeout;
- int port;
+ unsigned short port;
+ unsigned int addr;
int stop;
};
@@ -63,7 +65,7 @@ static void *send_thread(void *arg)
addr.sin_family = AF_INET;
addr.sin_port = data->port;
- addr.sin_addr.s_addr = 0x0100007fU;
+ addr.sin_addr.s_addr = data->addr;
ret = connect(s0, (struct sockaddr*)&addr, sizeof(addr));
assert(ret != -1);
@@ -95,11 +97,12 @@ void *recv_thread(void *arg)
struct sockaddr_in addr;
addr.sin_family = AF_INET;
- addr.sin_addr.s_addr = 0x0100007fU;
+ data->addr = inet_addr("127.0.0.1");
+ addr.sin_addr.s_addr = data->addr;
i = 0;
do {
- data->port = 1025 + (rand() % 64510);
+ data->port = htons(1025 + (rand() % 64510));
addr.sin_port = data->port;
if (bind(s0, (struct sockaddr*)&addr, sizeof(addr)) != -1)
diff --git a/test/accept.c b/test/accept.c
index 0c69b98..a4fc677 100644
--- a/test/accept.c
+++ b/test/accept.c
@@ -17,6 +17,7 @@
#include <sys/un.h>
#include <netinet/tcp.h>
#include <netinet/in.h>
+#include <arpa/inet.h>
#include "helpers.h"
#include "liburing.h"
@@ -107,8 +108,8 @@ static int start_accept_listen(struct sockaddr_in *addr, int port_off)
addr = &laddr;
addr->sin_family = AF_INET;
- addr->sin_port = 0x1235 + port_off;
- addr->sin_addr.s_addr = 0x0100007fU;
+ addr->sin_port = htons(0x1235 + port_off);
+ addr->sin_addr.s_addr = inet_addr("127.0.0.1");
ret = bind(fd, (struct sockaddr*)addr, sizeof(*addr));
assert(ret != -1);
diff --git a/test/poll-link.c b/test/poll-link.c
index 4b4f9aa..197ad77 100644
--- a/test/poll-link.c
+++ b/test/poll-link.c
@@ -11,6 +11,7 @@
#include <netinet/tcp.h>
#include <netinet/in.h>
#include <poll.h>
+#include <arpa/inet.h>
#include "liburing.h"
@@ -42,7 +43,8 @@ struct data {
unsigned expected[2];
unsigned is_mask[2];
unsigned long timeout;
- int port;
+ unsigned short port;
+ unsigned int addr;
int stop;
};
@@ -59,7 +61,7 @@ static void *send_thread(void *arg)
addr.sin_family = AF_INET;
addr.sin_port = data->port;
- addr.sin_addr.s_addr = 0x0100007fU;
+ addr.sin_addr.s_addr = data->addr;
if (connect(s0, (struct sockaddr*)&addr, sizeof(addr)) != -1)
wait_for_var(&recv_thread_done);
@@ -90,11 +92,12 @@ void *recv_thread(void *arg)
struct sockaddr_in addr;
addr.sin_family = AF_INET;
- addr.sin_addr.s_addr = 0x0100007fU;
+ data->addr = inet_addr("127.0.0.1");
+ addr.sin_addr.s_addr = data->addr;
i = 0;
do {
- data->port = 1025 + (rand() % 64510);
+ data->port = htons(1025 + (rand() % 64510));
addr.sin_port = data->port;
if (bind(s0, (struct sockaddr*)&addr, sizeof(addr)) != -1)
diff --git a/test/shutdown.c b/test/shutdown.c
index 5aa1371..20bcc77 100644
--- a/test/shutdown.c
+++ b/test/shutdown.c
@@ -15,6 +15,7 @@
#include <sys/un.h>
#include <netinet/tcp.h>
#include <netinet/in.h>
+#include <arpa/inet.h>
#include "liburing.h"
@@ -42,8 +43,8 @@ int main(int argc, char *argv[])
assert(ret != -1);
addr.sin_family = AF_INET;
- addr.sin_port = (rand() % 61440) + 4096;
- addr.sin_addr.s_addr = 0x0100007fU;
+ addr.sin_port = htons((rand() % 61440) + 4096);
+ addr.sin_addr.s_addr = inet_addr("127.0.0.1");
ret = bind(recv_s0, (struct sockaddr*)&addr, sizeof(addr));
assert(ret != -1);
diff --git a/test/socket-rw-eagain.c b/test/socket-rw-eagain.c
index cc87aca..9854e00 100644
--- a/test/socket-rw-eagain.c
+++ b/test/socket-rw-eagain.c
@@ -15,6 +15,7 @@
#include <sys/un.h>
#include <netinet/tcp.h>
#include <netinet/in.h>
+#include <arpa/inet.h>
#include "liburing.h"
@@ -38,10 +39,10 @@ int main(int argc, char *argv[])
assert(ret != -1);
addr.sin_family = AF_INET;
- addr.sin_addr.s_addr = 0x0100007fU;
+ addr.sin_addr.s_addr = inet_addr("127.0.0.1");
do {
- addr.sin_port = (rand() % 61440) + 4096;
+ addr.sin_port = htons((rand() % 61440) + 4096);
ret = bind(recv_s0, (struct sockaddr*)&addr, sizeof(addr));
if (!ret)
break;
diff --git a/test/socket-rw.c b/test/socket-rw.c
index 1b731b2..5afd14d 100644
--- a/test/socket-rw.c
+++ b/test/socket-rw.c
@@ -17,6 +17,7 @@
#include <sys/un.h>
#include <netinet/tcp.h>
#include <netinet/in.h>
+#include <arpa/inet.h>
#include "liburing.h"
@@ -40,10 +41,10 @@ int main(int argc, char *argv[])
assert(ret != -1);
addr.sin_family = AF_INET;
- addr.sin_addr.s_addr = 0x0100007fU;
+ addr.sin_addr.s_addr = inet_addr("127.0.0.1");
do {
- addr.sin_port = (rand() % 61440) + 4096;
+ addr.sin_port = htons((rand() % 61440) + 4096);
ret = bind(recv_s0, (struct sockaddr*)&addr, sizeof(addr));
if (!ret)
break;
--
2.30.2
next prev parent reply other threads:[~2021-09-27 13:40 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-27 4:37 [PATCH liburing 0/2] Fix endianess issue and add srand() Ammar Faizi
2021-09-27 4:37 ` [PATCH liburing 1/2] test: Fix endianess issue on `bind()` and `connect()` Ammar Faizi
2021-09-27 4:37 ` [PATCH liburing 2/2] test/accept-link: Add `srand()` for better randomness Ammar Faizi
2021-09-27 13:28 ` Jens Axboe
2021-09-27 13:40 ` [PATCH liburing v2 0/2] Fix endianess issue and add srand() Ammar Faizi
2021-09-27 13:40 ` Ammar Faizi [this message]
2021-09-27 13:40 ` [PATCH liburing v2 2/2] test/accept-link: Add `srand()` for better randomness Ammar Faizi
2021-09-27 13:45 ` [PATCH liburing v2 0/2] Fix endianess issue and add srand() Jens Axboe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox