bsd-user: Add FreeBSD ioctl type definitions
Add os-ioctl-types.h with STRUCT macro definitions for ioctl type registration. This header uses multiple inclusion with different STRUCT macro definitions to generate both enums and type definitions. Signed-off-by: Stacey Son <sson@FreeBSD.org> Reviewed-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> Signed-off-by: Warner Losh <imp@bsdimp.com>
Stacey Son committed
Mar 13, 2026 at 22:12 UTC
d3b40f501a1d0ce81fde1bd94a0e65b600fa5a42
1 file changed
+109
bsd-user/freebsd/os-ioctl-types.h
new
+109
@@ -0,0 +1,109 @@
1
+/*
2
+ * FreeBSD file related system call shims and definitions
3
+ *
4
+ * Copyright (c) 2013-2015 Stacey D. Son
5
+ *
6
+ * SPDX-License-Identifier: GPL-2.0-or-later
7
+ */
8
+
9
+STRUCT_SPECIAL(termios)
10
+
11
+STRUCT(winsize,
12
+ TYPE_SHORT, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT)
13
+
14
+STRUCT(fiodgname_arg,
15
+ TYPE_INT, TYPE_PTRVOID)
16
+
17
+STRUCT(ifconf,
18
+ TYPE_INT, TYPE_PTRVOID)
19
+
20
+STRUCT(sockaddr,
21
+ TYPE_SHORT, MK_ARRAY(TYPE_CHAR, 14))
22
+
23
+STRUCT(_ifreq_buffer,
24
+ TYPE_PTRVOID, TYPE_PTRVOID)
25
+
26
+STRUCT(ifreq_char,
27
+ MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), TYPE_CHAR)
28
+
29
+STRUCT(ifreq_short,
30
+ MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), MK_ARRAY(TYPE_SHORT, 2))
31
+
32
+STRUCT(ifreq_int,
33
+ MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), TYPE_INT)
34
+
35
+STRUCT(ifreq_ptr,
36
+ MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), TYPE_PTRVOID)
37
+
38
+STRUCT(ifreq_cap,
39
+ MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), MK_ARRAY(TYPE_INT, 2))
40
+
41
+STRUCT(ifreq_sockaddr,
42
+ MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), MK_STRUCT(STRUCT_sockaddr))
43
+
44
+STRUCT(ifreq_buf,
45
+ MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), MK_STRUCT(STRUCT__ifreq_buffer))
46
+
47
+STRUCT(ifdrv,
48
+ MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), TYPE_PTRVOID, TYPE_PTRVOID,
49
+ TYPE_PTRVOID)
50
+
51
+STRUCT(ifgroupreq_ptr,
52
+ MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), TYPE_INT, TYPE_PTRVOID)
53
+
54
+STRUCT(ifmediareq,
55
+ MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), TYPE_INT, TYPE_INT, TYPE_INT,
56
+ TYPE_INT, TYPE_INT, TYPE_PTRVOID)
57
+
58
+STRUCT(ifstat,
59
+ MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ),
60
+ MK_ARRAY(TYPE_CHAR, TARGET_IFSTATMAX + 1))
61
+
62
+STRUCT(ieee80211req,
63
+ MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), TYPE_SHORT, TYPE_SHORT, TYPE_SHORT,
64
+ TYPE_PTRVOID)
65
+
66
+STRUCT(lagg_reqport_lacp_opreq,
67
+ MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ),
68
+ TYPE_INT, TYPE_INT,
69
+ /* struct lacp_opreq */
70
+ TYPE_SHORT, MK_ARRAY(TYPE_CHAR, ETHER_ADDR_LEN), TYPE_SHORT, TYPE_SHORT,
71
+ TYPE_SHORT, TYPE_CHAR, TYPE_SHORT, MK_ARRAY(TYPE_CHAR, ETHER_ADDR_LEN),
72
+ TYPE_SHORT, TYPE_SHORT, TYPE_SHORT, TYPE_CHAR)
73
+
74
+STRUCT(lagg_reqall_lacp_opreq,
75
+ MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), TYPE_INT, TYPE_PTRVOID, TYPE_PTRVOID,
76
+ TYPE_INT,
77
+ /* struct lacp_opreq */
78
+ TYPE_SHORT, MK_ARRAY(TYPE_CHAR, ETHER_ADDR_LEN), TYPE_SHORT, TYPE_SHORT,
79
+ TYPE_SHORT, TYPE_CHAR, TYPE_SHORT, MK_ARRAY(TYPE_CHAR, ETHER_ADDR_LEN),
80
+ TYPE_SHORT, TYPE_SHORT, TYPE_SHORT, TYPE_CHAR)
81
+
82
+STRUCT(lagg_reqflags,
83
+ MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), TYPE_INT)
84
+
85
+STRUCT(lagg_reqopts,
86
+ MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), TYPE_INT, TYPE_INT, TYPE_INT,
87
+ TYPE_INT, TYPE_INT, TYPE_INT)
88
+
89
+STRUCT(in6_ifreq_int,
90
+ MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), TYPE_INT)
91
+
92
+STRUCT(in6_ifreq_ptr,
93
+ MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), TYPE_PTRVOID)
94
+
95
+STRUCT(in6_ifreq_sockaddr_in6,
96
+ MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ),
97
+ /* struct sockaddr_in6 */
98
+ TYPE_CHAR, TYPE_CHAR, TYPE_SHORT, TYPE_INT, MK_ARRAY(TYPE_CHAR, 16),
99
+ TYPE_INT)
100
+
101
+STRUCT(in6_ndireq,
102
+ MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ),
103
+ /* struct nd_ifinfo */
104
+ TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
105
+ TYPE_CHAR, TYPE_CHAR, MK_ARRAY(TYPE_CHAR, 8), MK_ARRAY(TYPE_CHAR, 8),
106
+ MK_ARRAY(TYPE_CHAR, 8))
107
+
108
+STRUCT(in6_ndifreq,
109
+ MK_ARRAY(TYPE_CHAR, TARGET_IFNAMSIZ), TYPE_PTRVOID)