2 #include <linux/if_ether.h>
7 static const int ether_types
[] = {
9 /*These are the defined Ethernet Protocol ID's. */
10 ETH_P_LOOP
, ETH_P_PUP
, ETH_P_PUPAT
, ETH_P_IP
,
11 ETH_P_X25
, ETH_P_ARP
, ETH_P_BPQ
, ETH_P_IEEEPUP
,
12 ETH_P_IEEEPUPAT
, ETH_P_BATMAN
, ETH_P_DEC
, ETH_P_DNA_DL
,
13 ETH_P_DNA_RC
, ETH_P_DNA_RT
, ETH_P_LAT
, ETH_P_DIAG
,
14 ETH_P_CUST
, ETH_P_SCA
, ETH_P_TEB
, ETH_P_RARP
,
15 ETH_P_ATALK
, ETH_P_AARP
, ETH_P_8021Q
, ETH_P_IPX
,
16 ETH_P_IPV6
, ETH_P_PAUSE
, ETH_P_SLOW
, ETH_P_WCCP
,
18 ETH_P_PPP_DISC
, ETH_P_PPP_SES
, ETH_P_MPLS_UC
, ETH_P_MPLS_MC
,
19 ETH_P_ATMMPOA
, ETH_P_LINK_CTL
, ETH_P_ATMFATE
,
21 ETH_P_PAE
, ETH_P_AOE
, ETH_P_8021AD
, ETH_P_802_EX1
,
22 ETH_P_TIPC
, ETH_P_8021AH
, ETH_P_MVRP
, ETH_P_1588
, ETH_P_PRP
,
23 ETH_P_FCOE
, ETH_P_TDLS
, ETH_P_FIP
, ETH_P_QINQ1
,
24 ETH_P_QINQ2
, ETH_P_QINQ3
, ETH_P_EDSA
, ETH_P_AF_IUCV
,
28 /* Non DIX types. Won't clash for 1500 types. */
29 ETH_P_802_3
, ETH_P_AX25
, ETH_P_ALL
, ETH_P_802_2
,
30 ETH_P_SNAP
, ETH_P_DDCMP
, ETH_P_WAN_PPP
, ETH_P_PPP_MP
,
31 ETH_P_LOCALTALK
, ETH_P_CAN
, ETH_P_CANFD
, ETH_P_PPPTALK
,
32 ETH_P_TR_802_2
, ETH_P_MOBITEX
, ETH_P_CONTROL
, ETH_P_IRDA
,
33 ETH_P_ECONET
, ETH_P_HDLC
, ETH_P_ARCNET
, ETH_P_DSA
,
34 ETH_P_TRAILER
, ETH_P_PHONET
, ETH_P_IEEE802154
, ETH_P_CAIF
,
37 #define NR_ETHER_TYPES ARRAY_SIZE(ether_types)
39 int get_random_ether_type(void)
41 return ether_types
[rand() % NR_ETHER_TYPES
];