diff options
author | Thomas Haller <thaller@redhat.com> | 2019-02-19 16:35:43 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2019-02-21 21:02:51 +0100 |
commit | 4bd6307193b67c9a2a72225ee60fc7899f591179 (patch) | |
tree | 2a3e9407475a1d2094a1a5f137e64bde547150d7 | |
parent | 18d5f4acf8cc7cf1b71f6d9c49357d30664c406f (diff) | |
download | NetworkManager-4bd6307193b67c9a2a72225ee60fc7899f591179.tar.gz |
platform/netlink: cleanup nlmsg_append() and add nlmsg_append_struct() macro
-rw-r--r-- | src/platform/nm-netlink.c | 12 | ||||
-rw-r--r-- | src/platform/nm-netlink.h | 8 |
2 files changed, 18 insertions, 2 deletions
diff --git a/src/platform/nm-netlink.c b/src/platform/nm-netlink.c index 8e12fad3ce..71506a2c37 100644 --- a/src/platform/nm-netlink.c +++ b/src/platform/nm-netlink.c @@ -214,6 +214,8 @@ nlmsg_reserve (struct nl_msg *n, size_t len, int pad) size_t nlmsg_len = n->nm_nlh->nlmsg_len; size_t tlen; + nm_assert (pad >= 0); + if (len > n->nm_size) return NULL; @@ -328,10 +330,18 @@ void nlmsg_free (struct nl_msg *msg) /*****************************************************************************/ int -nlmsg_append (struct nl_msg *n, void *data, size_t len, int pad) +nlmsg_append (struct nl_msg *n, + const void *data, + size_t len, + int pad) { void *tmp; + nm_assert (n); + nm_assert (data); + nm_assert (len > 0); + nm_assert (pad >= 0); + tmp = nlmsg_reserve (n, len, pad); if (tmp == NULL) return -ENOMEM; diff --git a/src/platform/nm-netlink.h b/src/platform/nm-netlink.h index 6d71562d9c..094a3c6fde 100644 --- a/src/platform/nm-netlink.h +++ b/src/platform/nm-netlink.h @@ -400,7 +400,13 @@ struct nl_msg *nlmsg_alloc_simple (int nlmsgtype, int flags); void *nlmsg_reserve (struct nl_msg *n, size_t len, int pad); -int nlmsg_append (struct nl_msg *n, void *data, size_t len, int pad); +int nlmsg_append (struct nl_msg *n, + const void *data, + size_t len, + int pad); + +#define nlmsg_append_struct(n, data) \ + nlmsg_append (n, (data), sizeof (*(data)), NLMSG_ALIGNTO) void nlmsg_free (struct nl_msg *msg); |