summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2019-02-19 16:35:43 +0100
committerThomas Haller <thaller@redhat.com>2019-02-21 21:02:51 +0100
commit4bd6307193b67c9a2a72225ee60fc7899f591179 (patch)
tree2a3e9407475a1d2094a1a5f137e64bde547150d7
parent18d5f4acf8cc7cf1b71f6d9c49357d30664c406f (diff)
downloadNetworkManager-4bd6307193b67c9a2a72225ee60fc7899f591179.tar.gz
platform/netlink: cleanup nlmsg_append() and add nlmsg_append_struct() macro
-rw-r--r--src/platform/nm-netlink.c12
-rw-r--r--src/platform/nm-netlink.h8
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);