Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
/*	$NetBSD: netbsd32_ioctl.h,v 1.67 2019/05/17 07:37:12 msaitoh Exp $	*/

/*
 * Copyright (c) 1998, 2001 Matthew R. Green
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 */

#include <sys/device.h>
#include <sys/disklabel.h>
#include <sys/disk.h>

#include <net/zlib.h>

#include <dev/dkvar.h>
#include <dev/vndvar.h>

#include <dev/wscons/wsconsio.h>
#include <net80211/ieee80211_ioctl.h>

/* we define some handy macros here... */
#define IOCTL_STRUCT_CONV_TO(cmd, type)	\
		size = IOCPARM_LEN(cmd); \
		if (size > sizeof(stkbuf)) \
			data = memp = kmem_alloc(size, KM_SLEEP); \
		else \
			data = (void *)stkbuf; \
		__CONCAT(netbsd32_to_, type)((struct __CONCAT(netbsd32_, type) *) \
			data32, (struct type *)data, cmd); \
		error = (*fp->f_ops->fo_ioctl)(fp, cmd, data); \
		__CONCAT(netbsd32_from_, type)((struct type *)data, \
			(struct __CONCAT(netbsd32_, type) *)data32, cmd); \
		break

#define IOCTL_CONV_TO(cmd, type)	\
		size = IOCPARM_LEN(cmd); \
		if (size > sizeof(stkbuf)) \
			data = memp = kmem_alloc(size, KM_SLEEP); \
		else \
			data = (void *)stkbuf; \
		__CONCAT(netbsd32_to_, type)((__CONCAT(netbsd32_, type) *) \
			data32, (type *)data, cmd); \
		error = (*fp->f_ops->fo_ioctl)(fp, cmd, data); \
		__CONCAT(netbsd32_from_, type)((type *)data, \
			(__CONCAT(netbsd32_, type) *)data32, cmd); \
		break

/* from <sys/audioio.h> */
#define AUDIO_WSEEK32	_IOR('A', 25, netbsd32_u_long)

/* from <sys/dkio.h> */
typedef netbsd32_pointer_t netbsd32_disklabel_tp_t;
typedef netbsd32_pointer_t netbsd32_partition_tp_t;

#if 0	/* not implemented by anything */
struct netbsd32_format_op {
	netbsd32_charp df_buf;
	int	 df_count;		/* value-result */
	daddr_t	 df_startblk;
	int	 df_reg[8];		/* result */
};
#define DIOCRFORMAT32	_IOWR('d', 105, struct netbsd32_format_op)
#define DIOCWFORMAT32	_IOWR('d', 106, struct netbsd32_format_op)
#endif

/* from <sys/ataio.h> */
struct netbsd32_atareq {
	netbsd32_u_long		flags;
	u_char			command;
	u_char			features;
	u_char			sec_count;
	u_char			sec_num;
	u_char			head;
	u_short			cylinder;
	netbsd32_voidp		databuf;
	netbsd32_u_long		datalen;
	int			timeout;
	u_char			retsts;
	u_char			error;
};
#define ATAIOCCOMMAND32		_IOWR('Q', 8, struct netbsd32_atareq)


/* from <net/bpf.h> */
struct netbsd32_bpf_program {
	u_int bf_len;
	netbsd32_pointer_t bf_insns;
};

struct netbsd32_bpf_dltlist {
	u_int bfl_len;
	netbsd32_pointer_t bfl_list;
};

#define	BIOCSETF32	_IOW('B',103, struct netbsd32_bpf_program)
#define BIOCSTCPF32	_IOW('B',114, struct netbsd32_bpf_program)
#define BIOCSUDPF32	_IOW('B',115, struct netbsd32_bpf_program)
#define BIOCGDLTLIST32	_IOWR('B',119, struct netbsd32_bpf_dltlist)
#define BIOCSRTIMEOUT32	_IOW('B',122, struct netbsd32_timeval)


