162306a36Sopenharmony_ci#ifndef __NET_TUN_PROTO_H 262306a36Sopenharmony_ci#define __NET_TUN_PROTO_H 362306a36Sopenharmony_ci 462306a36Sopenharmony_ci#include <linux/if_ether.h> 562306a36Sopenharmony_ci#include <linux/types.h> 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci/* One byte protocol values as defined by VXLAN-GPE and NSH. These will 862306a36Sopenharmony_ci * hopefully get a shared IANA registry. 962306a36Sopenharmony_ci */ 1062306a36Sopenharmony_ci#define TUN_P_IPV4 0x01 1162306a36Sopenharmony_ci#define TUN_P_IPV6 0x02 1262306a36Sopenharmony_ci#define TUN_P_ETHERNET 0x03 1362306a36Sopenharmony_ci#define TUN_P_NSH 0x04 1462306a36Sopenharmony_ci#define TUN_P_MPLS_UC 0x05 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_cistatic inline __be16 tun_p_to_eth_p(u8 proto) 1762306a36Sopenharmony_ci{ 1862306a36Sopenharmony_ci switch (proto) { 1962306a36Sopenharmony_ci case TUN_P_IPV4: 2062306a36Sopenharmony_ci return htons(ETH_P_IP); 2162306a36Sopenharmony_ci case TUN_P_IPV6: 2262306a36Sopenharmony_ci return htons(ETH_P_IPV6); 2362306a36Sopenharmony_ci case TUN_P_ETHERNET: 2462306a36Sopenharmony_ci return htons(ETH_P_TEB); 2562306a36Sopenharmony_ci case TUN_P_NSH: 2662306a36Sopenharmony_ci return htons(ETH_P_NSH); 2762306a36Sopenharmony_ci case TUN_P_MPLS_UC: 2862306a36Sopenharmony_ci return htons(ETH_P_MPLS_UC); 2962306a36Sopenharmony_ci } 3062306a36Sopenharmony_ci return 0; 3162306a36Sopenharmony_ci} 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_cistatic inline u8 tun_p_from_eth_p(__be16 proto) 3462306a36Sopenharmony_ci{ 3562306a36Sopenharmony_ci switch (proto) { 3662306a36Sopenharmony_ci case htons(ETH_P_IP): 3762306a36Sopenharmony_ci return TUN_P_IPV4; 3862306a36Sopenharmony_ci case htons(ETH_P_IPV6): 3962306a36Sopenharmony_ci return TUN_P_IPV6; 4062306a36Sopenharmony_ci case htons(ETH_P_TEB): 4162306a36Sopenharmony_ci return TUN_P_ETHERNET; 4262306a36Sopenharmony_ci case htons(ETH_P_NSH): 4362306a36Sopenharmony_ci return TUN_P_NSH; 4462306a36Sopenharmony_ci case htons(ETH_P_MPLS_UC): 4562306a36Sopenharmony_ci return TUN_P_MPLS_UC; 4662306a36Sopenharmony_ci } 4762306a36Sopenharmony_ci return 0; 4862306a36Sopenharmony_ci} 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_ci#endif 51