diff options
Diffstat (limited to 'include/linux/genl_magic_struct.h')
| -rw-r--r-- | include/linux/genl_magic_struct.h | 52 | 
1 files changed, 38 insertions, 14 deletions
diff --git a/include/linux/genl_magic_struct.h b/include/linux/genl_magic_struct.h index 0fca21fd1af..ba911da84d9 100644 --- a/include/linux/genl_magic_struct.h +++ b/include/linux/genl_magic_struct.h @@ -87,28 +87,28 @@ enum {  /* possible field types */  #define __flg_field(attr_nr, attr_flag, name) \  	__field(attr_nr, attr_flag, name, NLA_U8, char, \ -			nla_get_u8, NLA_PUT_U8) +			nla_get_u8, NLA_PUT_U8, false)  #define __u8_field(attr_nr, attr_flag, name)	\  	__field(attr_nr, attr_flag, name, NLA_U8, unsigned char, \ -			nla_get_u8, NLA_PUT_U8) +			nla_get_u8, NLA_PUT_U8, false)  #define __u16_field(attr_nr, attr_flag, name)	\  	__field(attr_nr, attr_flag, name, NLA_U16, __u16, \ -			nla_get_u16, NLA_PUT_U16) +			nla_get_u16, NLA_PUT_U16, false)  #define __u32_field(attr_nr, attr_flag, name)	\  	__field(attr_nr, attr_flag, name, NLA_U32, __u32, \ -			nla_get_u32, NLA_PUT_U32) +			nla_get_u32, NLA_PUT_U32, false)  #define __s32_field(attr_nr, attr_flag, name)	\  	__field(attr_nr, attr_flag, name, NLA_U32, __s32, \ -			nla_get_u32, NLA_PUT_U32) +			nla_get_u32, NLA_PUT_U32, true)  #define __u64_field(attr_nr, attr_flag, name)	\  	__field(attr_nr, attr_flag, name, NLA_U64, __u64, \ -			nla_get_u64, NLA_PUT_U64) +			nla_get_u64, NLA_PUT_U64, false)  #define __str_field(attr_nr, attr_flag, name, maxlen) \  	__array(attr_nr, attr_flag, name, NLA_NUL_STRING, char, maxlen, \ -			nla_strlcpy, NLA_PUT) +			nla_strlcpy, NLA_PUT, false)  #define __bin_field(attr_nr, attr_flag, name, maxlen) \  	__array(attr_nr, attr_flag, name, NLA_BINARY, char, maxlen, \ -			nla_memcpy, NLA_PUT) +			nla_memcpy, NLA_PUT, false)  /* fields with default values */  #define __flg_field_def(attr_nr, attr_flag, name, default) \ @@ -174,11 +174,13 @@ enum {								\  };  #undef __field -#define __field(attr_nr, attr_flag, name, nla_type, type, __get, __put)	\ +#define __field(attr_nr, attr_flag, name, nla_type, type,	\ +		__get, __put, __is_signed)			\  	T_ ## name = (__u16)(attr_nr | attr_flag),  #undef __array -#define __array(attr_nr, attr_flag, name, nla_type, type, maxlen, __get, __put) \ +#define __array(attr_nr, attr_flag, name, nla_type, type,	\ +		maxlen, __get, __put, __is_signed)		\  	T_ ## name = (__u16)(attr_nr | attr_flag),  #include GENL_MAGIC_INCLUDE_FILE @@ -238,11 +240,13 @@ static inline void ct_assert_unique_ ## s_name ## _attributes(void)	\  }  #undef __field -#define __field(attr_nr, attr_flag, name, nla_type, type, __get, __put)	\ +#define __field(attr_nr, attr_flag, name, nla_type, type, __get, __put,	\ +		__is_signed)						\  	case attr_nr:  #undef __array -#define __array(attr_nr, attr_flag, name, nla_type, type, maxlen, __get, __put) \ +#define __array(attr_nr, attr_flag, name, nla_type, type, maxlen,	\ +		__get, __put, __is_signed)				\  	case attr_nr:  #include GENL_MAGIC_INCLUDE_FILE @@ -260,16 +264,36 @@ static inline void ct_assert_unique_ ## s_name ## _attributes(void)	\  struct s_name { s_fields };  #undef __field -#define __field(attr_nr, attr_flag, name, nla_type, type, __get, __put) \ +#define __field(attr_nr, attr_flag, name, nla_type, type, __get, __put,	\ +		__is_signed)						\  	type name;  #undef __array -#define __array(attr_nr, attr_flag, name, nla_type, type, maxlen, __get, __put) \ +#define __array(attr_nr, attr_flag, name, nla_type, type, maxlen,	\ +		__get, __put, __is_signed)				\  	type name[maxlen];	\  	__u32 name ## _len;  #include GENL_MAGIC_INCLUDE_FILE +#undef GENL_struct +#define GENL_struct(tag_name, tag_number, s_name, s_fields)		\ +enum {									\ +	s_fields							\ +}; + +#undef __field +#define __field(attr_nr, attr_flag, name, nla_type, type, __get, __put,	\ +		is_signed)						\ +	F_ ## name ## _IS_SIGNED = is_signed, + +#undef __array +#define __array(attr_nr, attr_flag, name, nla_type, type, maxlen,	\ +		__get, __put, is_signed)				\ +	F_ ## name ## _IS_SIGNED = is_signed, + +#include GENL_MAGIC_INCLUDE_FILE +  /* }}}1 */  #endif /* GENL_MAGIC_STRUCT_H */  /* vim: set foldmethod=marker nofoldenable : */  |