From: David Ahern <dsah...@gmail.com>

Some of the inner headers are not 4-byte aligned, so use
NLMSG_LENGTH instead of sizeof(req) to set nlmsg_len.

Signed-off-by: David Ahern <dsah...@gmail.com>
---
 lib/libnetlink.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/lib/libnetlink.c b/lib/libnetlink.c
index 9276be29363f..449536197f60 100644
--- a/lib/libnetlink.c
+++ b/lib/libnetlink.c
@@ -238,7 +238,7 @@ int rtnl_addrdump_req(struct rtnl_handle *rth, int family)
                struct nlmsghdr nlh;
                struct ifaddrmsg ifm;
        } req = {
-               .nlh.nlmsg_len = sizeof(req),
+               .nlh.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifaddrmsg)),
                .nlh.nlmsg_type = RTM_GETADDR,
                .nlh.nlmsg_flags = NLM_F_DUMP | NLM_F_REQUEST,
                .nlh.nlmsg_seq = rth->dump = ++rth->seq,
@@ -254,7 +254,7 @@ int rtnl_addrlbldump_req(struct rtnl_handle *rth, int 
family)
                struct nlmsghdr nlh;
                struct ifaddrlblmsg ifal;
        } req = {
-               .nlh.nlmsg_len = sizeof(req),
+               .nlh.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifaddrlblmsg)),
                .nlh.nlmsg_type = RTM_GETADDRLABEL,
                .nlh.nlmsg_flags = NLM_F_DUMP | NLM_F_REQUEST,
                .nlh.nlmsg_seq = rth->dump = ++rth->seq,
@@ -296,7 +296,7 @@ int rtnl_ruledump_req(struct rtnl_handle *rth, int family)
                struct nlmsghdr nlh;
                struct fib_rule_hdr frh;
        } req = {
-               .nlh.nlmsg_len = sizeof(req),
+               .nlh.nlmsg_len = NLMSG_LENGTH(sizeof(struct fib_rule_hdr)),
                .nlh.nlmsg_type = RTM_GETRULE,
                .nlh.nlmsg_flags = NLM_F_DUMP | NLM_F_REQUEST,
                .nlh.nlmsg_seq = rth->dump = ++rth->seq,
@@ -312,7 +312,7 @@ int rtnl_neighdump_req(struct rtnl_handle *rth, int family)
                struct nlmsghdr nlh;
                struct ndmsg ndm;
        } req = {
-               .nlh.nlmsg_len = sizeof(req),
+               .nlh.nlmsg_len = NLMSG_LENGTH(sizeof(struct ndmsg)),
                .nlh.nlmsg_type = RTM_GETNEIGH,
                .nlh.nlmsg_flags = NLM_F_DUMP | NLM_F_REQUEST,
                .nlh.nlmsg_seq = rth->dump = ++rth->seq,
@@ -328,7 +328,7 @@ int rtnl_neightbldump_req(struct rtnl_handle *rth, int 
family)
                struct nlmsghdr nlh;
                struct ndtmsg ndtmsg;
        } req = {
-               .nlh.nlmsg_len = sizeof(req),
+               .nlh.nlmsg_len = NLMSG_LENGTH(sizeof(struct ndtmsg)),
                .nlh.nlmsg_type = RTM_GETNEIGHTBL,
                .nlh.nlmsg_flags = NLM_F_DUMP | NLM_F_REQUEST,
                .nlh.nlmsg_seq = rth->dump = ++rth->seq,
@@ -344,7 +344,7 @@ int rtnl_mdbdump_req(struct rtnl_handle *rth, int family)
                struct nlmsghdr nlh;
                struct br_port_msg bpm;
        } req = {
-               .nlh.nlmsg_len = sizeof(req),
+               .nlh.nlmsg_len = NLMSG_LENGTH(sizeof(struct br_port_msg)),
                .nlh.nlmsg_type = RTM_GETMDB,
                .nlh.nlmsg_flags = NLM_F_DUMP | NLM_F_REQUEST,
                .nlh.nlmsg_seq = rth->dump = ++rth->seq,
@@ -360,7 +360,7 @@ int rtnl_netconfdump_req(struct rtnl_handle *rth, int 
family)
                struct nlmsghdr nlh;
                struct netconfmsg ncm;
        } req = {
-               .nlh.nlmsg_len = sizeof(req),
+               .nlh.nlmsg_len = NLMSG_LENGTH(sizeof(struct netconfmsg)),
                .nlh.nlmsg_type = RTM_GETNETCONF,
                .nlh.nlmsg_flags = NLM_F_DUMP | NLM_F_REQUEST,
                .nlh.nlmsg_seq = rth->dump = ++rth->seq,
@@ -376,7 +376,7 @@ int rtnl_nsiddump_req(struct rtnl_handle *rth, int family)
                struct nlmsghdr nlh;
                struct rtgenmsg rtm;
        } req = {
-               .nlh.nlmsg_len = sizeof(req),
+               .nlh.nlmsg_len = NLMSG_LENGTH(sizeof(struct rtgenmsg)),
                .nlh.nlmsg_type = RTM_GETNSID,
                .nlh.nlmsg_flags = NLM_F_DUMP | NLM_F_REQUEST,
                .nlh.nlmsg_seq = rth->dump = ++rth->seq,
-- 
2.11.0

Reply via email to