aboutsummaryrefslogtreecommitdiffstats
path: root/net/netlink/attr.c
diff options
context:
space:
mode:
authorPatrick McHardy <kaber@trash.net>2008-01-23 01:10:59 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 18:11:09 -0500
commit01480e1cf5e2118eba8a8968239f3242072f9563 (patch)
treec967ad4acfeb3929ff191457a45fdb47eaf94bdb /net/netlink/attr.c
parent2eb9d75c723252c1fa8f0206e6a0df220e3c64c0 (diff)
[NETLINK]: Add nla_append()
Used to append data to a message without a header or padding. Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/netlink/attr.c')
-rw-r--r--net/netlink/attr.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/net/netlink/attr.c b/net/netlink/attr.c
index ec39d12c2423..feb326f4a752 100644
--- a/net/netlink/attr.c
+++ b/net/netlink/attr.c
@@ -430,6 +430,24 @@ int nla_put_nohdr(struct sk_buff *skb, int attrlen, const void *data)
430 return 0; 430 return 0;
431} 431}
432 432
433/**
434 * nla_append - Add a netlink attribute without header or padding
435 * @skb: socket buffer to add attribute to
436 * @attrlen: length of attribute payload
437 * @data: head of attribute payload
438 *
439 * Returns -1 if the tailroom of the skb is insufficient to store
440 * the attribute payload.
441 */
442int nla_append(struct sk_buff *skb, int attrlen, const void *data)
443{
444 if (unlikely(skb_tailroom(skb) < NLA_ALIGN(attrlen)))
445 return -1;
446
447 memcpy(skb_put(skb, attrlen), data, attrlen);
448 return 0;
449}
450
433EXPORT_SYMBOL(nla_validate); 451EXPORT_SYMBOL(nla_validate);
434EXPORT_SYMBOL(nla_parse); 452EXPORT_SYMBOL(nla_parse);
435EXPORT_SYMBOL(nla_find); 453EXPORT_SYMBOL(nla_find);
@@ -445,3 +463,4 @@ EXPORT_SYMBOL(nla_put_nohdr);
445EXPORT_SYMBOL(nla_memcpy); 463EXPORT_SYMBOL(nla_memcpy);
446EXPORT_SYMBOL(nla_memcmp); 464EXPORT_SYMBOL(nla_memcmp);
447EXPORT_SYMBOL(nla_strcmp); 465EXPORT_SYMBOL(nla_strcmp);
466EXPORT_SYMBOL(nla_append);