[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>
This commit is contained in:
parent
2eb9d75c72
commit
01480e1cf5
|
@ -91,6 +91,7 @@
|
|||
* nla_reserve_nohdr(skb, len) reserve room for an attribute w/o hdr
|
||||
* nla_put(skb, type, len, data) add attribute to skb
|
||||
* nla_put_nohdr(skb, len, data) add attribute w/o hdr
|
||||
* nla_append(skb, len, data) append data to skb
|
||||
*
|
||||
* Attribute Construction for Basic Types:
|
||||
* nla_put_u8(skb, type, value) add u8 attribute to skb
|
||||
|
@ -254,6 +255,8 @@ extern int nla_put(struct sk_buff *skb, int attrtype,
|
|||
int attrlen, const void *data);
|
||||
extern int nla_put_nohdr(struct sk_buff *skb, int attrlen,
|
||||
const void *data);
|
||||
extern int nla_append(struct sk_buff *skb, int attrlen,
|
||||
const void *data);
|
||||
|
||||
/**************************************************************************
|
||||
* Netlink Messages
|
||||
|
|
|
@ -430,6 +430,24 @@ int nla_put_nohdr(struct sk_buff *skb, int attrlen, const void *data)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* nla_append - Add a netlink attribute without header or padding
|
||||
* @skb: socket buffer to add attribute to
|
||||
* @attrlen: length of attribute payload
|
||||
* @data: head of attribute payload
|
||||
*
|
||||
* Returns -1 if the tailroom of the skb is insufficient to store
|
||||
* the attribute payload.
|
||||
*/
|
||||
int nla_append(struct sk_buff *skb, int attrlen, const void *data)
|
||||
{
|
||||
if (unlikely(skb_tailroom(skb) < NLA_ALIGN(attrlen)))
|
||||
return -1;
|
||||
|
||||
memcpy(skb_put(skb, attrlen), data, attrlen);
|
||||
return 0;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(nla_validate);
|
||||
EXPORT_SYMBOL(nla_parse);
|
||||
EXPORT_SYMBOL(nla_find);
|
||||
|
@ -445,3 +463,4 @@ EXPORT_SYMBOL(nla_put_nohdr);
|
|||
EXPORT_SYMBOL(nla_memcpy);
|
||||
EXPORT_SYMBOL(nla_memcmp);
|
||||
EXPORT_SYMBOL(nla_strcmp);
|
||||
EXPORT_SYMBOL(nla_append);
|
||||
|
|
Loading…
Reference in New Issue