1// Copyright 2016 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5//go:build ignore
6// +build ignore
7
8package route
9
10/*
11#include <sys/socket.h>
12#include <sys/sysctl.h>
13
14#include <net/if.h>
15#include <net/if_dl.h>
16#include <net/route.h>
17
18#include <netinet/in.h>
19
20struct if_data_freebsd7 {
21	u_char ifi_type;
22	u_char ifi_physical;
23	u_char ifi_addrlen;
24	u_char ifi_hdrlen;
25	u_char ifi_link_state;
26	u_char ifi_spare_char1;
27	u_char ifi_spare_char2;
28	u_char ifi_datalen;
29	u_long ifi_mtu;
30	u_long ifi_metric;
31	u_long ifi_baudrate;
32	u_long ifi_ipackets;
33	u_long ifi_ierrors;
34	u_long ifi_opackets;
35	u_long ifi_oerrors;
36	u_long ifi_collisions;
37	u_long ifi_ibytes;
38	u_long ifi_obytes;
39	u_long ifi_imcasts;
40	u_long ifi_omcasts;
41	u_long ifi_iqdrops;
42	u_long ifi_noproto;
43	u_long ifi_hwassist;
44	time_t __ifi_epoch;
45	struct timeval __ifi_lastchange;
46};
47
48struct if_data_freebsd8 {
49	u_char ifi_type;
50	u_char ifi_physical;
51	u_char ifi_addrlen;
52	u_char ifi_hdrlen;
53	u_char ifi_link_state;
54	u_char ifi_spare_char1;
55	u_char ifi_spare_char2;
56	u_char ifi_datalen;
57	u_long ifi_mtu;
58	u_long ifi_metric;
59	u_long ifi_baudrate;
60	u_long ifi_ipackets;
61	u_long ifi_ierrors;
62	u_long ifi_opackets;
63	u_long ifi_oerrors;
64	u_long ifi_collisions;
65	u_long ifi_ibytes;
66	u_long ifi_obytes;
67	u_long ifi_imcasts;
68	u_long ifi_omcasts;
69	u_long ifi_iqdrops;
70	u_long ifi_noproto;
71	u_long ifi_hwassist;
72	time_t __ifi_epoch;
73	struct timeval __ifi_lastchange;
74};
75
76struct if_data_freebsd9 {
77	u_char ifi_type;
78	u_char ifi_physical;
79	u_char ifi_addrlen;
80	u_char ifi_hdrlen;
81	u_char ifi_link_state;
82	u_char ifi_spare_char1;
83	u_char ifi_spare_char2;
84	u_char ifi_datalen;
85	u_long ifi_mtu;
86	u_long ifi_metric;
87	u_long ifi_baudrate;
88	u_long ifi_ipackets;
89	u_long ifi_ierrors;
90	u_long ifi_opackets;
91	u_long ifi_oerrors;
92	u_long ifi_collisions;
93	u_long ifi_ibytes;
94	u_long ifi_obytes;
95	u_long ifi_imcasts;
96	u_long ifi_omcasts;
97	u_long ifi_iqdrops;
98	u_long ifi_noproto;
99	u_long ifi_hwassist;
100	time_t __ifi_epoch;
101	struct timeval __ifi_lastchange;
102};
103
104struct if_data_freebsd10 {
105	u_char ifi_type;
106	u_char ifi_physical;
107	u_char ifi_addrlen;
108	u_char ifi_hdrlen;
109	u_char ifi_link_state;
110	u_char ifi_vhid;
111	u_char ifi_baudrate_pf;
112	u_char ifi_datalen;
113	u_long ifi_mtu;
114	u_long ifi_metric;
115	u_long ifi_baudrate;
116	u_long ifi_ipackets;
117	u_long ifi_ierrors;
118	u_long ifi_opackets;
119	u_long ifi_oerrors;
120	u_long ifi_collisions;
121	u_long ifi_ibytes;
122	u_long ifi_obytes;
123	u_long ifi_imcasts;
124	u_long ifi_omcasts;
125	u_long ifi_iqdrops;
126	u_long ifi_noproto;
127	uint64_t ifi_hwassist;
128	time_t __ifi_epoch;
129	struct timeval __ifi_lastchange;
130};
131
132struct if_data_freebsd11 {
133	uint8_t ifi_type;
134	uint8_t ifi_physical;
135	uint8_t ifi_addrlen;
136	uint8_t ifi_hdrlen;
137	uint8_t ifi_link_state;
138	uint8_t ifi_vhid;
139	uint16_t ifi_datalen;
140	uint32_t ifi_mtu;
141	uint32_t ifi_metric;
142	uint64_t ifi_baudrate;
143	uint64_t ifi_ipackets;
144	uint64_t ifi_ierrors;
145	uint64_t ifi_opackets;
146	uint64_t ifi_oerrors;
147	uint64_t ifi_collisions;
148	uint64_t ifi_ibytes;
149	uint64_t ifi_obytes;
150	uint64_t ifi_imcasts;
151	uint64_t ifi_omcasts;
152	uint64_t ifi_iqdrops;
153	uint64_t ifi_oqdrops;
154	uint64_t ifi_noproto;
155	uint64_t ifi_hwassist;
156	union {
157		time_t tt;
158		uint64_t ph;
159	} __ifi_epoch;
160	union {
161		struct timeval tv;
162		struct {
163			uint64_t ph1;
164			uint64_t ph2;
165		} ph;
166	} __ifi_lastchange;
167};
168
169struct if_msghdr_freebsd7 {
170	u_short ifm_msglen;
171	u_char ifm_version;
172	u_char ifm_type;
173	int ifm_addrs;
174	int ifm_flags;
175	u_short ifm_index;
176	struct if_data_freebsd7 ifm_data;
177};
178
179struct if_msghdr_freebsd8 {
180	u_short ifm_msglen;
181	u_char ifm_version;
182	u_char ifm_type;
183	int ifm_addrs;
184	int ifm_flags;
185	u_short ifm_index;
186	struct if_data_freebsd8 ifm_data;
187};
188
189struct if_msghdr_freebsd9 {
190	u_short ifm_msglen;
191	u_char ifm_version;
192	u_char ifm_type;
193	int ifm_addrs;
194	int ifm_flags;
195	u_short ifm_index;
196	struct if_data_freebsd9 ifm_data;
197};
198
199struct if_msghdr_freebsd10 {
200	u_short ifm_msglen;
201	u_char ifm_version;
202	u_char ifm_type;
203	int ifm_addrs;
204	int ifm_flags;
205	u_short ifm_index;
206	struct if_data_freebsd10 ifm_data;
207};
208
209struct if_msghdr_freebsd11 {
210	u_short ifm_msglen;
211	u_char ifm_version;
212	u_char ifm_type;
213	int ifm_addrs;
214	int ifm_flags;
215	u_short ifm_index;
216	struct if_data_freebsd11 ifm_data;
217};
218*/
219import "C"
220
221const (
222	sysAF_UNSPEC = C.AF_UNSPEC
223	sysAF_INET   = C.AF_INET
224	sysAF_ROUTE  = C.AF_ROUTE
225	sysAF_LINK   = C.AF_LINK
226	sysAF_INET6  = C.AF_INET6
227
228	sysSOCK_RAW = C.SOCK_RAW
229
230	sysNET_RT_DUMP     = C.NET_RT_DUMP
231	sysNET_RT_FLAGS    = C.NET_RT_FLAGS
232	sysNET_RT_IFLIST   = C.NET_RT_IFLIST
233	sysNET_RT_IFMALIST = C.NET_RT_IFMALIST
234	sysNET_RT_IFLISTL  = C.NET_RT_IFLISTL
235)
236
237const (
238	sysCTL_MAXNAME = C.CTL_MAXNAME
239
240	sysCTL_UNSPEC   = C.CTL_UNSPEC
241	sysCTL_KERN     = C.CTL_KERN
242	sysCTL_VM       = C.CTL_VM
243	sysCTL_VFS      = C.CTL_VFS
244	sysCTL_NET      = C.CTL_NET
245	sysCTL_DEBUG    = C.CTL_DEBUG
246	sysCTL_HW       = C.CTL_HW
247	sysCTL_MACHDEP  = C.CTL_MACHDEP
248	sysCTL_USER     = C.CTL_USER
249	sysCTL_P1003_1B = C.CTL_P1003_1B
250)
251
252const (
253	sysRTM_VERSION = C.RTM_VERSION
254
255	sysRTM_ADD        = C.RTM_ADD
256	sysRTM_DELETE     = C.RTM_DELETE
257	sysRTM_CHANGE     = C.RTM_CHANGE
258	sysRTM_GET        = C.RTM_GET
259	sysRTM_LOSING     = C.RTM_LOSING
260	sysRTM_REDIRECT   = C.RTM_REDIRECT
261	sysRTM_MISS       = C.RTM_MISS
262	sysRTM_LOCK       = C.RTM_LOCK
263	sysRTM_RESOLVE    = C.RTM_RESOLVE
264	sysRTM_NEWADDR    = C.RTM_NEWADDR
265	sysRTM_DELADDR    = C.RTM_DELADDR
266	sysRTM_IFINFO     = C.RTM_IFINFO
267	sysRTM_NEWMADDR   = C.RTM_NEWMADDR
268	sysRTM_DELMADDR   = C.RTM_DELMADDR
269	sysRTM_IFANNOUNCE = C.RTM_IFANNOUNCE
270	sysRTM_IEEE80211  = C.RTM_IEEE80211
271
272	sysRTA_DST     = C.RTA_DST
273	sysRTA_GATEWAY = C.RTA_GATEWAY
274	sysRTA_NETMASK = C.RTA_NETMASK
275	sysRTA_GENMASK = C.RTA_GENMASK
276	sysRTA_IFP     = C.RTA_IFP
277	sysRTA_IFA     = C.RTA_IFA
278	sysRTA_AUTHOR  = C.RTA_AUTHOR
279	sysRTA_BRD     = C.RTA_BRD
280
281	sysRTAX_DST     = C.RTAX_DST
282	sysRTAX_GATEWAY = C.RTAX_GATEWAY
283	sysRTAX_NETMASK = C.RTAX_NETMASK
284	sysRTAX_GENMASK = C.RTAX_GENMASK
285	sysRTAX_IFP     = C.RTAX_IFP
286	sysRTAX_IFA     = C.RTAX_IFA
287	sysRTAX_AUTHOR  = C.RTAX_AUTHOR
288	sysRTAX_BRD     = C.RTAX_BRD
289	sysRTAX_MAX     = C.RTAX_MAX
290)
291
292const (
293	sizeofIfMsghdrlFreeBSD10        = C.sizeof_struct_if_msghdrl
294	sizeofIfaMsghdrFreeBSD10        = C.sizeof_struct_ifa_msghdr
295	sizeofIfaMsghdrlFreeBSD10       = C.sizeof_struct_ifa_msghdrl
296	sizeofIfmaMsghdrFreeBSD10       = C.sizeof_struct_ifma_msghdr
297	sizeofIfAnnouncemsghdrFreeBSD10 = C.sizeof_struct_if_announcemsghdr
298
299	sizeofRtMsghdrFreeBSD10  = C.sizeof_struct_rt_msghdr
300	sizeofRtMetricsFreeBSD10 = C.sizeof_struct_rt_metrics
301
302	sizeofIfMsghdrFreeBSD7  = C.sizeof_struct_if_msghdr_freebsd7
303	sizeofIfMsghdrFreeBSD8  = C.sizeof_struct_if_msghdr_freebsd8
304	sizeofIfMsghdrFreeBSD9  = C.sizeof_struct_if_msghdr_freebsd9
305	sizeofIfMsghdrFreeBSD10 = C.sizeof_struct_if_msghdr_freebsd10
306	sizeofIfMsghdrFreeBSD11 = C.sizeof_struct_if_msghdr_freebsd11
307
308	sizeofIfDataFreeBSD7  = C.sizeof_struct_if_data_freebsd7
309	sizeofIfDataFreeBSD8  = C.sizeof_struct_if_data_freebsd8
310	sizeofIfDataFreeBSD9  = C.sizeof_struct_if_data_freebsd9
311	sizeofIfDataFreeBSD10 = C.sizeof_struct_if_data_freebsd10
312	sizeofIfDataFreeBSD11 = C.sizeof_struct_if_data_freebsd11
313
314	sizeofIfMsghdrlFreeBSD10Emu        = C.sizeof_struct_if_msghdrl
315	sizeofIfaMsghdrFreeBSD10Emu        = C.sizeof_struct_ifa_msghdr
316	sizeofIfaMsghdrlFreeBSD10Emu       = C.sizeof_struct_ifa_msghdrl
317	sizeofIfmaMsghdrFreeBSD10Emu       = C.sizeof_struct_ifma_msghdr
318	sizeofIfAnnouncemsghdrFreeBSD10Emu = C.sizeof_struct_if_announcemsghdr
319
320	sizeofRtMsghdrFreeBSD10Emu  = C.sizeof_struct_rt_msghdr
321	sizeofRtMetricsFreeBSD10Emu = C.sizeof_struct_rt_metrics
322
323	sizeofIfMsghdrFreeBSD7Emu  = C.sizeof_struct_if_msghdr_freebsd7
324	sizeofIfMsghdrFreeBSD8Emu  = C.sizeof_struct_if_msghdr_freebsd8
325	sizeofIfMsghdrFreeBSD9Emu  = C.sizeof_struct_if_msghdr_freebsd9
326	sizeofIfMsghdrFreeBSD10Emu = C.sizeof_struct_if_msghdr_freebsd10
327	sizeofIfMsghdrFreeBSD11Emu = C.sizeof_struct_if_msghdr_freebsd11
328
329	sizeofIfDataFreeBSD7Emu  = C.sizeof_struct_if_data_freebsd7
330	sizeofIfDataFreeBSD8Emu  = C.sizeof_struct_if_data_freebsd8
331	sizeofIfDataFreeBSD9Emu  = C.sizeof_struct_if_data_freebsd9
332	sizeofIfDataFreeBSD10Emu = C.sizeof_struct_if_data_freebsd10
333	sizeofIfDataFreeBSD11Emu = C.sizeof_struct_if_data_freebsd11
334
335	sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage
336	sizeofSockaddrInet    = C.sizeof_struct_sockaddr_in
337	sizeofSockaddrInet6   = C.sizeof_struct_sockaddr_in6
338)
339