struct netbsd32_wsdisplay_addscreendata {
	int idx; /* screen index */
	netbsd32_charp screentype;
	netbsd32_charp emul;
};
#define	WSDISPLAYIO_ADDSCREEN32	_IOW('W', 78, struct netbsd32_wsdisplay_addscreendata)

/* the first member must be matched with struct ifreq */
struct netbsd32_ieee80211req {
	char		i_name[IFNAMSIZ];	/* if_name, e.g. "wi0" */
	uint16_t	i_type;			/* req type */
	int16_t		i_val;			/* Index or simple value */
	uint16_t	i_len;			/* Index or simple value */
	netbsd32_voidp	i_data;			/* Extra data */
};
#define SIOCS8021132			_IOW('i', 244, struct netbsd32_ieee80211req)
#define SIOCG8021132			_IOWR('i', 245, struct netbsd32_ieee80211req)

/* the first member must be matched with struct ifreq */
struct netbsd32_ieee80211_nwkey {
	char		i_name[IFNAMSIZ];	/* if_name, e.g. "wi0" */
	int		i_wepon;		/* wep enabled flag */
	int		i_defkid;		/* default encrypt key id */
	struct {
		int		i_keylen;
		netbsd32_charp	i_keydat;
	}		i_key[IEEE80211_WEP_NKID];
};
#define	SIOCS80211NWKEY32		 _IOW('i', 232, struct netbsd32_ieee80211_nwkey)
#define	SIOCG80211NWKEY32		_IOWR('i', 233, struct netbsd32_ieee80211_nwkey)

/* for powerd */
#define POWER_EVENT_RECVDICT32	_IOWR('P', 1, struct netbsd32_plistref)

/* Colormap operations.  Not applicable to all display types. */
struct netbsd32_wsdisplay_cmap {
	u_int	index;				/* first element (0 origin) */
	u_int	count;				/* number of elements */
	netbsd32_charp red;			/* red color map elements */
	netbsd32_charp green;			/* green color map elements */
	netbsd32_charp blue;			/* blue color map elements */
};

#define	WSDISPLAYIO_GETCMAP32	_IOW('W', 66, struct netbsd32_wsdisplay_cmap)
#define	WSDISPLAYIO_PUTCMAP32	_IOW('W', 67, struct netbsd32_wsdisplay_cmap)

struct netbsd32_wsdisplay_cursor {
	u_int	which;				/* values to get/set */
	u_int	enable;				/* enable/disable */
	struct wsdisplay_curpos pos;		/* position */
	struct wsdisplay_curpos hot;		/* hot spot */
	struct netbsd32_wsdisplay_cmap cmap;	/* color map info */
	struct wsdisplay_curpos size;		/* bit map size */
	netbsd32_charp image;			/* image data */
	netbsd32_charp mask;			/* mask data */
};

/* Cursor control: get/set cursor attributes/shape */
#define	WSDISPLAYIO_GCURSOR32	_IOWR('W', 73, struct netbsd32_wsdisplay_cursor)
#define	WSDISPLAYIO_SCURSOR32	_IOW('W', 74, struct netbsd32_wsdisplay_cursor)

struct netbsd32_wsdisplay_font {
	netbsd32_charp name;
	int firstchar, numchars;
	int encoding;
	u_int fontwidth, fontheight, stride;
	int bitorder, byteorder;
	netbsd32_charp data;
};
#define	WSDISPLAYIO_LDFONT32	_IOW('W', 77, struct netbsd32_wsdisplay_font)

struct netbsd32_wsdisplay_usefontdata {
	netbsd32_charp name;
};
#define	WSDISPLAYIO_SFONT32	_IOW('W', 80, struct netbsd32_wsdisplay_usefontdata)

/* can wait! */
#if 0
dev/ccdvar.h:219:#define CCDIOCSET	_IOWR('F', 16, struct ccd_ioctl)   /* enable ccd */
dev/ccdvar.h:220:#define CCDIOCCLR	_IOW('F', 17, struct ccd_ioctl)    /* disable ccd */

