diff options
Diffstat (limited to 'net/netlink/af_netlink.c')
| -rw-r--r-- | net/netlink/af_netlink.c | 18 | 
1 files changed, 18 insertions, 0 deletions
diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c index 629b06182f3..4d751e3d4b4 100644 --- a/net/netlink/af_netlink.c +++ b/net/netlink/af_netlink.c @@ -1645,6 +1645,24 @@ static void netlink_destroy_callback(struct netlink_callback *cb)  	kfree(cb);  } +struct nlmsghdr * +__nlmsg_put(struct sk_buff *skb, u32 pid, u32 seq, int type, int len, int flags) +{ +	struct nlmsghdr *nlh; +	int size = NLMSG_LENGTH(len); + +	nlh = (struct nlmsghdr*)skb_put(skb, NLMSG_ALIGN(size)); +	nlh->nlmsg_type = type; +	nlh->nlmsg_len = size; +	nlh->nlmsg_flags = flags; +	nlh->nlmsg_pid = pid; +	nlh->nlmsg_seq = seq; +	if (!__builtin_constant_p(size) || NLMSG_ALIGN(size) - size != 0) +		memset(NLMSG_DATA(nlh) + len, 0, NLMSG_ALIGN(size) - size); +	return nlh; +} +EXPORT_SYMBOL(__nlmsg_put); +  /*   * It looks a bit ugly.   * It would be better to create kernel thread.  |