/* SPDX-License-Identifier: GPL-2.0-or-later */12#ifndef _LINUX_DROPREASON_CORE_H3#define _LINUX_DROPREASON_CORE_H45#define DEFINE_DROP_REASON(FN, FNe) \6FN(NOT_SPECIFIED) \7FN(NO_SOCKET) \8FN(SOCKET_CLOSE) \9FN(SOCKET_FILTER) \10FN(SOCKET_RCVBUFF) \11FN(UNIX_DISCONNECT) \12FN(UNIX_SKIP_OOB) \13FN(PKT_TOO_SMALL) \14FN(TCP_CSUM) \15FN(UDP_CSUM) \16FN(NETFILTER_DROP) \17FN(OTHERHOST) \18FN(IP_CSUM) \19FN(IP_INHDR) \20FN(IP_RPFILTER) \21FN(UNICAST_IN_L2_MULTICAST) \22FN(XFRM_POLICY) \23FN(IP_NOPROTO) \24FN(PROTO_MEM) \25FN(TCP_AUTH_HDR) \26FN(TCP_MD5NOTFOUND) \27FN(TCP_MD5UNEXPECTED) \28FN(TCP_MD5FAILURE) \29FN(TCP_AONOTFOUND) \30FN(TCP_AOUNEXPECTED) \31FN(TCP_AOKEYNOTFOUND) \32FN(TCP_AOFAILURE) \33FN(SOCKET_BACKLOG) \34FN(TCP_FLAGS) \35FN(TCP_ABORT_ON_DATA) \36FN(TCP_ZEROWINDOW) \37FN(TCP_OLD_DATA) \38FN(TCP_OVERWINDOW) \39FN(TCP_OFOMERGE) \40FN(TCP_RFC7323_PAWS) \41FN(TCP_RFC7323_PAWS_ACK) \42FN(TCP_RFC7323_TW_PAWS) \43FN(TCP_RFC7323_TSECR) \44FN(TCP_LISTEN_OVERFLOW) \45FN(TCP_OLD_SEQUENCE) \46FN(TCP_INVALID_SEQUENCE) \47FN(TCP_INVALID_END_SEQUENCE) \48FN(TCP_INVALID_ACK_SEQUENCE) \49FN(TCP_RESET) \50FN(TCP_INVALID_SYN) \51FN(TCP_CLOSE) \52FN(TCP_FASTOPEN) \53FN(TCP_OLD_ACK) \54FN(TCP_TOO_OLD_ACK) \55FN(TCP_ACK_UNSENT_DATA) \56FN(TCP_OFO_QUEUE_PRUNE) \57FN(TCP_OFO_DROP) \58FN(IP_OUTNOROUTES) \59FN(BPF_CGROUP_EGRESS) \60FN(IPV6DISABLED) \61FN(NEIGH_CREATEFAIL) \62FN(NEIGH_FAILED) \63FN(NEIGH_QUEUEFULL) \64FN(NEIGH_DEAD) \65FN(NEIGH_HH_FILLFAIL) \66FN(TC_EGRESS) \67FN(SECURITY_HOOK) \68FN(QDISC_DROP) \69FN(QDISC_OVERLIMIT) \70FN(QDISC_CONGESTED) \71FN(CAKE_FLOOD) \72FN(FQ_BAND_LIMIT) \73FN(FQ_HORIZON_LIMIT) \74FN(FQ_FLOW_LIMIT) \75FN(CPU_BACKLOG) \76FN(XDP) \77FN(TC_INGRESS) \78FN(UNHANDLED_PROTO) \79FN(SKB_CSUM) \80FN(SKB_GSO_SEG) \81FN(SKB_UCOPY_FAULT) \82FN(DEV_HDR) \83FN(DEV_READY) \84FN(FULL_RING) \85FN(NOMEM) \86FN(HDR_TRUNC) \87FN(TAP_FILTER) \88FN(TAP_TXFILTER) \89FN(ICMP_CSUM) \90FN(INVALID_PROTO) \91FN(IP_INADDRERRORS) \92FN(IP_INNOROUTES) \93FN(IP_LOCAL_SOURCE) \94FN(IP_INVALID_SOURCE) \95FN(IP_LOCALNET) \96FN(IP_INVALID_DEST) \97FN(PKT_TOO_BIG) \98FN(DUP_FRAG) \99FN(FRAG_REASM_TIMEOUT) \100FN(FRAG_TOO_FAR) \101FN(TCP_MINTTL) \102FN(IPV6_BAD_EXTHDR) \103FN(IPV6_NDISC_FRAG) \104FN(IPV6_NDISC_HOP_LIMIT) \105FN(IPV6_NDISC_BAD_CODE) \106FN(IPV6_NDISC_BAD_OPTIONS) \107FN(IPV6_NDISC_NS_OTHERHOST) \108FN(QUEUE_PURGE) \109FN(TC_COOKIE_ERROR) \110FN(PACKET_SOCK_ERROR) \111FN(TC_CHAIN_NOTFOUND) \112FN(TC_RECLASSIFY_LOOP) \113FN(VXLAN_INVALID_HDR) \114FN(VXLAN_VNI_NOT_FOUND) \115FN(MAC_INVALID_SOURCE) \116FN(VXLAN_ENTRY_EXISTS) \117FN(NO_TX_TARGET) \118FN(IP_TUNNEL_ECN) \119FN(TUNNEL_TXINFO) \120FN(LOCAL_MAC) \121FN(ARP_PVLAN_DISABLE) \122FN(MAC_IEEE_MAC_CONTROL) \123FN(BRIDGE_INGRESS_STP_STATE) \124FN(CAN_RX_INVALID_FRAME) \125FN(CANFD_RX_INVALID_FRAME) \126FN(CANXL_RX_INVALID_FRAME) \127FN(PFMEMALLOC) \128FN(DUALPI2_STEP_DROP) \129FN(PSP_INPUT) \130FN(PSP_OUTPUT) \131FNe(MAX)132133/**134* enum skb_drop_reason - the reasons of skb drops135*136* The reason of skb drop, which is used in kfree_skb_reason().137*/138enum skb_drop_reason {139/**140* @SKB_NOT_DROPPED_YET: skb is not dropped yet (used for no-drop case)141*/142SKB_NOT_DROPPED_YET = 0,143/** @SKB_CONSUMED: packet has been consumed */144SKB_CONSUMED,145/** @SKB_DROP_REASON_NOT_SPECIFIED: drop reason is not specified */146SKB_DROP_REASON_NOT_SPECIFIED,147/**148* @SKB_DROP_REASON_NO_SOCKET: no valid socket that can be used.149* Reason could be one of three cases:150* 1) no established/listening socket found during lookup process151* 2) no valid request socket during 3WHS process152* 3) no valid child socket during 3WHS process153*/154SKB_DROP_REASON_NO_SOCKET,155/** @SKB_DROP_REASON_SOCKET_CLOSE: socket is close()d */156SKB_DROP_REASON_SOCKET_CLOSE,157/** @SKB_DROP_REASON_SOCKET_FILTER: dropped by socket filter */158SKB_DROP_REASON_SOCKET_FILTER,159/** @SKB_DROP_REASON_SOCKET_RCVBUFF: socket receive buff is full */160SKB_DROP_REASON_SOCKET_RCVBUFF,161/**162* @SKB_DROP_REASON_UNIX_DISCONNECT: recv queue is purged when SOCK_DGRAM163* or SOCK_SEQPACKET socket re-connect()s to another socket or notices164* during send() that the peer has been close()d.165*/166SKB_DROP_REASON_UNIX_DISCONNECT,167/**168* @SKB_DROP_REASON_UNIX_SKIP_OOB: Out-Of-Band data is skipped by169* recv() without MSG_OOB so dropped.170*/171SKB_DROP_REASON_UNIX_SKIP_OOB,172/** @SKB_DROP_REASON_PKT_TOO_SMALL: packet size is too small */173SKB_DROP_REASON_PKT_TOO_SMALL,174/** @SKB_DROP_REASON_TCP_CSUM: TCP checksum error */175SKB_DROP_REASON_TCP_CSUM,176/** @SKB_DROP_REASON_UDP_CSUM: UDP checksum error */177SKB_DROP_REASON_UDP_CSUM,178/** @SKB_DROP_REASON_NETFILTER_DROP: dropped by netfilter */179SKB_DROP_REASON_NETFILTER_DROP,180/**181* @SKB_DROP_REASON_OTHERHOST: packet don't belong to current host182* (interface is in promisc mode)183*/184SKB_DROP_REASON_OTHERHOST,185/** @SKB_DROP_REASON_IP_CSUM: IP checksum error */186SKB_DROP_REASON_IP_CSUM,187/**188* @SKB_DROP_REASON_IP_INHDR: there is something wrong with IP header (see189* IPSTATS_MIB_INHDRERRORS)190*/191SKB_DROP_REASON_IP_INHDR,192/**193* @SKB_DROP_REASON_IP_RPFILTER: IP rpfilter validate failed. see the194* document for rp_filter in ip-sysctl.rst for more information195*/196SKB_DROP_REASON_IP_RPFILTER,197/**198* @SKB_DROP_REASON_UNICAST_IN_L2_MULTICAST: destination address of L2 is199* multicast, but L3 is unicast.200*/201SKB_DROP_REASON_UNICAST_IN_L2_MULTICAST,202/** @SKB_DROP_REASON_XFRM_POLICY: xfrm policy check failed */203SKB_DROP_REASON_XFRM_POLICY,204/** @SKB_DROP_REASON_IP_NOPROTO: no support for IP protocol */205SKB_DROP_REASON_IP_NOPROTO,206/**207* @SKB_DROP_REASON_PROTO_MEM: proto memory limitation, such as208* udp packet drop out of udp_memory_allocated.209*/210SKB_DROP_REASON_PROTO_MEM,211/**212* @SKB_DROP_REASON_TCP_AUTH_HDR: TCP-MD5 or TCP-AO hashes are met213* twice or set incorrectly.214*/215SKB_DROP_REASON_TCP_AUTH_HDR,216/**217* @SKB_DROP_REASON_TCP_MD5NOTFOUND: no MD5 hash and one expected,218* corresponding to LINUX_MIB_TCPMD5NOTFOUND219*/220SKB_DROP_REASON_TCP_MD5NOTFOUND,221/**222* @SKB_DROP_REASON_TCP_MD5UNEXPECTED: MD5 hash and we're not expecting223* one, corresponding to LINUX_MIB_TCPMD5UNEXPECTED224*/225SKB_DROP_REASON_TCP_MD5UNEXPECTED,226/**227* @SKB_DROP_REASON_TCP_MD5FAILURE: MD5 hash and its wrong, corresponding228* to LINUX_MIB_TCPMD5FAILURE229*/230SKB_DROP_REASON_TCP_MD5FAILURE,231/**232* @SKB_DROP_REASON_TCP_AONOTFOUND: no TCP-AO hash and one was expected,233* corresponding to LINUX_MIB_TCPAOREQUIRED234*/235SKB_DROP_REASON_TCP_AONOTFOUND,236/**237* @SKB_DROP_REASON_TCP_AOUNEXPECTED: TCP-AO hash is present and it238* was not expected, corresponding to LINUX_MIB_TCPAOKEYNOTFOUND239*/240SKB_DROP_REASON_TCP_AOUNEXPECTED,241/**242* @SKB_DROP_REASON_TCP_AOKEYNOTFOUND: TCP-AO key is unknown,243* corresponding to LINUX_MIB_TCPAOKEYNOTFOUND244*/245SKB_DROP_REASON_TCP_AOKEYNOTFOUND,246/**247* @SKB_DROP_REASON_TCP_AOFAILURE: TCP-AO hash is wrong,248* corresponding to LINUX_MIB_TCPAOBAD249*/250SKB_DROP_REASON_TCP_AOFAILURE,251/**252* @SKB_DROP_REASON_SOCKET_BACKLOG: failed to add skb to socket backlog (253* see LINUX_MIB_TCPBACKLOGDROP)254*/255SKB_DROP_REASON_SOCKET_BACKLOG,256/** @SKB_DROP_REASON_TCP_FLAGS: TCP flags invalid */257SKB_DROP_REASON_TCP_FLAGS,258/**259* @SKB_DROP_REASON_TCP_ABORT_ON_DATA: abort on data, corresponding to260* LINUX_MIB_TCPABORTONDATA261*/262SKB_DROP_REASON_TCP_ABORT_ON_DATA,263/**264* @SKB_DROP_REASON_TCP_ZEROWINDOW: TCP receive window size is zero,265* see LINUX_MIB_TCPZEROWINDOWDROP266*/267SKB_DROP_REASON_TCP_ZEROWINDOW,268/**269* @SKB_DROP_REASON_TCP_OLD_DATA: the TCP data received is already270* received before (spurious retrans may happened), see271* LINUX_MIB_DELAYEDACKLOST272*/273SKB_DROP_REASON_TCP_OLD_DATA,274/**275* @SKB_DROP_REASON_TCP_OVERWINDOW: the TCP data is out of window,276* the seq of the first byte exceed the right edges of receive277* window278*/279SKB_DROP_REASON_TCP_OVERWINDOW,280/**281* @SKB_DROP_REASON_TCP_OFOMERGE: the data of skb is already in the ofo282* queue, corresponding to LINUX_MIB_TCPOFOMERGE283*/284SKB_DROP_REASON_TCP_OFOMERGE,285/**286* @SKB_DROP_REASON_TCP_RFC7323_PAWS: PAWS check, corresponding to287* LINUX_MIB_PAWSESTABREJECTED, LINUX_MIB_PAWSACTIVEREJECTED288*/289SKB_DROP_REASON_TCP_RFC7323_PAWS,290/**291* @SKB_DROP_REASON_TCP_RFC7323_PAWS_ACK: PAWS check, old ACK packet.292* Corresponds to LINUX_MIB_PAWS_OLD_ACK.293*/294SKB_DROP_REASON_TCP_RFC7323_PAWS_ACK,295/**296* @SKB_DROP_REASON_TCP_RFC7323_TW_PAWS: PAWS check, socket is in297* TIME_WAIT state.298* Corresponds to LINUX_MIB_PAWS_TW_REJECTED.299*/300SKB_DROP_REASON_TCP_RFC7323_TW_PAWS,301/**302* @SKB_DROP_REASON_TCP_RFC7323_TSECR: PAWS check, invalid TSEcr.303* Corresponds to LINUX_MIB_TSECRREJECTED.304*/305SKB_DROP_REASON_TCP_RFC7323_TSECR,306/** @SKB_DROP_REASON_TCP_LISTEN_OVERFLOW: listener queue full. */307SKB_DROP_REASON_TCP_LISTEN_OVERFLOW,308/** @SKB_DROP_REASON_TCP_OLD_SEQUENCE: Old SEQ field (duplicate packet) */309SKB_DROP_REASON_TCP_OLD_SEQUENCE,310/** @SKB_DROP_REASON_TCP_INVALID_SEQUENCE: Not acceptable SEQ field. */311SKB_DROP_REASON_TCP_INVALID_SEQUENCE,312/**313* @SKB_DROP_REASON_TCP_INVALID_END_SEQUENCE:314* Not acceptable END_SEQ field.315* Corresponds to LINUX_MIB_BEYOND_WINDOW.316*/317SKB_DROP_REASON_TCP_INVALID_END_SEQUENCE,318/**319* @SKB_DROP_REASON_TCP_INVALID_ACK_SEQUENCE: Not acceptable ACK SEQ320* field because ack sequence is not in the window between snd_una321* and snd_nxt322*/323SKB_DROP_REASON_TCP_INVALID_ACK_SEQUENCE,324/** @SKB_DROP_REASON_TCP_RESET: Invalid RST packet */325SKB_DROP_REASON_TCP_RESET,326/**327* @SKB_DROP_REASON_TCP_INVALID_SYN: Incoming packet has unexpected328* SYN flag329*/330SKB_DROP_REASON_TCP_INVALID_SYN,331/** @SKB_DROP_REASON_TCP_CLOSE: TCP socket in CLOSE state */332SKB_DROP_REASON_TCP_CLOSE,333/** @SKB_DROP_REASON_TCP_FASTOPEN: dropped by FASTOPEN request socket */334SKB_DROP_REASON_TCP_FASTOPEN,335/** @SKB_DROP_REASON_TCP_OLD_ACK: TCP ACK is old, but in window */336SKB_DROP_REASON_TCP_OLD_ACK,337/** @SKB_DROP_REASON_TCP_TOO_OLD_ACK: TCP ACK is too old */338SKB_DROP_REASON_TCP_TOO_OLD_ACK,339/**340* @SKB_DROP_REASON_TCP_ACK_UNSENT_DATA: TCP ACK for data we haven't341* sent yet342*/343SKB_DROP_REASON_TCP_ACK_UNSENT_DATA,344/** @SKB_DROP_REASON_TCP_OFO_QUEUE_PRUNE: pruned from TCP OFO queue */345SKB_DROP_REASON_TCP_OFO_QUEUE_PRUNE,346/** @SKB_DROP_REASON_TCP_OFO_DROP: data already in receive queue */347SKB_DROP_REASON_TCP_OFO_DROP,348/** @SKB_DROP_REASON_IP_OUTNOROUTES: route lookup failed */349SKB_DROP_REASON_IP_OUTNOROUTES,350/**351* @SKB_DROP_REASON_BPF_CGROUP_EGRESS: dropped by BPF_PROG_TYPE_CGROUP_SKB352* eBPF program353*/354SKB_DROP_REASON_BPF_CGROUP_EGRESS,355/** @SKB_DROP_REASON_IPV6DISABLED: IPv6 is disabled on the device */356SKB_DROP_REASON_IPV6DISABLED,357/** @SKB_DROP_REASON_NEIGH_CREATEFAIL: failed to create neigh entry */358SKB_DROP_REASON_NEIGH_CREATEFAIL,359/** @SKB_DROP_REASON_NEIGH_FAILED: neigh entry in failed state */360SKB_DROP_REASON_NEIGH_FAILED,361/** @SKB_DROP_REASON_NEIGH_QUEUEFULL: arp_queue for neigh entry is full */362SKB_DROP_REASON_NEIGH_QUEUEFULL,363/** @SKB_DROP_REASON_NEIGH_DEAD: neigh entry is dead */364SKB_DROP_REASON_NEIGH_DEAD,365/** @SKB_DROP_REASON_NEIGH_HH_FILLFAIL: failed to fill the device hard header */366SKB_DROP_REASON_NEIGH_HH_FILLFAIL,367/** @SKB_DROP_REASON_TC_EGRESS: dropped in TC egress HOOK */368SKB_DROP_REASON_TC_EGRESS,369/** @SKB_DROP_REASON_SECURITY_HOOK: dropped due to security HOOK */370SKB_DROP_REASON_SECURITY_HOOK,371/**372* @SKB_DROP_REASON_QDISC_DROP: dropped by qdisc when packet outputting (373* failed to enqueue to current qdisc)374*/375SKB_DROP_REASON_QDISC_DROP,376/**377* @SKB_DROP_REASON_QDISC_OVERLIMIT: dropped by qdisc when a qdisc378* instance exceeds its total buffer size limit.379*/380SKB_DROP_REASON_QDISC_OVERLIMIT,381/**382* @SKB_DROP_REASON_QDISC_CONGESTED: dropped by a qdisc AQM algorithm383* due to congestion.384*/385SKB_DROP_REASON_QDISC_CONGESTED,386/**387* @SKB_DROP_REASON_CAKE_FLOOD: dropped by the flood protection part of388* CAKE qdisc AQM algorithm (BLUE).389*/390SKB_DROP_REASON_CAKE_FLOOD,391/**392* @SKB_DROP_REASON_FQ_BAND_LIMIT: dropped by fq qdisc when per band393* limit is reached.394*/395SKB_DROP_REASON_FQ_BAND_LIMIT,396/**397* @SKB_DROP_REASON_FQ_HORIZON_LIMIT: dropped by fq qdisc when packet398* timestamp is too far in the future.399*/400SKB_DROP_REASON_FQ_HORIZON_LIMIT,401/**402* @SKB_DROP_REASON_FQ_FLOW_LIMIT: dropped by fq qdisc when a flow403* exceeds its limits.404*/405SKB_DROP_REASON_FQ_FLOW_LIMIT,406/**407* @SKB_DROP_REASON_CPU_BACKLOG: failed to enqueue the skb to the per CPU408* backlog queue. This can be caused by backlog queue full (see409* netdev_max_backlog in net.rst) or RPS flow limit410*/411SKB_DROP_REASON_CPU_BACKLOG,412/** @SKB_DROP_REASON_XDP: dropped by XDP in input path */413SKB_DROP_REASON_XDP,414/** @SKB_DROP_REASON_TC_INGRESS: dropped in TC ingress HOOK */415SKB_DROP_REASON_TC_INGRESS,416/** @SKB_DROP_REASON_UNHANDLED_PROTO: protocol not implemented or not supported */417SKB_DROP_REASON_UNHANDLED_PROTO,418/** @SKB_DROP_REASON_SKB_CSUM: sk_buff checksum computation error */419SKB_DROP_REASON_SKB_CSUM,420/** @SKB_DROP_REASON_SKB_GSO_SEG: gso segmentation error */421SKB_DROP_REASON_SKB_GSO_SEG,422/**423* @SKB_DROP_REASON_SKB_UCOPY_FAULT: failed to copy data from user space,424* e.g., via zerocopy_sg_from_iter() or skb_orphan_frags_rx()425*/426SKB_DROP_REASON_SKB_UCOPY_FAULT,427/** @SKB_DROP_REASON_DEV_HDR: device driver specific header/metadata is invalid */428SKB_DROP_REASON_DEV_HDR,429/**430* @SKB_DROP_REASON_DEV_READY: the device is not ready to xmit/recv due to431* any of its data structure that is not up/ready/initialized,432* e.g., the IFF_UP is not set, or driver specific tun->tfiles[txq]433* is not initialized434*/435SKB_DROP_REASON_DEV_READY,436/** @SKB_DROP_REASON_FULL_RING: ring buffer is full */437SKB_DROP_REASON_FULL_RING,438/** @SKB_DROP_REASON_NOMEM: error due to OOM */439SKB_DROP_REASON_NOMEM,440/**441* @SKB_DROP_REASON_HDR_TRUNC: failed to trunc/extract the header from442* networking data, e.g., failed to pull the protocol header from443* frags via pskb_may_pull()444*/445SKB_DROP_REASON_HDR_TRUNC,446/**447* @SKB_DROP_REASON_TAP_FILTER: dropped by (ebpf) filter directly attached448* to tun/tap, e.g., via TUNSETFILTEREBPF449*/450SKB_DROP_REASON_TAP_FILTER,451/**452* @SKB_DROP_REASON_TAP_TXFILTER: dropped by tx filter implemented at453* tun/tap, e.g., check_filter()454*/455SKB_DROP_REASON_TAP_TXFILTER,456/** @SKB_DROP_REASON_ICMP_CSUM: ICMP checksum error */457SKB_DROP_REASON_ICMP_CSUM,458/**459* @SKB_DROP_REASON_INVALID_PROTO: the packet doesn't follow RFC 2211,460* such as a broadcasts ICMP_TIMESTAMP461*/462SKB_DROP_REASON_INVALID_PROTO,463/**464* @SKB_DROP_REASON_IP_INADDRERRORS: host unreachable, corresponding to465* IPSTATS_MIB_INADDRERRORS466*/467SKB_DROP_REASON_IP_INADDRERRORS,468/**469* @SKB_DROP_REASON_IP_INNOROUTES: network unreachable, corresponding to470* IPSTATS_MIB_INADDRERRORS471*/472SKB_DROP_REASON_IP_INNOROUTES,473/** @SKB_DROP_REASON_IP_LOCAL_SOURCE: the source ip is local */474SKB_DROP_REASON_IP_LOCAL_SOURCE,475/**476* @SKB_DROP_REASON_IP_INVALID_SOURCE: the source ip is invalid:477* 1) source ip is multicast or limited broadcast478* 2) source ip is zero and not IGMP479*/480SKB_DROP_REASON_IP_INVALID_SOURCE,481/** @SKB_DROP_REASON_IP_LOCALNET: source or dest ip is local net */482SKB_DROP_REASON_IP_LOCALNET,483/**484* @SKB_DROP_REASON_IP_INVALID_DEST: the dest ip is invalid:485* 1) dest ip is 0486*/487SKB_DROP_REASON_IP_INVALID_DEST,488/**489* @SKB_DROP_REASON_PKT_TOO_BIG: packet size is too big (maybe exceed the490* MTU)491*/492SKB_DROP_REASON_PKT_TOO_BIG,493/** @SKB_DROP_REASON_DUP_FRAG: duplicate fragment */494SKB_DROP_REASON_DUP_FRAG,495/** @SKB_DROP_REASON_FRAG_REASM_TIMEOUT: fragment reassembly timeout */496SKB_DROP_REASON_FRAG_REASM_TIMEOUT,497/**498* @SKB_DROP_REASON_FRAG_TOO_FAR: ipv4 fragment too far.499* (/proc/sys/net/ipv4/ipfrag_max_dist)500*/501SKB_DROP_REASON_FRAG_TOO_FAR,502/**503* @SKB_DROP_REASON_TCP_MINTTL: ipv4 ttl or ipv6 hoplimit below504* the threshold (IP_MINTTL or IPV6_MINHOPCOUNT).505*/506SKB_DROP_REASON_TCP_MINTTL,507/** @SKB_DROP_REASON_IPV6_BAD_EXTHDR: Bad IPv6 extension header. */508SKB_DROP_REASON_IPV6_BAD_EXTHDR,509/** @SKB_DROP_REASON_IPV6_NDISC_FRAG: invalid frag (suppress_frag_ndisc). */510SKB_DROP_REASON_IPV6_NDISC_FRAG,511/** @SKB_DROP_REASON_IPV6_NDISC_HOP_LIMIT: invalid hop limit. */512SKB_DROP_REASON_IPV6_NDISC_HOP_LIMIT,513/** @SKB_DROP_REASON_IPV6_NDISC_BAD_CODE: invalid NDISC icmp6 code. */514SKB_DROP_REASON_IPV6_NDISC_BAD_CODE,515/** @SKB_DROP_REASON_IPV6_NDISC_BAD_OPTIONS: invalid NDISC options. */516SKB_DROP_REASON_IPV6_NDISC_BAD_OPTIONS,517/**518* @SKB_DROP_REASON_IPV6_NDISC_NS_OTHERHOST: NEIGHBOUR SOLICITATION519* for another host.520*/521SKB_DROP_REASON_IPV6_NDISC_NS_OTHERHOST,522/** @SKB_DROP_REASON_QUEUE_PURGE: bulk free. */523SKB_DROP_REASON_QUEUE_PURGE,524/**525* @SKB_DROP_REASON_TC_COOKIE_ERROR: An error occurred whilst526* processing a tc ext cookie.527*/528SKB_DROP_REASON_TC_COOKIE_ERROR,529/**530* @SKB_DROP_REASON_PACKET_SOCK_ERROR: generic packet socket errors531* after its filter matches an incoming packet.532*/533SKB_DROP_REASON_PACKET_SOCK_ERROR,534/** @SKB_DROP_REASON_TC_CHAIN_NOTFOUND: tc chain lookup failed. */535SKB_DROP_REASON_TC_CHAIN_NOTFOUND,536/**537* @SKB_DROP_REASON_TC_RECLASSIFY_LOOP: tc exceeded max reclassify loop538* iterations.539*/540SKB_DROP_REASON_TC_RECLASSIFY_LOOP,541/**542* @SKB_DROP_REASON_VXLAN_INVALID_HDR: VXLAN header is invalid. E.g.:543* 1) reserved fields are not zero544* 2) "I" flag is not set545*/546SKB_DROP_REASON_VXLAN_INVALID_HDR,547/** @SKB_DROP_REASON_VXLAN_VNI_NOT_FOUND: no VXLAN device found for VNI */548SKB_DROP_REASON_VXLAN_VNI_NOT_FOUND,549/** @SKB_DROP_REASON_MAC_INVALID_SOURCE: source mac is invalid */550SKB_DROP_REASON_MAC_INVALID_SOURCE,551/**552* @SKB_DROP_REASON_VXLAN_ENTRY_EXISTS: trying to migrate a static553* entry or an entry pointing to a nexthop.554*/555SKB_DROP_REASON_VXLAN_ENTRY_EXISTS,556/** @SKB_DROP_REASON_NO_TX_TARGET: no target found for xmit */557SKB_DROP_REASON_NO_TX_TARGET,558/**559* @SKB_DROP_REASON_IP_TUNNEL_ECN: skb is dropped according to560* RFC 6040 4.2, see __INET_ECN_decapsulate() for detail.561*/562SKB_DROP_REASON_IP_TUNNEL_ECN,563/**564* @SKB_DROP_REASON_TUNNEL_TXINFO: packet without necessary metadata565* reached a device which is in "external" mode.566*/567SKB_DROP_REASON_TUNNEL_TXINFO,568/**569* @SKB_DROP_REASON_LOCAL_MAC: the source MAC address is equal to570* the MAC address of the local netdev.571*/572SKB_DROP_REASON_LOCAL_MAC,573/**574* @SKB_DROP_REASON_ARP_PVLAN_DISABLE: packet which is not IP is575* forwarded to the in_dev, and the proxy_arp_pvlan is not576* enabled.577*/578SKB_DROP_REASON_ARP_PVLAN_DISABLE,579/**580* @SKB_DROP_REASON_MAC_IEEE_MAC_CONTROL: the destination MAC address581* is an IEEE MAC Control address.582*/583SKB_DROP_REASON_MAC_IEEE_MAC_CONTROL,584/**585* @SKB_DROP_REASON_BRIDGE_INGRESS_STP_STATE: the STP state of the586* ingress bridge port does not allow frames to be forwarded.587*/588SKB_DROP_REASON_BRIDGE_INGRESS_STP_STATE,589/**590* @SKB_DROP_REASON_CAN_RX_INVALID_FRAME: received591* non conform CAN frame (or device is unable to receive CAN frames)592*/593SKB_DROP_REASON_CAN_RX_INVALID_FRAME,594/**595* @SKB_DROP_REASON_CANFD_RX_INVALID_FRAME: received596* non conform CAN-FD frame (or device is unable to receive CAN frames)597*/598SKB_DROP_REASON_CANFD_RX_INVALID_FRAME,599/**600* @SKB_DROP_REASON_CANXL_RX_INVALID_FRAME: received601* non conform CAN-XL frame (or device is unable to receive CAN frames)602*/603SKB_DROP_REASON_CANXL_RX_INVALID_FRAME,604/**605* @SKB_DROP_REASON_PFMEMALLOC: packet allocated from memory reserve606* reached a path or socket not eligible for use of memory reserves607*/608SKB_DROP_REASON_PFMEMALLOC,609/**610* @SKB_DROP_REASON_DUALPI2_STEP_DROP: dropped by the step drop611* threshold of DualPI2 qdisc.612*/613SKB_DROP_REASON_DUALPI2_STEP_DROP,614/** @SKB_DROP_REASON_PSP_INPUT: PSP input checks failed */615SKB_DROP_REASON_PSP_INPUT,616/** @SKB_DROP_REASON_PSP_OUTPUT: PSP output checks failed */617SKB_DROP_REASON_PSP_OUTPUT,618/**619* @SKB_DROP_REASON_MAX: the maximum of core drop reasons, which620* shouldn't be used as a real 'reason' - only for tracing code gen621*/622SKB_DROP_REASON_MAX,623624/**625* @SKB_DROP_REASON_SUBSYS_MASK: subsystem mask in drop reasons,626* see &enum skb_drop_reason_subsys627*/628SKB_DROP_REASON_SUBSYS_MASK = 0xffff0000,629};630631#define SKB_DROP_REASON_SUBSYS_SHIFT 16632633#define SKB_DR_INIT(name, reason) \634enum skb_drop_reason name = SKB_DROP_REASON_##reason635#define SKB_DR(name) \636SKB_DR_INIT(name, NOT_SPECIFIED)637#define SKB_DR_SET(name, reason) \638(name = SKB_DROP_REASON_##reason)639#define SKB_DR_OR(name, reason) \640do { \641if (name == SKB_DROP_REASON_NOT_SPECIFIED || \642name == SKB_NOT_DROPPED_YET) \643SKB_DR_SET(name, reason); \644} while (0)645646#endif647648649