1  /* SPDX-License-Identifier: GPL-2.0 */
2  /*
3   * This file define a set of standard wireless extensions
4   *
5   * Version :	22	16.3.07
6   *
7   * Authors :	Jean Tourrilhes - HPL - <jt@hpl.hp.com>
8   * Copyright (c) 1997-2007 Jean Tourrilhes, All Rights Reserved.
9   */
10  #ifndef _LINUX_WIRELESS_H
11  #define _LINUX_WIRELESS_H
12  
13  #include <uapi/linux/wireless.h>
14  
15  #ifdef CONFIG_COMPAT
16  
17  #include <linux/compat.h>
18  
19  struct compat_iw_point {
20  	compat_caddr_t pointer;
21  	__u16 length;
22  	__u16 flags;
23  };
24  #endif
25  #ifdef CONFIG_COMPAT
26  struct __compat_iw_event {
27  	__u16		len;			/* Real length of this stuff */
28  	__u16		cmd;			/* Wireless IOCTL */
29  
30  	union {
31  		compat_caddr_t	pointer;
32  
33  		/* we need ptr_bytes to make memcpy() run-time destination
34  		 * buffer bounds checking happy, nothing special
35  		 */
36  		DECLARE_FLEX_ARRAY(__u8, ptr_bytes);
37  	};
38  };
39  #define IW_EV_COMPAT_LCP_LEN offsetof(struct __compat_iw_event, pointer)
40  #define IW_EV_COMPAT_POINT_OFF offsetof(struct compat_iw_point, length)
41  
42  /* Size of the various events for compat */
43  #define IW_EV_COMPAT_CHAR_LEN	(IW_EV_COMPAT_LCP_LEN + IFNAMSIZ)
44  #define IW_EV_COMPAT_UINT_LEN	(IW_EV_COMPAT_LCP_LEN + sizeof(__u32))
45  #define IW_EV_COMPAT_FREQ_LEN	(IW_EV_COMPAT_LCP_LEN + sizeof(struct iw_freq))
46  #define IW_EV_COMPAT_PARAM_LEN	(IW_EV_COMPAT_LCP_LEN + sizeof(struct iw_param))
47  #define IW_EV_COMPAT_ADDR_LEN	(IW_EV_COMPAT_LCP_LEN + sizeof(struct sockaddr))
48  #define IW_EV_COMPAT_QUAL_LEN	(IW_EV_COMPAT_LCP_LEN + sizeof(struct iw_quality))
49  #define IW_EV_COMPAT_POINT_LEN	\
50  	(IW_EV_COMPAT_LCP_LEN + sizeof(struct compat_iw_point) - \
51  	 IW_EV_COMPAT_POINT_OFF)
52  #endif
53  #endif	/* _LINUX_WIRELESS_H */
54