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