dev/md.h:45:#define MD_GETCONF	_IOR('r', 0, struct md_conf)	/* get unit config */
dev/md.h:46:#define MD_SETCONF	_IOW('r', 1, struct md_conf)	/* set unit config */

dev/wscons/wsconsio.h:133:#define WSKBDIO_GETMAP		_IOWR('W', 13, struct wskbd_map_data)
dev/wscons/wsconsio.h:134:#define WSKBDIO_SETMAP		_IOW('W', 14, struct wskbd_map_data)

dev/wscons/wsconsio.h:188:#define WSDISPLAYIO_GETCMAP	_IOW('W', 66, struct wsdisplay_cmap)
dev/wscons/wsconsio.h:189:#define WSDISPLAYIO_PUTCMAP	_IOW('W', 67, struct wsdisplay_cmap)

dev/wscons/wsconsio.h:241:#define WSDISPLAYIO_SFONT	_IOW('W', 77, struct wsdisplay_font)

net/if_ppp.h:110:#define PPPIOCSPASS	_IOW('t', 71, struct bpf_program) /* set pass filter */
net/if_ppp.h:111:#define PPPIOCSACTIVE	_IOW('t', 70, struct bpf_program) /* set active filt */

net/if_ppp.h:105:#define PPPIOCSCOMPRESS	_IOW('t', 77, struct ppp_option_data)

sys/module.h?

sys/rnd.h:186:#define RNDGETPOOL      _IOR('R',  103, u_char *)  /* get whole pool */

sys/scanio.h:86:#define SCIOCGET	_IOR('S', 1, struct scan_io) /* retrieve parameters */
sys/scanio.h:87:#define SCIOCSET	_IOW('S', 2, struct scan_io) /* set parameters */

sys/scsiio.h:43:#define SCIOCCOMMAND	_IOWR('Q', 1, scsireq_t)
#endif

/* from <net/if.h> */

typedef netbsd32_pointer_t netbsd32_ifreq_tp_t;
/*
 * note that ifr_data is the only one that needs to be changed
 */
struct	netbsd32_oifreq {
	char	ifr_name[IFNAMSIZ];		/* if name, e.g. "en0" */
	union {
		struct	sockaddr ifru_addr;
		struct	sockaddr ifru_dstaddr;
		struct	sockaddr ifru_broadaddr;
		short	ifru_flags;
		int	ifru_metric;
		int	ifru_mtu;
		int	ifru_dlt;
		u_int	ifru_value;
		netbsd32_caddr_t ifru_data;
		struct {
			uint32_t	b_buflen;
			netbsd32_caddr_t b_buf;
		} ifru_b;
	} ifr_ifru;
#define	ifr_addr	ifr_ifru.ifru_addr	/* address */
#define	ifr_dstaddr	ifr_ifru.ifru_dstaddr	/* other end of p-to-p link */
#define	ifr_broadaddr	ifr_ifru.ifru_broadaddr	/* broadcast address */
#define	ifr_flags	ifr_ifru.ifru_flags	/* flags */
#define	ifr_metric	ifr_ifru.ifru_metric	/* metric */
#define	ifr_mtu		ifr_ifru.ifru_mtu	/* mtu */
#define	ifr_media	ifr_ifru.ifru_metric	/* media options (overload) */
#define	ifr_data	ifr_ifru.ifru_data	/* for use by interface */
};
struct	netbsd32_ifreq {
	char	ifr_name[IFNAMSIZ];		/* if name, e.g. "en0" */
	union {
		struct	sockaddr ifru_addr;
		struct	sockaddr ifru_dstaddr;
		struct	sockaddr ifru_broadaddr;
		struct	sockaddr_storage ifru_space;
		short	ifru_flags;
		int	ifru_metric;
		int	ifru_mtu;
		int	ifru_dlt;
		u_int	ifru_value;
		netbsd32_caddr_t ifru_data;
		struct {
			uint32_t	b_buflen;
			netbsd32_caddr_t b_buf;
		} ifru_b;
	} ifr_ifru;
};

