linux/include/net/tun_proto.h
<<
>>
Prefs
   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
  15static 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
  32static 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
  50