From: Johannes Berg Date: Fri, 7 Dec 2012 01:05:16 +0000 (-0800) Subject: compat: backport unsigned netlink attribute accessors X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=3a85112cbc780562f34fff5b97e6ce5f75b5cd45;p=openwrt%2Fstaging%2Fblogic.git compat: backport unsigned netlink attribute accessors These were added upstream in commit 4778e0be16c291ba6d9d55eeff3a6764fc84a071. Signed-off-by: Johannes Berg Signed-off-by: Luis R. Rodriguez --- diff --git a/include/linux/compat-3.7.h b/include/linux/compat-3.7.h index 9e8d6750ac73..bac76a3a114e 100644 --- a/include/linux/compat-3.7.h +++ b/include/linux/compat-3.7.h @@ -13,6 +13,7 @@ #include #include #include +#include #define VM_DONTDUMP VM_NODUMP @@ -108,6 +109,90 @@ static inline void eth_zero_addr(u8 *addr) memset(addr, 0x00, ETH_ALEN); } +/** + * nla_put_s8 - Add a s8 netlink attribute to a socket buffer + * @skb: socket buffer to add attribute to + * @attrtype: attribute type + * @value: numeric value + */ +static inline int nla_put_s8(struct sk_buff *skb, int attrtype, s8 value) +{ + return nla_put(skb, attrtype, sizeof(s8), &value); +} + +/** + * nla_put_s16 - Add a s16 netlink attribute to a socket buffer + * @skb: socket buffer to add attribute to + * @attrtype: attribute type + * @value: numeric value + */ +static inline int nla_put_s16(struct sk_buff *skb, int attrtype, s16 value) +{ + return nla_put(skb, attrtype, sizeof(s16), &value); +} + +/** + * nla_put_s32 - Add a s32 netlink attribute to a socket buffer + * @skb: socket buffer to add attribute to + * @attrtype: attribute type + * @value: numeric value + */ +static inline int nla_put_s32(struct sk_buff *skb, int attrtype, s32 value) +{ + return nla_put(skb, attrtype, sizeof(s32), &value); +} + +/** + * nla_put_s64 - Add a s64 netlink attribute to a socket buffer + * @skb: socket buffer to add attribute to + * @attrtype: attribute type + * @value: numeric value + */ +static inline int nla_put_s64(struct sk_buff *skb, int attrtype, s64 value) +{ + return nla_put(skb, attrtype, sizeof(s64), &value); +} + +/** + * nla_get_s32 - return payload of s32 attribute + * @nla: s32 netlink attribute + */ +static inline s32 nla_get_s32(const struct nlattr *nla) +{ + return *(s32 *) nla_data(nla); +} + +/** + * nla_get_s16 - return payload of s16 attribute + * @nla: s16 netlink attribute + */ +static inline s16 nla_get_s16(const struct nlattr *nla) +{ + return *(s16 *) nla_data(nla); +} + +/** + * nla_get_s8 - return payload of s8 attribute + * @nla: s8 netlink attribute + */ +static inline s8 nla_get_s8(const struct nlattr *nla) +{ + return *(s8 *) nla_data(nla); +} + +/** + * nla_get_s64 - return payload of s64 attribute + * @nla: s64 netlink attribute + */ +static inline s64 nla_get_s64(const struct nlattr *nla) +{ + s64 tmp; + + nla_memcpy(&tmp, nla, sizeof(tmp)); + + return tmp; +} + #else /* (LINUX_VERSION_CODE > KERNEL_VERSION(3,7,0)) */ #define netlink_notify_portid(__notify) (__notify->portid) #define genl_info_snd_portid(__genl_info) (__genl_info->snd_portid)