all: ensure all files have the same license header
[olsrd.git] / android / linux / if_tunnel.h
1 /*
2  * The olsr.org Optimized Link-State Routing daemon (olsrd)
3  *
4  * (c) by the OLSR project
5  *
6  * See our Git repository to find out who worked on this file
7  * and thus is a copyright holder on it.
8  *
9  * All rights reserved.
10  *
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted provided that the following conditions
13  * are met:
14  *
15  * * Redistributions of source code must retain the above copyright
16  *   notice, this list of conditions and the following disclaimer.
17  * * Redistributions in binary form must reproduce the above copyright
18  *   notice, this list of conditions and the following disclaimer in
19  *   the documentation and/or other materials provided with the
20  *   distribution.
21  * * Neither the name of olsr.org, olsrd nor the names of its
22  *   contributors may be used to endorse or promote products derived
23  *   from this software without specific prior written permission.
24  *
25  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
28  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
29  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
30  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
31  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
32  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
33  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
35  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36  * POSSIBILITY OF SUCH DAMAGE.
37  *
38  * Visit http://www.olsr.org for more information.
39  *
40  * If you find this software useful feel free to make a donation
41  * to the project. For more information see the website or contact
42  * the copyright holders.
43  *
44  */
45
46 #ifndef _IF_TUNNEL_H_
47 #define _IF_TUNNEL_H_
48
49 #include <linux/types.h>
50 #include <asm/byteorder.h>
51 #include <net/if.h>
52
53 #ifdef __KERNEL__
54 #include <linux/ip.h>
55 #include <linux/in6.h>
56 #endif /* __KERNEL__ */
57
58 #define SIOCGETTUNNEL   (SIOCDEVPRIVATE + 0)
59 #define SIOCADDTUNNEL   (SIOCDEVPRIVATE + 1)
60 #define SIOCDELTUNNEL   (SIOCDEVPRIVATE + 2)
61 #define SIOCCHGTUNNEL   (SIOCDEVPRIVATE + 3)
62 #define SIOCGETPRL      (SIOCDEVPRIVATE + 4)
63 #define SIOCADDPRL      (SIOCDEVPRIVATE + 5)
64 #define SIOCDELPRL      (SIOCDEVPRIVATE + 6)
65 #define SIOCCHGPRL      (SIOCDEVPRIVATE + 7)
66 #define SIOCGET6RD      (SIOCDEVPRIVATE + 8)
67 #define SIOCADD6RD      (SIOCDEVPRIVATE + 9)
68 #define SIOCDEL6RD      (SIOCDEVPRIVATE + 10)
69 #define SIOCCHG6RD      (SIOCDEVPRIVATE + 11)
70
71 #define GRE_CSUM        __cpu_to_be16(0x8000)
72 #define GRE_ROUTING     __cpu_to_be16(0x4000)
73 #define GRE_KEY         __cpu_to_be16(0x2000)
74 #define GRE_SEQ         __cpu_to_be16(0x1000)
75 #define GRE_STRICT      __cpu_to_be16(0x0800)
76 #define GRE_REC         __cpu_to_be16(0x0700)
77 #define GRE_FLAGS       __cpu_to_be16(0x00F8)
78 #define GRE_VERSION     __cpu_to_be16(0x0007)
79
80 struct ip_tunnel_parm {
81         char                    name[IFNAMSIZ];
82         int                     link;
83         __be16                  i_flags;
84         __be16                  o_flags;
85         __be32                  i_key;
86         __be32                  o_key;
87         struct iphdr            iph;
88 };
89
90 /* SIT-mode i_flags */
91 #define SIT_ISATAP      0x0001
92
93 struct ip_tunnel_prl {
94         __be32                  addr;
95         __u16                   flags;
96         __u16                   __reserved;
97         __u32                   datalen;
98         __u32                   __reserved2;
99         /* data follows */
100 };
101
102 /* PRL flags */
103 #define PRL_DEFAULT             0x0001
104
105 struct ip_tunnel_6rd {
106         struct in6_addr         prefix;
107         __be32                  relay_prefix;
108         __u16                   prefixlen;
109         __u16                   relay_prefixlen;
110 };
111
112 enum {
113         IFLA_GRE_UNSPEC,
114         IFLA_GRE_LINK,
115         IFLA_GRE_IFLAGS,
116         IFLA_GRE_OFLAGS,
117         IFLA_GRE_IKEY,
118         IFLA_GRE_OKEY,
119         IFLA_GRE_LOCAL,
120         IFLA_GRE_REMOTE,
121         IFLA_GRE_TTL,
122         IFLA_GRE_TOS,
123         IFLA_GRE_PMTUDISC,
124         __IFLA_GRE_MAX,
125 };
126
127 #define IFLA_GRE_MAX    (__IFLA_GRE_MAX - 1)
128
129 #endif /* _IF_TUNNEL_H_ */