struct netbsd32_if_addrprefreq {
	char			ifap_name[IFNAMSIZ];
	uint16_t		ifap_preference;
	struct {
		__uint8_t	ss_len;         /* address length */
		sa_family_t	ss_family;      /* address family */
		char		__ss_pad1[_SS_PAD1SIZE];
		__int32_t	__ss_align[2];
		char		__ss_pad2[_SS_PAD2SIZE];
	} ifap_addr;
};

struct netbsd32_if_clonereq {
	int	ifcr_total;
	int	ifcr_count;
	netbsd32_charp ifcr_buffer;
};

/* from <dev/pci/if_devar.h> */
#define	SIOCGADDRROM32		_IOW('i', 240, struct netbsd32_ifreq)	/* get 128 bytes of ROM */
#define	SIOCGCHIPID32		_IOWR('i', 241, struct netbsd32_ifreq)	/* get chipid */
/* from <sys/sockio.h> */
#define	SIOCSIFADDR32	 _IOW('i', 12, struct netbsd32_ifreq)	/* set ifnet address */
#define	OSIOCSIFADDR32	 _IOW('i', 12, struct netbsd32_oifreq)	/* set ifnet address */
#define	OOSIOCGIFADDR32	_IOWR('i', 13, struct netbsd32_oifreq)	/* get ifnet address */

#define	SIOCGIFADDR32	_IOWR('i', 33, struct netbsd32_ifreq)	/* get ifnet address */
#define	OSIOCGIFADDR32	_IOWR('i', 33, struct netbsd32_oifreq)	/* get ifnet address */

#define	SIOCSIFDSTADDR32	 _IOW('i', 14, struct netbsd32_ifreq)	/* set p-p address */
#define	OSIOCSIFDSTADDR32	 _IOW('i', 14, struct netbsd32_oifreq)	/* set p-p address */
#define	OOSIOCGIFDSTADDR32	_IOWR('i', 15, struct netbsd32_oifreq)	/* get p-p address */

#define	SIOCGIFDSTADDR32	_IOWR('i', 34, struct netbsd32_ifreq)	/* get p-p address */
#define	OSIOCGIFDSTADDR32	_IOWR('i', 34, struct netbsd32_oifreq)	/* get p-p address */

#define	SIOCSIFFLAGS32	 _IOW('i', 16, struct netbsd32_ifreq)	/* set ifnet flags */
#define	OSIOCSIFFLAGS32	 _IOW('i', 16, struct netbsd32_oifreq)	/* set ifnet flags */

#define	SIOCGIFFLAGS32	_IOWR('i', 17, struct netbsd32_ifreq)	/* get ifnet flags */
#define	OSIOCGIFFLAGS32	_IOWR('i', 17, struct netbsd32_oifreq)	/* get ifnet flags */


#define	SIOCSIFBRDADDR32	 _IOW('i', 19, struct netbsd32_ifreq)	/* set broadcast addr */
#define	OSIOCSIFBRDADDR32	 _IOW('i', 19, struct netbsd32_oifreq)	/* set broadcast addr */
#define	OOSIOCGIFBRDADDR32	_IOWR('i', 18, struct netbsd32_oifreq)	/* get broadcast addr */

#define	SIOCGIFBRDADDR32	_IOWR('i', 35, struct netbsd32_ifreq)	/* get broadcast addr */
#define	OSIOCGIFBRDADDR32	_IOWR('i', 35, struct netbsd32_oifreq)	/* get broadcast addr */

#define	OOSIOCGIFNETMASK32	_IOWR('i', 21, struct netbsd32_oifreq)	/* get net addr mask */

#define	SIOCGIFNETMASK32	_IOWR('i', 37, struct netbsd32_ifreq)	/* get net addr mask */
#define	OSIOCGIFNETMASK32	_IOWR('i', 37, struct netbsd32_oifreq)	/* get net addr mask */

