git://git.onelab.eu
/
sliver-openvswitch.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
netdev: Decouple creating and configuring network devices.
[sliver-openvswitch.git]
/
lib
/
netlink.c
diff --git
a/lib/netlink.c
b/lib/netlink.c
index
48a52ee
..
ec35849
100644
(file)
--- a/
lib/netlink.c
+++ b/
lib/netlink.c
@@
-25,6
+25,7
@@
#include "netlink-protocol.h"
#include "ofpbuf.h"
#include "timeval.h"
#include "netlink-protocol.h"
#include "ofpbuf.h"
#include "timeval.h"
+#include "unaligned.h"
#include "vlog.h"
VLOG_DEFINE_THIS_MODULE(netlink);
#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)
{
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.
}
/* 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)
{
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.
}
/* Returns the null-terminated string value in 'nla''s payload.
@@
-582,6
+585,9
@@
nl_policy_parse(const struct ofpbuf *msg, size_t nla_offset,
assert(n_required > 0);
--n_required;
}
assert(n_required > 0);
--n_required;
}
+ if (attrs[type]) {
+ VLOG_DBG_RL(&rl, "%zu: duplicate attr %"PRIu16, offset, type);
+ }
attrs[type] = nla;
} else {
/* Skip attribute type that we don't care about. */
attrs[type] = nla;
} else {
/* Skip attribute type that we don't care about. */