initial check-in, version 0.5.0
[musl] / include / net / route.h
1 #ifndef _NET_ROUTE_H
2 #define _NET_ROUTE_H
3
4 #include <stdint.h>
5 #include <sys/socket.h>
6 #include <sys/types.h>
7 #include <netinet/in.h>
8
9
10 struct rtentry {
11         unsigned long int rt_pad1;
12         struct sockaddr rt_dst;
13         struct sockaddr rt_gateway;
14         struct sockaddr rt_genmask;
15         unsigned short int rt_flags;
16         short int rt_pad2;
17         unsigned long int rt_pad3;
18         unsigned char rt_tos;
19         unsigned char rt_class;
20         short int rt_pad4[sizeof(long)/2-1];
21         short int rt_metric;
22         char *rt_dev;
23         unsigned long int rt_mtu;
24         unsigned long int rt_window;
25         unsigned short int rt_irtt;
26 };
27
28 #define rt_mss  rt_mtu
29
30
31 struct in6_rtmsg {
32         struct in6_addr rtmsg_dst;
33         struct in6_addr rtmsg_src;
34         struct in6_addr rtmsg_gateway;
35         uint32_t rtmsg_type;
36         uint16_t rtmsg_dst_len;
37         uint16_t rtmsg_src_len;
38         uint32_t rtmsg_metric;
39         unsigned long int rtmsg_info;
40         uint32_t rtmsg_flags;
41         int rtmsg_ifindex;
42 };
43
44
45 #define RTF_UP          0x0001
46 #define RTF_GATEWAY     0x0002
47
48 #define RTF_HOST        0x0004
49 #define RTF_REINSTATE   0x0008
50 #define RTF_DYNAMIC     0x0010
51 #define RTF_MODIFIED    0x0020
52 #define RTF_MTU         0x0040
53 #define RTF_MSS         RTF_MTU
54 #define RTF_WINDOW      0x0080
55 #define RTF_IRTT        0x0100
56 #define RTF_REJECT      0x0200
57 #define RTF_STATIC      0x0400
58 #define RTF_XRESOLVE    0x0800
59 #define RTF_NOFORWARD   0x1000
60 #define RTF_THROW       0x2000
61 #define RTF_NOPMTUDISC  0x4000
62
63 #define RTF_DEFAULT     0x00010000
64 #define RTF_ALLONLINK   0x00020000
65 #define RTF_ADDRCONF    0x00040000
66
67 #define RTF_LINKRT      0x00100000
68 #define RTF_NONEXTHOP   0x00200000
69
70 #define RTF_CACHE       0x01000000
71 #define RTF_FLOW        0x02000000
72 #define RTF_POLICY      0x04000000
73
74 #define RTCF_VALVE      0x00200000
75 #define RTCF_MASQ       0x00400000
76 #define RTCF_NAT        0x00800000
77 #define RTCF_DOREDIRECT 0x01000000
78 #define RTCF_LOG        0x02000000
79 #define RTCF_DIRECTSRC  0x04000000
80
81 #define RTF_LOCAL       0x80000000
82 #define RTF_INTERFACE   0x40000000
83 #define RTF_MULTICAST   0x20000000
84 #define RTF_BROADCAST   0x10000000
85 #define RTF_NAT         0x08000000
86
87 #define RTF_ADDRCLASSMASK       0xF8000000
88 #define RT_ADDRCLASS(flags)     ((uint32_t) flags >> 23)
89
90 #define RT_TOS(tos)             ((tos) & IPTOS_TOS_MASK)
91
92 #define RT_LOCALADDR(flags)     ((flags & RTF_ADDRCLASSMASK) \
93                                  == (RTF_LOCAL|RTF_INTERFACE))
94
95 #define RT_CLASS_UNSPEC         0
96 #define RT_CLASS_DEFAULT        253
97
98 #define RT_CLASS_MAIN           254
99 #define RT_CLASS_LOCAL          255
100 #define RT_CLASS_MAX            255
101
102
103 #define RTMSG_ACK               NLMSG_ACK
104 #define RTMSG_OVERRUN           NLMSG_OVERRUN
105
106 #define RTMSG_NEWDEVICE         0x11
107 #define RTMSG_DELDEVICE         0x12
108 #define RTMSG_NEWROUTE          0x21
109 #define RTMSG_DELROUTE          0x22
110 #define RTMSG_NEWRULE           0x31
111 #define RTMSG_DELRULE           0x32
112 #define RTMSG_CONTROL           0x40
113
114 #define RTMSG_AR_FAILED         0x51
115
116 #endif