#define	SIOCSIFNETMASK32	 _IOW('i', 22, struct netbsd32_ifreq)	/* set net addr mask */
#define	OSIOCSIFNETMASK32	 _IOW('i', 22, struct netbsd32_oifreq)	/* set net addr mask */

#define	SIOCGIFMETRIC32	_IOWR('i', 23, struct netbsd32_ifreq)	/* get IF metric */
#define	OSIOCGIFMETRIC32	_IOWR('i', 23, struct netbsd32_oifreq)	/* get IF metric */

#define	SIOCSIFMETRIC32	 _IOW('i', 24, struct netbsd32_ifreq)	/* set IF metric */
#define	OSIOCSIFMETRIC32	 _IOW('i', 24, struct netbsd32_oifreq)	/* set IF metric */

#define	SIOCDIFADDR32	 _IOW('i', 25, struct netbsd32_ifreq)	/* delete IF addr */
#define	OSIOCDIFADDR32	 _IOW('i', 25, struct netbsd32_oifreq)	/* delete IF addr */

#define SIOCSIFADDRPREF32	 _IOW('i', 31, struct netbsd32_if_addrprefreq)
#define SIOCGIFADDRPREF32	_IOWR('i', 32, struct netbsd32_if_addrprefreq)

#define	SIOCADDMULTI32	 _IOW('i', 49, struct netbsd32_ifreq)	/* add m'cast addr */
#define	OSIOCADDMULTI32	 _IOW('i', 49, struct netbsd32_oifreq)	/* add m'cast addr */

#define	SIOCDELMULTI32	 _IOW('i', 50, struct netbsd32_ifreq)	/* del m'cast addr */
#define	OSIOCDELMULTI32	 _IOW('i', 50, struct netbsd32_oifreq)	/* del m'cast addr */

#define	SIOCSIFMEDIA32_80	_IOWR('i', 53, struct netbsd32_ifreq)	/* set net media */
#define	SIOCSIFMEDIA32_43	_IOWR('i', 53, struct netbsd32_oifreq)	/* set net media */
#define	SIOCSIFMEDIA32		_IOWR('i', 55, struct netbsd32_ifreq)	/* set net media */

#define	SIOCSIFGENERIC32 _IOW('i', 57, struct netbsd32_ifreq)	/* generic IF set op */
#define	SIOCGIFGENERIC32 _IOWR('i', 58, struct netbsd32_ifreq)	/* generic IF get op */

#define	SIOCIFGCLONERS32 _IOWR('i', 120, struct netbsd32_if_clonereq) /* get cloners */

#define	SIOCSIFMTU32	 _IOW('i', 127, struct netbsd32_ifreq)	/* set ifnet mtu */
#define	OSIOCSIFMTU32	 _IOW('i', 127, struct netbsd32_oifreq)	/* set ifnet mtu */

#define	SIOCGIFMTU32	_IOWR('i', 126, struct netbsd32_ifreq)	/* get ifnet mtu */
#define	OSIOCGIFMTU32	_IOWR('i', 126, struct netbsd32_oifreq)	/* get ifnet mtu */
/* was 125 SIOCSIFASYNCMAP32 */
/* was 124 SIOCGIFASYNCMAP32 */
/* from <net/bpf.h> */
#define BIOCGETIF32	_IOR('B',107, struct netbsd32_ifreq)
#define BIOCSETIF32	_IOW('B',108, struct netbsd32_ifreq)
/* from <netatalk/phase2.h> */
#define SIOCPHASE1_32	_IOW('i', 100, struct netbsd32_ifreq)	/* AppleTalk phase 1 */
#define SIOCPHASE2_32	_IOW('i', 101, struct netbsd32_ifreq)	/* AppleTalk phase 2 */

