1 | #ifndef _IF_SRT_H_1b91f8f1_ |
2 | #define _IF_SRT_H_1b91f8f1_ |
3 | |
4 | /* $NetBSD: if_srt.h,v 1.4 2015/09/06 06:01:01 dholland Exp $ */ |
5 | |
6 | /* This file is in the public domain. */ |
7 | |
8 | #include <sys/ioccom.h> /* for _IOR etc */ |
9 | #include <net/if.h> /* XXX for IFNAMSIZ */ |
10 | #include <netinet/in.h> /* for in_addr/in6_addr */ |
11 | |
12 | struct srt_rt { |
13 | unsigned int inx; |
14 | int af; |
15 | union { |
16 | struct in_addr v4; |
17 | struct in6_addr v6; |
18 | } srcmatch; |
19 | unsigned int srcmask; |
20 | union { |
21 | struct ifnet *dstifp; |
22 | char dstifn[IFNAMSIZ]; |
23 | } u; |
24 | union { |
25 | struct sockaddr_in sin; |
26 | struct sockaddr_in6 sin6; |
27 | struct sockaddr sa; |
28 | } dst; |
29 | }; |
30 | |
31 | /* Gets the number of slots in the rts array */ |
32 | #define SRT_GETNRT _IOR('e',0,unsigned int) |
33 | |
34 | /* Gets an rt entry, given the slot number in the inx field */ |
35 | #define SRT_GETRT _IOWR('e',1,struct srt_rt) |
36 | |
37 | /* Sets an rt entry; inx must be either in the array or one past it */ |
38 | #define SRT_SETRT _IOW('e',2,struct srt_rt) |
39 | |
40 | /* Delete an rt entry by index; shifts the rest down */ |
41 | #define SRT_DELRT _IOW('e',3,unsigned int) |
42 | |
43 | /* Set flag bits */ |
44 | #define SRT_SFLAGS _IOW('e',4,unsigned int) |
45 | |
46 | /* Get flag bits */ |
47 | #define SRT_GFLAGS _IOR('e',5,unsigned int) |
48 | |
49 | /* Atomically replace flag bits */ |
50 | #define SRT_SGFLAGS _IOWR('e',6,unsigned int) |
51 | |
52 | /* Do debugging tasks (not documented here - see the source) */ |
53 | #define SRT_DEBUG _IOW('e',7,void *) |
54 | |
55 | /* Flag bits for SRT_*FLAGS */ |
56 | #define SSF_MTULOCK 0x00000001 /* don't auto-update MTU */ |
57 | /* Some flags are global; some are per-unit. */ |
58 | #define SSF_GLOBAL (0) |
59 | |
60 | #endif |
61 | |