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