/* from <net/if.h> */
struct	netbsd32_ifconf {
	int	ifc_len;		/* size of associated buffer */
	union {
		netbsd32_caddr_t ifcu_buf;
		netbsd32_ifreq_tp_t ifcu_req;
	} ifc_ifcu;
#define	ifc_buf	ifc_ifcu.ifcu_buf	/* buffer address */
#define	ifc_req	ifc_ifcu.ifcu_req	/* array of structures returned */
};
/* from <sys/sockio.h> */
#define	OOSIOCGIFCONF32	_IOWR('i', 20, struct netbsd32_ifconf)	/* get ifnet list */
#define	OSIOCGIFCONF32	_IOWR('i', 36, struct netbsd32_ifconf)	/* get ifnet list */
#define	SIOCGIFCONF32	_IOWR('i', 38, struct netbsd32_ifconf)	/* get ifnet list */

/* from <net/if.h> */
struct netbsd32_ifmediareq {
	char	ifm_name[IFNAMSIZ];		/* if name, e.g. "en0" */
	int	ifm_current;			/* current media options */
	int	ifm_mask;			/* don't care mask */
	int	ifm_status;			/* media status */
	int	ifm_active;			/* active options */
	int	ifm_count;			/* # entries in ifm_ulist
						   array */
	netbsd32_intp	ifm_ulist;		/* media words */
};
/* from <sys/sockio.h> */
#define	SIOCGIFMEDIA32_80 _IOWR('i', 54, struct netbsd32_ifmediareq) /* get net media */
#define	SIOCGIFMEDIA32	_IOWR('i', 56, struct netbsd32_ifmediareq) /* get net media */

/* from net/if_pppoe.h */
struct netbsd32_pppoediscparms {
	char	ifname[IFNAMSIZ];	/* pppoe interface name */
	char	eth_ifname[IFNAMSIZ];	/* external ethernet interface name */
	netbsd32_charp ac_name;		/* access concentrator name (or NULL) */
	netbsd32_size_t	ac_name_len;		/* on write: length of buffer for ac_name */
	netbsd32_charp service_name;	/* service name (or NULL) */
	netbsd32_size_t	service_name_len;	/* on write: length of buffer for service name */
};
#define	PPPOESETPARMS32	_IOW('i', 110, struct netbsd32_pppoediscparms)
#define	PPPOEGETPARMS32	_IOWR('i', 111, struct netbsd32_pppoediscparms)

/* from net/if_sppp.h */
struct netbsd32_spppauthcfg {
	char	ifname[IFNAMSIZ];	/* pppoe interface name */
	u_int	hisauth;		/* one of SPPP_AUTHPROTO_* above */
	u_int	myauth;			/* one of SPPP_AUTHPROTO_* above */
	u_int	myname_length;		/* includes terminating 0 */
	u_int	mysecret_length;	/* includes terminating 0 */
	u_int	hisname_length;		/* includes terminating 0 */
	u_int	hissecret_length;	/* includes terminating 0 */
	u_int	myauthflags;
	u_int	hisauthflags;
	netbsd32_charp	myname;
	netbsd32_charp	mysecret;
	netbsd32_charp	hisname;
	netbsd32_charp	hissecret;
};
#define SPPPGETAUTHCFG32 _IOWR('i', 120, struct netbsd32_spppauthcfg)
#define SPPPSETAUTHCFG32 _IOW('i', 121, struct netbsd32_spppauthcfg)

/* from <net/if.h> */
struct  netbsd32_ifdrv {
	char		ifd_name[IFNAMSIZ];	/* if name, e.g. "en0" */
	netbsd32_u_long	ifd_cmd;
	netbsd32_size_t	ifd_len;
	netbsd32_voidp	ifd_data;
};
/* from <sys/sockio.h> */
#define SIOCSDRVSPEC32	_IOW('i', 123, struct netbsd32_ifdrv)	/* set driver-specific */
#define SIOCGDRVSPEC32	_IOWR('i', 123, struct netbsd32_ifdrv)	/* get driver-specific */

