[PATCH] ethtool: RX NFC - Convert ip address to big endian.

Subsystems: the rest

STALE5539d

2 messages, 2 authors, 2011-08-15 · open the first message on its own page

[PATCH] ethtool: RX NFC - Convert ip address to big endian.

From: <hidden>
Date: 2011-08-15 15:48:58

From: Nir Muchtar <redacted>

Signed-off-by: Nir Muchtar <redacted>
---
Unless there's a reason that I'm missing to why the user
is expected to specify ip addresses in big endian format.

 rxclass.c |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/rxclass.c b/rxclass.c
index b227901..98d035b 100644
--- a/rxclass.c
+++ b/rxclass.c
@@ -704,7 +704,7 @@ static int rxclass_get_ulong(char *str, unsigned long long *val, int size)
 	return 0;
 }
 
-static int rxclass_get_ipv4(char *str, __be32 *val)
+static int rxclass_get_ipv4(char *str, u32 *val)
 {
 	if (!inet_pton(AF_INET, str, val))
 		return -1;
@@ -828,11 +828,11 @@ static int rxclass_get_val(char *str, unsigned char *p, u32 *flags,
 		break;
 	}
 	case OPT_IP4: {
-		__be32 val;
+		u32 val;
 		err = rxclass_get_ipv4(str, &val);
 		if (err)
 			return -1;
-		*(__be32 *)&p[opt->offset] = val;
+		*(__be32 *)&p[opt->offset] = htonl((u32)val);
 		if (opt->moffset >= 0)
 			*(__be32 *)&p[opt->moffset] = (__be32)mask;
 		break;
@@ -929,11 +929,11 @@ static int rxclass_get_mask(char *str, unsigned char *p,
 		break;
 	}
 	case OPT_IP4: {
-		__be32 val;
+		u32 val;
 		err = rxclass_get_ipv4(str, &val);
 		if (err)
 			return -1;
-		*(__be32 *)&p[opt->moffset] = ~val;
+		*(__be32 *)&p[opt->moffset] = ~htonl((u32)val);
 		break;
 	}
 	case OPT_MAC: {
-- 
1.7.1

Re: [PATCH] ethtool: RX NFC - Convert ip address to big endian.

From: Ben Hutchings <hidden>
Date: 2011-08-15 16:00:25

On Mon, 2011-08-15 at 18:40 +0300, nirmu@dev.mellanox.co.il wrote:
quoted hunk
From: Nir Muchtar <redacted>

Signed-off-by: Nir Muchtar <redacted>
---
Unless there's a reason that I'm missing to why the user
is expected to specify ip addresses in big endian format.

 rxclass.c |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/rxclass.c b/rxclass.c
index b227901..98d035b 100644
--- a/rxclass.c
+++ b/rxclass.c
@@ -704,7 +704,7 @@ static int rxclass_get_ulong(char *str, unsigned long long *val, int size)
 	return 0;
 }
 
-static int rxclass_get_ipv4(char *str, __be32 *val)
+static int rxclass_get_ipv4(char *str, u32 *val)
 {
 	if (!inet_pton(AF_INET, str, val))
 		return -1;
[...]

inet_pton() does the conversion to big-endian format.

Ben.

-- 
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help