Merge git://github.com/Paragon-Software-Group/linux-ntfs3
[linux-2.6-microblaze.git] / include / net / tun_proto.h
1 #ifndef __NET_TUN_PROTO_H
2 #define __NET_TUN_PROTO_H
3
4 #include <linux/kernel.h>
5
6 /* One byte protocol values as defined by VXLAN-GPE and NSH. These will
7  * hopefully get a shared IANA registry.
8  */
9 #define TUN_P_IPV4      0x01
10 #define TUN_P_IPV6      0x02
11 #define TUN_P_ETHERNET  0x03
12 #define TUN_P_NSH       0x04
13 #define TUN_P_MPLS_UC   0x05
14
15 static inline __be16 tun_p_to_eth_p(u8 proto)
16 {
17         switch (proto) {
18         case TUN_P_IPV4:
19                 return htons(ETH_P_IP);
20         case TUN_P_IPV6:
21                 return htons(ETH_P_IPV6);
22         case TUN_P_ETHERNET:
23                 return htons(ETH_P_TEB);
24         case TUN_P_NSH:
25                 return htons(ETH_P_NSH);
26         case TUN_P_MPLS_UC:
27                 return htons(ETH_P_MPLS_UC);
28         }
29         return 0;
30 }
31
32 static inline u8 tun_p_from_eth_p(__be16 proto)
33 {
34         switch (proto) {
35         case htons(ETH_P_IP):
36                 return TUN_P_IPV4;
37         case htons(ETH_P_IPV6):
38                 return TUN_P_IPV6;
39         case htons(ETH_P_TEB):
40                 return TUN_P_ETHERNET;
41         case htons(ETH_P_NSH):
42                 return TUN_P_NSH;
43         case htons(ETH_P_MPLS_UC):
44                 return TUN_P_MPLS_UC;
45         }
46         return 0;
47 }
48
49 #endif