/* from <netinet/ip_mroute.h> */
struct netbsd32_sioc_vif_req {
	vifi_t	vifi;			/* vif number */
	netbsd32_u_long	icount;		/* input packet count on vif */
	netbsd32_u_long	ocount;		/* output packet count on vif */
	netbsd32_u_long	ibytes;		/* input byte count on vif */
	netbsd32_u_long	obytes;		/* output byte count on vif */
};
/* from <sys/sockio.h> */
#define	SIOCGETVIFCNT32	_IOWR('u', 51, struct netbsd32_sioc_vif_req)/* vif pkt cnt */

struct netbsd32_sioc_sg_req {
	struct	in_addr src;
	struct	in_addr grp;
	netbsd32_u_long	pktcnt;
	netbsd32_u_long	bytecnt;
	netbsd32_u_long	wrong_if;
};
/* from <sys/sockio.h> */
#define	SIOCGETSGCNT32	_IOWR('u', 52, struct netbsd32_sioc_sg_req) /* sg pkt cnt */

/*
 * The next two structures are marked "__packed" as they normally end up
 * being padded in 64-bit mode.
 */
struct netbsd32_vnd_ioctl {
	netbsd32_charp	vnd_file;	/* pathname of file to mount */
	int		vnd_flags;	/* flags; see below */
	struct vndgeom	vnd_geom;	/* geometry to emulate */
	unsigned int	vnd_osize;	/* (returned) size of disk */
	uint64_t	vnd_size;	/* (returned) size of disk */
} __packed;

struct netbsd32_vnd_user {
	int		vnu_unit;	/* which vnd unit */
	dev_t		vnu_dev;	/* file is on this device... */
	ino_t		vnu_ino;	/* ...at this inode */
} __packed;

/* from <dev/vndvar.h> */
#define VNDIOCSET32	_IOWR('F', 0, struct netbsd32_vnd_ioctl)	/* enable disk */
#define VNDIOCCLR32	_IOW('F', 1, struct netbsd32_vnd_ioctl)	/* disable disk */
#define VNDIOCGET32	_IOWR('F', 3, struct netbsd32_vnd_user)	/* get list */

struct netbsd32_vnd_ioctl50 {
	netbsd32_charp	vnd_file;	/* pathname of file to mount */
	int		vnd_flags;	/* flags; see below */
	struct vndgeom	vnd_geom;	/* geometry to emulate */
	unsigned int	vnd_size;	/* (returned) size of disk */
} __packed;
/* from <dev/vnd.c> */
#define VNDIOCSET5032	_IOWR('F', 0, struct netbsd32_vnd_ioctl50)
#define VNDIOCCLR5032	_IOW('F', 1, struct netbsd32_vnd_ioctl50)

#define ENVSYS_GETDICTIONARY32	_IOWR('E', 0, struct netbsd32_plistref)
#define ENVSYS_SETDICTIONARY32	_IOWR('E', 1, struct netbsd32_plistref)
#define ENVSYS_REMOVEPROPS32	_IOWR('E', 2, struct netbsd32_plistref)

/* from <sys/wdog.h> */
struct netbsd32_wdog_conf {
	netbsd32_charp	wc_names;
	int		wc_count;
};
#define WDOGIOC_GWDOGS32	_IOWR('w', 5, struct netbsd32_wdog_conf)


struct netbsd32_clockctl_settimeofday {
	netbsd32_timevalp_t tv;
	netbsd32_voidp tzp;
};

#define CLOCKCTL_SETTIMEOFDAY32 _IOW('C', 0x5, \
    struct netbsd32_clockctl_settimeofday)

struct netbsd32_clockctl_adjtime {
	netbsd32_timevalp_t delta;
	netbsd32_timevalp_t olddelta;
};

#define CLOCKCTL_ADJTIME32 _IOWR('C', 0x6, struct netbsd32_clockctl_adjtime)

struct netbsd32_clockctl_clock_settime {
	netbsd32_clockid_t clock_id;
	netbsd32_timespecp_t tp;
};

