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