aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
Diffstat (limited to 'net')
-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);