platform/netlink: cleanup nlmsg_append() and add nlmsg_append_struct() macro

This commit is contained in:
Thomas Haller 2019-02-19 16:35:43 +01:00
parent 020000433b
commit 815e0329c0
2 changed files with 18 additions and 2 deletions

View file

@ -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;

View file

@ -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);