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
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
|
/* $NetBSD: netbsd32_ioctl.h,v 1.79 2021/12/22 00:21:32 roy 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/lockstat.h>
#include <dev/wscons/wsconsio.h>
#include <net/route.h>
#include <netinet/in.h>
#include <netinet/ip_mroute.h>
#include <net80211/ieee80211_ioctl.h>
#include <compat/netbsd32/netbsd32.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/event.h> */
struct netbsd32_kfilter_mapping {
netbsd32_charp name; /* name to lookup or return */
netbsd32_size_t len; /* length of name */
uint32_t filter; /* filter to lookup or return */
};
/* map filter to name (max size len) */
#define KFILTER_BYFILTER32 _IOWR('k', 0, struct netbsd32_kfilter_mapping)
/* map name to filter (len ignored) */
#define KFILTER_BYNAME32 _IOWR('k', 1, struct netbsd32_kfilter_mapping)
/* 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)
#define BIOCSETWF32 _IOW('B',127, struct netbsd32_bpf_program)
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 */
/* from <netinet/if_arp.h> */
struct netbsd32_in_nbrinfo {
char ifname[IFNAMSIZ]; /* if name, e.g. "en0" */
struct in_addr addr; /* IPv4 address of the neighbor */
netbsd32_long asked; /* number of queries already sent for this addr */
int state; /* reachability state */
int expire; /* lifetime for NDP state transition */
};
/* from <sys/sockio.h> */
#define SIOCGNBRINFO32 _IOWR('i', 249, struct netbsd32_in_nbrinfo)
/* from <netinet6/nd6.h> */
struct netbsd32_in6_nbrinfo {
char ifname[IFNAMSIZ]; /* if name, e.g. "en0" */
struct in6_addr addr; /* IPv6 address of the neighbor */
netbsd32_long asked; /* number of queries already sent for this addr */
int isrouter; /* if it acts as a router */
int state; /* reachability state */
int expire; /* lifetime for NDP state transition */
};
/* from <netinet6/in6_var.h> */
#define SIOCGNBRINFO_IN632 _IOWR('i', 78, struct netbsd32_in6_nbrinfo)
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 */
/* from <dev/ffsvar.h> */
struct netbsd32_fss_set {
netbsd32_charp fss_mount; /* Mount point of file system */
netbsd32_charp fss_bstore; /* Path of backing store */
blksize_t fss_csize; /* Preferred cluster size */
int fss_flags; /* Initial flags */
};
struct netbsd32_fss_get {
char fsg_mount[MNAMELEN]; /* Mount point of file system */
struct netbsd32_timeval fsg_time; /* Time this snapshot was taken */
blksize_t fsg_csize; /* Current cluster size */
netbsd32_blkcnt_t fsg_mount_size; /* # clusters on file system */
netbsd32_blkcnt_t fsg_bs_size; /* # clusters on backing store */
};
/* XXX: FSSIOCSET50 and FSSIOCGET50 are not (yet) handled */
#define FSSIOCSET32 _IOW('F', 5, struct netbsd32_fss_set) /* Configure */
#define FSSIOCGET32 _IOR('F', 1, struct netbsd32_fss_get) /* Status */
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 */
netbsd32_uint64 vnd_size; /* (returned) size of disk */
};
struct netbsd32_vnd_user {
int vnu_unit; /* which vnd unit */
netbsd32_dev_t vnu_dev; /* file is on this device... */
netbsd32_ino_t vnu_ino; /* ...at this inode */
};
/* 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)
#define DIOCGDISKINFO32 _IOR('d', 127, struct netbsd32_plistref)
/* from <dev/lockstat.h> */
struct netbsd32_lsenable {
netbsd32_uintptr_t le_csstart; /* callsite start */
netbsd32_uintptr_t le_csend; /* callsite end */
netbsd32_uintptr_t le_lockstart; /* lock address start */
netbsd32_uintptr_t le_lockend; /* lock address end */
netbsd32_uintptr_t le_nbufs; /* buffers to allocate, 0 = default */
u_int le_flags; /* request flags */
u_int le_mask; /* event mask (LB_*) */
};
struct netbsd32_lsdisable {
netbsd32_size_t ld_size; /* buffer space allocated */
struct netbsd32_timespec ld_time; /* time spent enabled */
uint64_t ld_freq[64]; /* counter HZ by CPU number */
};
#define IOC_LOCKSTAT_ENABLE32 _IOW('L', 1, struct netbsd32_lsenable)
#define IOC_LOCKSTAT_DISABLE32 _IOR('L', 2, struct netbsd32_lsdisable)
int netbsd32_drm_ioctl(struct file *, unsigned long, void *, struct lwp *);
|