aboutsummaryrefslogtreecommitdiff
path: root/lib/netlink.c
diff options
context:
space:
mode:
authorBen Pfaff <blp@nicira.com>2011-01-18 11:51:46 -0800
committerBen Pfaff <blp@nicira.com>2011-02-05 13:14:49 -0800
commit34c7bb50971af21c3d6152b61c7a55ddff4d09ee (patch)
tree1ef3bee5595ec58607e6b079be6ecbb01bbfe3c9 /lib/netlink.c
parentc4617b3c28b9a96e09fdbbe2682b875dbfeaec5b (diff)
netlink: Use proper types and functions for half-aligned 64-bit values.
These haven't showed up as problems yet in my tests but it is only a matter of time.
Diffstat (limited to 'lib/netlink.c')
-rw-r--r--lib/netlink.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/netlink.c b/lib/netlink.c
index 725bba02..ec358495 100644
--- a/lib/netlink.c
+++ b/lib/netlink.c
@@ -25,6 +25,7 @@
#include "netlink-protocol.h"
#include "ofpbuf.h"
#include "timeval.h"
+#include "unaligned.h"
#include "vlog.h"
VLOG_DEFINE_THIS_MODULE(netlink);
@@ -435,7 +436,8 @@ nl_attr_get_u32(const struct nlattr *nla)
uint64_t
nl_attr_get_u64(const struct nlattr *nla)
{
- return NL_ATTR_GET_AS(nla, uint64_t);
+ const ovs_32aligned_u64 *x = nl_attr_get_unspec(nla, sizeof *x);
+ return get_32aligned_u64(x);
}
/* Returns the 16-bit network byte order value in 'nla''s payload.
@@ -462,7 +464,8 @@ nl_attr_get_be32(const struct nlattr *nla)
ovs_be64
nl_attr_get_be64(const struct nlattr *nla)
{
- return NL_ATTR_GET_AS(nla, ovs_be64);
+ const ovs_32aligned_be64 *x = nl_attr_get_unspec(nla, sizeof *x);
+ return get_32aligned_be64(x);
}
/* Returns the null-terminated string value in 'nla''s payload.