diff mbox series

net/tst_net_vars: Fix IPv4 network computing on big endianness

Message ID 20190614122716.2383-1-pvorel@suse.cz
State Accepted
Delegated to: Petr Vorel
Headers show
Series net/tst_net_vars: Fix IPv4 network computing on big endianness | expand

Commit Message

Petr Vorel June 14, 2019, 12:27 p.m. UTC
by converting IP to network byte order and adjust printing.

Signed-off-by: Petr Vorel <pvorel@suse.cz>
---
 testcases/lib/tst_net_vars.c | 16 ++++++----------
 1 file changed, 6 insertions(+), 10 deletions(-)

Comments

Petr Vorel June 17, 2019, 12:21 p.m. UTC | #1
Hi,

> by converting IP to network byte order and adjust printing.

> Signed-off-by: Petr Vorel <pvorel@suse.cz>
> ---
>  testcases/lib/tst_net_vars.c | 16 ++++++----------
>  1 file changed, 6 insertions(+), 10 deletions(-)

Merged.

Kind regards,
Petr
diff mbox series

Patch

diff --git a/testcases/lib/tst_net_vars.c b/testcases/lib/tst_net_vars.c
index 43cd92bcf..b1ea99df6 100644
--- a/testcases/lib/tst_net_vars.c
+++ b/testcases/lib/tst_net_vars.c
@@ -476,23 +476,19 @@  static char *get_ipv4_network(int ip, unsigned int prefix)
 	unsigned char byte;
 	unsigned int i;
 
+	ip = htonl(ip);
+
 	if (prefix > MAX_IPV4_PREFIX)
 		return NULL;
 
 	if (prefix == MAX_IPV4_PREFIX)
 		return strdup("\0");
 
-	prefix &= 0x18;
+	prefix &= MAX_IPV4_PREFIX - 8;
 
-	for (i = 0; i < MAX_IPV4_PREFIX && (prefix == 0 || i < prefix);
-	     i += 8) {
-		if (i == 0) {
-			byte = ip & 0xff;
-			sprintf(p_buf, "%d", byte);
-		} else {
-			byte = (ip >> i) & 0xff;
-			sprintf(p_buf, ".%d", byte);
-		}
+	for (i = prefix; i > 0; i -= 8) {
+		byte = (ip >> i) & 0xff;
+		sprintf(p_buf, i < prefix ? ".%d" : "%d", byte);
 		p_buf += strlen(p_buf);
 	}