#define CLOCKCTL_CLOCK_SETTIME32 _IOW('C', 0x7, \
    struct netbsd32_clockctl_clock_settime)

struct netbsd32_clockctl_ntp_adjtime {
	netbsd32_timexp_t tp;
	register32_t retval;
};

#define CLOCKCTL_NTP_ADJTIME32 _IOWR('C', 0x8, \
    struct netbsd32_clockctl_ntp_adjtime)

#ifdef KIOCGSYMBOL
struct netbsd32_ksyms_gsymbol {
	netbsd32_charp kg_name;
	union {
		Elf_Sym ku_sym;
	} _un;
};

struct netbsd32_ksyms_gvalue {
	netbsd32_charp kv_name;
	uint64_t kv_value;
};

#define	KIOCGVALUE32	_IOWR('l', 4, struct netbsd32_ksyms_gvalue)
#define	KIOCGSYMBOL32	_IOWR('l', 5, struct netbsd32_ksyms_gsymbol)
#endif /* KIOCGSYMBOL */

#include <net/npf/npf.h>

typedef struct netbsd32_npf_ioctl_buf {
	netbsd32_voidp		buf;
	netbsd32_size_t		len;
} netbsd32_npf_ioctl_buf_t;

typedef struct netbsd32_npf_ioctl_table {
        int			nct_cmd;  
        netbsd32_charp		nct_name;
        union {
		npf_ioctl_ent_t ent;
		netbsd32_npf_ioctl_buf_t buf;
        } nct_data;
} netbsd32_npf_ioctl_table_t;

#define IOC_NPF_LOAD32		_IOWR('N', 102, netbsd32_nvlist_ref_t)
#define IOC_NPF_TABLE32		_IOW('N', 103, struct netbsd32_npf_ioctl_table)
#define IOC_NPF_STATS32		_IOW('N', 104, netbsd32_voidp)
#define IOC_NPF_SAVE32		_IOR('N', 105, netbsd32_nvlist_ref_t)
#define IOC_NPF_RULE32		_IOWR('N', 107, netbsd32_nvlist_ref_t)
#define IOC_NPF_CONN_LOOKUP32	_IOWR('N', 108, netbsd32_nvlist_ref_t)

/* From sys/drvctlio.h */
struct netbsd32_devlistargs {
	char			l_devname[16];
	netbsd32_charpp		l_childname;
	netbsd32_size_t		l_children;
};

struct netbsd32_devrescanargs {
	char			busname[16];
	char			ifattr[16];
	unsigned int		numlocators;
	netbsd32_intp		locators;
};

#define	DRVRESCANBUS32		_IOW('D', 124, struct netbsd32_devrescanargs)
#define DRVCTLCOMMAND32		_IOWR('D', 125, struct netbsd32_plistref)
#define	DRVLISTDEV32		_IOWR('D', 127, struct netbsd32_devlistargs)
#define DRVGETEVENT32		_IOR('D', 128, struct netbsd32_plistref)

/* From sys/disk.h, sys/dkio.h */

struct netbsd32_dkwedge_list {
	netbsd32_voidp		dkwl_buf; /* storage for dkwedge_info array */
	netbsd32_size_t		dkwl_bufsize;	/* size	of that	buffer */
	u_int			dkwl_nwedges;	/* total number	of wedges */
	u_int			dkwl_ncopied;	/* number actually copied */
} __packed;

#define DIOCLWEDGES32		_IOWR('d', 124, struct netbsd32_dkwedge_list)

struct netbsd32_disk_strategy {
	char dks_name[DK_STRATEGYNAMELEN];	/* name of strategy */
	netbsd32_charp dks_param;		/* notyet; should be NULL */
	netbsd32_size_t dks_paramlen;		/* notyet; should be 0 */
} __packed;

#define DIOCGSTRATEGY32		_IOR('d', 125, struct netbsd32_disk_strategy)
#define DIOCSSTRATEGY32		_IOW('d', 126, struct netbsd32_disk_strategy)