| 1 |
|
| 2 |
|
| 3 | #ifndef _LINUX_DROPREASON_CORE_H
|
| 4 | #define _LINUX_DROPREASON_CORE_H
|
| 5 |
|
| 6 | #define DEFINE_DROP_REASON(FN, FNe) \
|
| 7 | FN(NOT_SPECIFIED) \
|
| 8 | FN(NO_SOCKET) \
|
| 9 | FN(SOCKET_CLOSE) \
|
| 10 | FN(SOCKET_FILTER) \
|
| 11 | FN(SOCKET_RCVBUFF) \
|
| 12 | FN(UNIX_DISCONNECT) \
|
| 13 | FN(UNIX_SKIP_OOB) \
|
| 14 | FN(PKT_TOO_SMALL) \
|
| 15 | FN(TCP_CSUM) \
|
| 16 | FN(UDP_CSUM) \
|
| 17 | FN(NETFILTER_DROP) \
|
| 18 | FN(OTHERHOST) \
|
| 19 | FN(IP_CSUM) \
|
| 20 | FN(IP_INHDR) \
|
| 21 | FN(IP_RPFILTER) \
|
| 22 | FN(UNICAST_IN_L2_MULTICAST) \
|
| 23 | FN(XFRM_POLICY) \
|
| 24 | FN(IP_NOPROTO) \
|
| 25 | FN(PROTO_MEM) \
|
| 26 | FN(TCP_AUTH_HDR) \
|
| 27 | FN(TCP_MD5NOTFOUND) \
|
| 28 | FN(TCP_MD5UNEXPECTED) \
|
| 29 | FN(TCP_MD5FAILURE) \
|
| 30 | FN(TCP_AONOTFOUND) \
|
| 31 | FN(TCP_AOUNEXPECTED) \
|
| 32 | FN(TCP_AOKEYNOTFOUND) \
|
| 33 | FN(TCP_AOFAILURE) \
|
| 34 | FN(SOCKET_BACKLOG) \
|
| 35 | FN(TCP_FLAGS) \
|
| 36 | FN(TCP_ABORT_ON_DATA) \
|
| 37 | FN(TCP_ZEROWINDOW) \
|
| 38 | FN(TCP_OLD_DATA) \
|
| 39 | FN(TCP_OVERWINDOW) \
|
| 40 | FN(TCP_OFOMERGE) \
|
| 41 | FN(TCP_RFC7323_PAWS) \
|
| 42 | FN(TCP_RFC7323_PAWS_ACK) \
|
| 43 | FN(TCP_RFC7323_TW_PAWS) \
|
| 44 | FN(TCP_RFC7323_TSECR) \
|
| 45 | FN(TCP_LISTEN_OVERFLOW) \
|
| 46 | FN(TCP_OLD_SEQUENCE) \
|
| 47 | FN(TCP_INVALID_SEQUENCE) \
|
| 48 | FN(TCP_INVALID_END_SEQUENCE) \
|
| 49 | FN(TCP_INVALID_ACK_SEQUENCE) \
|
| 50 | FN(TCP_RESET) \
|
| 51 | FN(TCP_INVALID_SYN) \
|
| 52 | FN(TCP_CLOSE) \
|
| 53 | FN(TCP_FASTOPEN) \
|
| 54 | FN(TCP_OLD_ACK) \
|
| 55 | FN(TCP_TOO_OLD_ACK) \
|
| 56 | FN(TCP_ACK_UNSENT_DATA) \
|
| 57 | FN(TCP_OFO_QUEUE_PRUNE) \
|
| 58 | FN(TCP_OFO_DROP) \
|
| 59 | FN(IP_OUTNOROUTES) \
|
| 60 | FN(BPF_CGROUP_EGRESS) \
|
| 61 | FN(IPV6DISABLED) \
|
| 62 | FN(NEIGH_CREATEFAIL) \
|
| 63 | FN(NEIGH_FAILED) \
|
| 64 | FN(NEIGH_QUEUEFULL) \
|
| 65 | FN(NEIGH_DEAD) \
|
| 66 | FN(NEIGH_HH_FILLFAIL) \
|
| 67 | FN(TC_EGRESS) \
|
| 68 | FN(SECURITY_HOOK) \
|
| 69 | FN(QDISC_DROP) \
|
| 70 | FN(QDISC_BURST_DROP) \
|
| 71 | FN(CPU_BACKLOG) \
|
| 72 | FN(MACVLAN_BROADCAST_BACKLOG) \
|
| 73 | FN(IPVLAN_MULTICAST_BACKLOG) \
|
| 74 | FN(XDP) \
|
| 75 | FN(TC_INGRESS) \
|
| 76 | FN(UNHANDLED_PROTO) \
|
| 77 | FN(SKB_CSUM) \
|
| 78 | FN(SKB_GSO_SEG) \
|
| 79 | FN(SKB_BAD_GSO) \
|
| 80 | FN(SKB_UCOPY_FAULT) \
|
| 81 | FN(DEV_HDR) \
|
| 82 | FN(DEV_READY) \
|
| 83 | FN(FULL_RING) \
|
| 84 | FN(NOMEM) \
|
| 85 | FN(HDR_TRUNC) \
|
| 86 | FN(TAP_FILTER) \
|
| 87 | FN(TAP_TXFILTER) \
|
| 88 | FN(ICMP_CSUM) \
|
| 89 | FN(INVALID_PROTO) \
|
| 90 | FN(IP_INADDRERRORS) \
|
| 91 | FN(IP_INNOROUTES) \
|
| 92 | FN(IP_LOCAL_SOURCE) \
|
| 93 | FN(IP_INVALID_SOURCE) \
|
| 94 | FN(IP_LOCALNET) \
|
| 95 | FN(IP_INVALID_DEST) \
|
| 96 | FN(PKT_TOO_BIG) \
|
| 97 | FN(DUP_FRAG) \
|
| 98 | FN(FRAG_REASM_TIMEOUT) \
|
| 99 | FN(FRAG_TOO_FAR) \
|
| 100 | FN(TCP_MINTTL) \
|
| 101 | FN(IPV6_BAD_EXTHDR) \
|
| 102 | FN(IPV6_TOO_MANY_EXTHDRS) \
|
| 103 | FN(IPV6_NDISC_FRAG) \
|
| 104 | FN(IPV6_NDISC_HOP_LIMIT) \
|
| 105 | FN(IPV6_NDISC_BAD_CODE) \
|
| 106 | FN(IPV6_NDISC_BAD_OPTIONS) \
|
| 107 | FN(IPV6_NDISC_NS_OTHERHOST) \
|
| 108 | FN(QUEUE_PURGE) \
|
| 109 | FN(TC_COOKIE_ERROR) \
|
| 110 | FN(PACKET_SOCK_ERROR) \
|
| 111 | FN(TC_CHAIN_NOTFOUND) \
|
| 112 | FN(TC_RECLASSIFY_LOOP) \
|
| 113 | FN(VXLAN_INVALID_HDR) \
|
| 114 | FN(VXLAN_VNI_NOT_FOUND) \
|
| 115 | FN(MAC_INVALID_SOURCE) \
|
| 116 | FN(VXLAN_ENTRY_EXISTS) \
|
| 117 | FN(NO_TX_TARGET) \
|
| 118 | FN(IP_TUNNEL_ECN) \
|
| 119 | FN(TUNNEL_TXINFO) \
|
| 120 | FN(LOCAL_MAC) \
|
| 121 | FN(ARP_PVLAN_DISABLE) \
|
| 122 | FN(MAC_IEEE_MAC_CONTROL) \
|
| 123 | FN(BRIDGE_INGRESS_STP_STATE) \
|
| 124 | FN(CAN_RX_INVALID_FRAME) \
|
| 125 | FN(CANFD_RX_INVALID_FRAME) \
|
| 126 | FN(CANXL_RX_INVALID_FRAME) \
|
| 127 | FN(PFMEMALLOC) \
|
| 128 | FN(PSP_INPUT) \
|
| 129 | FN(PSP_OUTPUT) \
|
| 130 | FN(RECURSION_LIMIT) \
|
| 131 | FNe(MAX)
|
| 132 |
|
| 133 | |
| 134 | * enum skb_drop_reason - the reasons of skb drops
|
| 135 | *
|
| 136 | * The reason of skb drop, which is used in kfree_skb_reason().
|
| 137 |
|
| 138 | enum skb_drop_reason {
|
| 139 | |
| 140 | * @SKB_NOT_DROPPED_YET: skb is not dropped yet (used for no-drop case)
|
| 141 |
|
| 142 | SKB_NOT_DROPPED_YET = 0,
|
| 143 |
|
| 144 | SKB_CONSUMED,
|
| 145 |
|
| 146 | SKB_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 process
|
| 151 | * 2) no valid request socket during 3WHS process
|
| 152 | * 3) no valid child socket during 3WHS process
|
| 153 |
|
| 154 | SKB_DROP_REASON_NO_SOCKET,
|
| 155 |
|
| 156 | SKB_DROP_REASON_SOCKET_CLOSE,
|
| 157 |
|
| 158 | SKB_DROP_REASON_SOCKET_FILTER,
|
| 159 |
|
| 160 | SKB_DROP_REASON_SOCKET_RCVBUFF,
|
| 161 | |
| 162 | * @SKB_DROP_REASON_UNIX_DISCONNECT: recv queue is purged when SOCK_DGRAM
|
| 163 | * or SOCK_SEQPACKET socket re-connect()s to another socket or notices
|
| 164 | * during send() that the peer has been close()d.
|
| 165 |
|
| 166 | SKB_DROP_REASON_UNIX_DISCONNECT,
|
| 167 | |
| 168 | * @SKB_DROP_REASON_UNIX_SKIP_OOB: Out-Of-Band data is skipped by
|
| 169 | * recv() without MSG_OOB so dropped.
|
| 170 |
|
| 171 | SKB_DROP_REASON_UNIX_SKIP_OOB,
|
| 172 |
|
| 173 | SKB_DROP_REASON_PKT_TOO_SMALL,
|
| 174 |
|
| 175 | SKB_DROP_REASON_TCP_CSUM,
|
| 176 |
|
| 177 | SKB_DROP_REASON_UDP_CSUM,
|
| 178 |
|
| 179 | SKB_DROP_REASON_NETFILTER_DROP,
|
| 180 | |
| 181 | * @SKB_DROP_REASON_OTHERHOST: packet don't belong to current host
|
| 182 | * (interface is in promisc mode)
|
| 183 |
|
| 184 | SKB_DROP_REASON_OTHERHOST,
|
| 185 |
|
| 186 | SKB_DROP_REASON_IP_CSUM,
|
| 187 | |
| 188 | * @SKB_DROP_REASON_IP_INHDR: there is something wrong with IP header (see
|
| 189 | * IPSTATS_MIB_INHDRERRORS)
|
| 190 |
|
| 191 | SKB_DROP_REASON_IP_INHDR,
|
| 192 | |
| 193 | * @SKB_DROP_REASON_IP_RPFILTER: IP rpfilter validate failed. see the
|
| 194 | * document for rp_filter in ip-sysctl.rst for more information
|
| 195 |
|
| 196 | SKB_DROP_REASON_IP_RPFILTER,
|
| 197 | |
| 198 | * @SKB_DROP_REASON_UNICAST_IN_L2_MULTICAST: destination address of L2 is
|
| 199 | * multicast, but L3 is unicast.
|
| 200 |
|
| 201 | SKB_DROP_REASON_UNICAST_IN_L2_MULTICAST,
|
| 202 |
|
| 203 | SKB_DROP_REASON_XFRM_POLICY,
|
| 204 |
|
| 205 | SKB_DROP_REASON_IP_NOPROTO,
|
| 206 | |
| 207 | * @SKB_DROP_REASON_PROTO_MEM: proto memory limitation, such as
|
| 208 | * udp packet drop out of udp_memory_allocated.
|
| 209 |
|
| 210 | SKB_DROP_REASON_PROTO_MEM,
|
| 211 | |
| 212 | * @SKB_DROP_REASON_TCP_AUTH_HDR: TCP-MD5 or TCP-AO hashes are met
|
| 213 | * twice or set incorrectly.
|
| 214 |
|
| 215 | SKB_DROP_REASON_TCP_AUTH_HDR,
|
| 216 | |
| 217 | * @SKB_DROP_REASON_TCP_MD5NOTFOUND: no MD5 hash and one expected,
|
| 218 | * corresponding to LINUX_MIB_TCPMD5NOTFOUND
|
| 219 |
|
| 220 | SKB_DROP_REASON_TCP_MD5NOTFOUND,
|
| 221 | |
| 222 | * @SKB_DROP_REASON_TCP_MD5UNEXPECTED: MD5 hash and we're not expecting
|
| 223 | * one, corresponding to LINUX_MIB_TCPMD5UNEXPECTED
|
| 224 |
|
| 225 | SKB_DROP_REASON_TCP_MD5UNEXPECTED,
|
| 226 | |
| 227 | * @SKB_DROP_REASON_TCP_MD5FAILURE: MD5 hash and its wrong, corresponding
|
| 228 | * to LINUX_MIB_TCPMD5FAILURE
|
| 229 |
|
| 230 | SKB_DROP_REASON_TCP_MD5FAILURE,
|
| 231 | |
| 232 | * @SKB_DROP_REASON_TCP_AONOTFOUND: no TCP-AO hash and one was expected,
|
| 233 | * corresponding to LINUX_MIB_TCPAOREQUIRED
|
| 234 |
|
| 235 | SKB_DROP_REASON_TCP_AONOTFOUND,
|
| 236 | |
| 237 | * @SKB_DROP_REASON_TCP_AOUNEXPECTED: TCP-AO hash is present and it
|
| 238 | * was not expected, corresponding to LINUX_MIB_TCPAOKEYNOTFOUND
|
| 239 |
|
| 240 | SKB_DROP_REASON_TCP_AOUNEXPECTED,
|
| 241 | |
| 242 | * @SKB_DROP_REASON_TCP_AOKEYNOTFOUND: TCP-AO key is unknown,
|
| 243 | * corresponding to LINUX_MIB_TCPAOKEYNOTFOUND
|
| 244 |
|
| 245 | SKB_DROP_REASON_TCP_AOKEYNOTFOUND,
|
| 246 | |
| 247 | * @SKB_DROP_REASON_TCP_AOFAILURE: TCP-AO hash is wrong,
|
| 248 | * corresponding to LINUX_MIB_TCPAOBAD
|
| 249 |
|
| 250 | SKB_DROP_REASON_TCP_AOFAILURE,
|
| 251 | |
| 252 | * @SKB_DROP_REASON_SOCKET_BACKLOG: failed to add skb to socket backlog (
|
| 253 | * see LINUX_MIB_TCPBACKLOGDROP)
|
| 254 |
|
| 255 | SKB_DROP_REASON_SOCKET_BACKLOG,
|
| 256 |
|
| 257 | SKB_DROP_REASON_TCP_FLAGS,
|
| 258 | |
| 259 | * @SKB_DROP_REASON_TCP_ABORT_ON_DATA: abort on data, corresponding to
|
| 260 | * LINUX_MIB_TCPABORTONDATA
|
| 261 |
|
| 262 | SKB_DROP_REASON_TCP_ABORT_ON_DATA,
|
| 263 | |
| 264 | * @SKB_DROP_REASON_TCP_ZEROWINDOW: TCP receive window size is zero,
|
| 265 | * see LINUX_MIB_TCPZEROWINDOWDROP
|
| 266 |
|
| 267 | SKB_DROP_REASON_TCP_ZEROWINDOW,
|
| 268 | |
| 269 | * @SKB_DROP_REASON_TCP_OLD_DATA: the TCP data received is already
|
| 270 | * received before (spurious retrans may happened), see
|
| 271 | * LINUX_MIB_DELAYEDACKLOST
|
| 272 |
|
| 273 | SKB_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 receive
|
| 277 | * window
|
| 278 |
|
| 279 | SKB_DROP_REASON_TCP_OVERWINDOW,
|
| 280 | |
| 281 | * @SKB_DROP_REASON_TCP_OFOMERGE: the data of skb is already in the ofo
|
| 282 | * queue, corresponding to LINUX_MIB_TCPOFOMERGE
|
| 283 |
|
| 284 | SKB_DROP_REASON_TCP_OFOMERGE,
|
| 285 | |
| 286 | * @SKB_DROP_REASON_TCP_RFC7323_PAWS: PAWS check, corresponding to
|
| 287 | * LINUX_MIB_PAWSESTABREJECTED, LINUX_MIB_PAWSACTIVEREJECTED
|
| 288 |
|
| 289 | SKB_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 |
|
| 294 | SKB_DROP_REASON_TCP_RFC7323_PAWS_ACK,
|
| 295 | |
| 296 | * @SKB_DROP_REASON_TCP_RFC7323_TW_PAWS: PAWS check, socket is in
|
| 297 | * TIME_WAIT state.
|
| 298 | * Corresponds to LINUX_MIB_PAWS_TW_REJECTED.
|
| 299 |
|
| 300 | SKB_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 |
|
| 305 | SKB_DROP_REASON_TCP_RFC7323_TSECR,
|
| 306 |
|
| 307 | SKB_DROP_REASON_TCP_LISTEN_OVERFLOW,
|
| 308 |
|
| 309 | SKB_DROP_REASON_TCP_OLD_SEQUENCE,
|
| 310 |
|
| 311 | SKB_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 |
|
| 317 | SKB_DROP_REASON_TCP_INVALID_END_SEQUENCE,
|
| 318 | |
| 319 | * @SKB_DROP_REASON_TCP_INVALID_ACK_SEQUENCE: Not acceptable ACK SEQ
|
| 320 | * field because ack sequence is not in the window between snd_una
|
| 321 | * and snd_nxt
|
| 322 |
|
| 323 | SKB_DROP_REASON_TCP_INVALID_ACK_SEQUENCE,
|
| 324 |
|
| 325 | SKB_DROP_REASON_TCP_RESET,
|
| 326 | |
| 327 | * @SKB_DROP_REASON_TCP_INVALID_SYN: Incoming packet has unexpected
|
| 328 | * SYN flag
|
| 329 |
|
| 330 | SKB_DROP_REASON_TCP_INVALID_SYN,
|
| 331 |
|
| 332 | SKB_DROP_REASON_TCP_CLOSE,
|
| 333 |
|
| 334 | SKB_DROP_REASON_TCP_FASTOPEN,
|
| 335 |
|
| 336 | SKB_DROP_REASON_TCP_OLD_ACK,
|
| 337 |
|
| 338 | SKB_DROP_REASON_TCP_TOO_OLD_ACK,
|
| 339 | |
| 340 | * @SKB_DROP_REASON_TCP_ACK_UNSENT_DATA: TCP ACK for data we haven't
|
| 341 | * sent yet
|
| 342 |
|
| 343 | SKB_DROP_REASON_TCP_ACK_UNSENT_DATA,
|
| 344 |
|
| 345 | SKB_DROP_REASON_TCP_OFO_QUEUE_PRUNE,
|
| 346 |
|
| 347 | SKB_DROP_REASON_TCP_OFO_DROP,
|
| 348 |
|
| 349 | SKB_DROP_REASON_IP_OUTNOROUTES,
|
| 350 | |
| 351 | * @SKB_DROP_REASON_BPF_CGROUP_EGRESS: dropped by BPF_PROG_TYPE_CGROUP_SKB
|
| 352 | * eBPF program
|
| 353 |
|
| 354 | SKB_DROP_REASON_BPF_CGROUP_EGRESS,
|
| 355 |
|
| 356 | SKB_DROP_REASON_IPV6DISABLED,
|
| 357 |
|
| 358 | SKB_DROP_REASON_NEIGH_CREATEFAIL,
|
| 359 |
|
| 360 | SKB_DROP_REASON_NEIGH_FAILED,
|
| 361 |
|
| 362 | SKB_DROP_REASON_NEIGH_QUEUEFULL,
|
| 363 |
|
| 364 | SKB_DROP_REASON_NEIGH_DEAD,
|
| 365 |
|
| 366 | SKB_DROP_REASON_NEIGH_HH_FILLFAIL,
|
| 367 |
|
| 368 | SKB_DROP_REASON_TC_EGRESS,
|
| 369 |
|
| 370 | SKB_DROP_REASON_SECURITY_HOOK,
|
| 371 | |
| 372 | * @SKB_DROP_REASON_QDISC_DROP: dropped by qdisc during enqueue or
|
| 373 | * dequeue. More specific drop reasons are available via the
|
| 374 | * qdisc:qdisc_drop tracepoint, which also provides qdisc handle
|
| 375 | * and name for identifying the source.
|
| 376 |
|
| 377 | SKB_DROP_REASON_QDISC_DROP,
|
| 378 | |
| 379 | * @SKB_DROP_REASON_QDISC_BURST_DROP: dropped when net.core.qdisc_max_burst
|
| 380 | * limit is hit.
|
| 381 |
|
| 382 | SKB_DROP_REASON_QDISC_BURST_DROP,
|
| 383 | |
| 384 | * @SKB_DROP_REASON_CPU_BACKLOG: failed to enqueue the skb to the per CPU
|
| 385 | * backlog queue. This can be caused by backlog queue full (see
|
| 386 | * netdev_max_backlog in net.rst) or RPS flow limit
|
| 387 |
|
| 388 | SKB_DROP_REASON_CPU_BACKLOG,
|
| 389 | |
| 390 | * @SKB_DROP_REASON_MACVLAN_BROADCAST_BACKLOG: failed to enqueue the skb
|
| 391 | * to macvlan broadcast queue.
|
| 392 |
|
| 393 | SKB_DROP_REASON_MACVLAN_BROADCAST_BACKLOG,
|
| 394 | |
| 395 | * @SKB_DROP_REASON_IPVLAN_MULTICAST_BACKLOG: failed to enqueue the skb
|
| 396 | * to ipvlan multicast queue.
|
| 397 |
|
| 398 | SKB_DROP_REASON_IPVLAN_MULTICAST_BACKLOG,
|
| 399 |
|
| 400 | SKB_DROP_REASON_XDP,
|
| 401 |
|
| 402 | SKB_DROP_REASON_TC_INGRESS,
|
| 403 |
|
| 404 | SKB_DROP_REASON_UNHANDLED_PROTO,
|
| 405 |
|
| 406 | SKB_DROP_REASON_SKB_CSUM,
|
| 407 |
|
| 408 | SKB_DROP_REASON_SKB_GSO_SEG,
|
| 409 |
|
| 410 | SKB_DROP_REASON_SKB_BAD_GSO,
|
| 411 | |
| 412 | * @SKB_DROP_REASON_SKB_UCOPY_FAULT: failed to copy data from user space,
|
| 413 | * e.g., via zerocopy_sg_from_iter() or skb_orphan_frags_rx()
|
| 414 |
|
| 415 | SKB_DROP_REASON_SKB_UCOPY_FAULT,
|
| 416 |
|
| 417 | SKB_DROP_REASON_DEV_HDR,
|
| 418 | |
| 419 | * @SKB_DROP_REASON_DEV_READY: the device is not ready to xmit/recv due to
|
| 420 | * any of its data structure that is not up/ready/initialized,
|
| 421 | * e.g., the IFF_UP is not set, or driver specific tun->tfiles[txq]
|
| 422 | * is not initialized
|
| 423 |
|
| 424 | SKB_DROP_REASON_DEV_READY,
|
| 425 |
|
| 426 | SKB_DROP_REASON_FULL_RING,
|
| 427 |
|
| 428 | SKB_DROP_REASON_NOMEM,
|
| 429 | |
| 430 | * @SKB_DROP_REASON_HDR_TRUNC: failed to trunc/extract the header from
|
| 431 | * networking data, e.g., failed to pull the protocol header from
|
| 432 | * frags via pskb_may_pull()
|
| 433 |
|
| 434 | SKB_DROP_REASON_HDR_TRUNC,
|
| 435 | |
| 436 | * @SKB_DROP_REASON_TAP_FILTER: dropped by (ebpf) filter directly attached
|
| 437 | * to tun/tap, e.g., via TUNSETFILTEREBPF
|
| 438 |
|
| 439 | SKB_DROP_REASON_TAP_FILTER,
|
| 440 | |
| 441 | * @SKB_DROP_REASON_TAP_TXFILTER: dropped by tx filter implemented at
|
| 442 | * tun/tap, e.g., check_filter()
|
| 443 |
|
| 444 | SKB_DROP_REASON_TAP_TXFILTER,
|
| 445 |
|
| 446 | SKB_DROP_REASON_ICMP_CSUM,
|
| 447 | |
| 448 | * @SKB_DROP_REASON_INVALID_PROTO: the packet doesn't follow RFC 2211,
|
| 449 | * such as a broadcasts ICMP_TIMESTAMP
|
| 450 |
|
| 451 | SKB_DROP_REASON_INVALID_PROTO,
|
| 452 | |
| 453 | * @SKB_DROP_REASON_IP_INADDRERRORS: host unreachable, corresponding to
|
| 454 | * IPSTATS_MIB_INADDRERRORS
|
| 455 |
|
| 456 | SKB_DROP_REASON_IP_INADDRERRORS,
|
| 457 | |
| 458 | * @SKB_DROP_REASON_IP_INNOROUTES: network unreachable, corresponding to
|
| 459 | * IPSTATS_MIB_INADDRERRORS
|
| 460 |
|
| 461 | SKB_DROP_REASON_IP_INNOROUTES,
|
| 462 |
|
| 463 | SKB_DROP_REASON_IP_LOCAL_SOURCE,
|
| 464 | |
| 465 | * @SKB_DROP_REASON_IP_INVALID_SOURCE: the source ip is invalid:
|
| 466 | * 1) source ip is multicast or limited broadcast
|
| 467 | * 2) source ip is zero and not IGMP
|
| 468 |
|
| 469 | SKB_DROP_REASON_IP_INVALID_SOURCE,
|
| 470 |
|
| 471 | SKB_DROP_REASON_IP_LOCALNET,
|
| 472 | |
| 473 | * @SKB_DROP_REASON_IP_INVALID_DEST: the dest ip is invalid:
|
| 474 | * 1) dest ip is 0
|
| 475 |
|
| 476 | SKB_DROP_REASON_IP_INVALID_DEST,
|
| 477 | |
| 478 | * @SKB_DROP_REASON_PKT_TOO_BIG: packet size is too big (maybe exceed the
|
| 479 | * MTU)
|
| 480 |
|
| 481 | SKB_DROP_REASON_PKT_TOO_BIG,
|
| 482 |
|
| 483 | SKB_DROP_REASON_DUP_FRAG,
|
| 484 |
|
| 485 | SKB_DROP_REASON_FRAG_REASM_TIMEOUT,
|
| 486 | |
| 487 | * @SKB_DROP_REASON_FRAG_TOO_FAR: ipv4 fragment too far.
|
| 488 | * (/proc/sys/net/ipv4/ipfrag_max_dist)
|
| 489 |
|
| 490 | SKB_DROP_REASON_FRAG_TOO_FAR,
|
| 491 | |
| 492 | * @SKB_DROP_REASON_TCP_MINTTL: ipv4 ttl or ipv6 hoplimit below
|
| 493 | * the threshold (IP_MINTTL or IPV6_MINHOPCOUNT).
|
| 494 |
|
| 495 | SKB_DROP_REASON_TCP_MINTTL,
|
| 496 |
|
| 497 | SKB_DROP_REASON_IPV6_BAD_EXTHDR,
|
| 498 | |
| 499 | * @SKB_DROP_REASON_IPV6_TOO_MANY_EXTHDRS: Number of IPv6 extension
|
| 500 | * headers in the packet exceeds IP6_MAX_EXT_HDRS_CNT.
|
| 501 |
|
| 502 | SKB_DROP_REASON_IPV6_TOO_MANY_EXTHDRS,
|
| 503 |
|
| 504 | SKB_DROP_REASON_IPV6_NDISC_FRAG,
|
| 505 |
|
| 506 | SKB_DROP_REASON_IPV6_NDISC_HOP_LIMIT,
|
| 507 |
|
| 508 | SKB_DROP_REASON_IPV6_NDISC_BAD_CODE,
|
| 509 |
|
| 510 | SKB_DROP_REASON_IPV6_NDISC_BAD_OPTIONS,
|
| 511 | |
| 512 | * @SKB_DROP_REASON_IPV6_NDISC_NS_OTHERHOST: NEIGHBOUR SOLICITATION
|
| 513 | * for another host.
|
| 514 |
|
| 515 | SKB_DROP_REASON_IPV6_NDISC_NS_OTHERHOST,
|
| 516 |
|
| 517 | SKB_DROP_REASON_QUEUE_PURGE,
|
| 518 | |
| 519 | * @SKB_DROP_REASON_TC_COOKIE_ERROR: An error occurred whilst
|
| 520 | * processing a tc ext cookie.
|
| 521 |
|
| 522 | SKB_DROP_REASON_TC_COOKIE_ERROR,
|
| 523 | |
| 524 | * @SKB_DROP_REASON_PACKET_SOCK_ERROR: generic packet socket errors
|
| 525 | * after its filter matches an incoming packet.
|
| 526 |
|
| 527 | SKB_DROP_REASON_PACKET_SOCK_ERROR,
|
| 528 |
|
| 529 | SKB_DROP_REASON_TC_CHAIN_NOTFOUND,
|
| 530 | |
| 531 | * @SKB_DROP_REASON_TC_RECLASSIFY_LOOP: tc exceeded max reclassify loop
|
| 532 | * iterations.
|
| 533 |
|
| 534 | SKB_DROP_REASON_TC_RECLASSIFY_LOOP,
|
| 535 | |
| 536 | * @SKB_DROP_REASON_VXLAN_INVALID_HDR: VXLAN header is invalid. E.g.:
|
| 537 | * 1) reserved fields are not zero
|
| 538 | * 2) "I" flag is not set
|
| 539 |
|
| 540 | SKB_DROP_REASON_VXLAN_INVALID_HDR,
|
| 541 |
|
| 542 | SKB_DROP_REASON_VXLAN_VNI_NOT_FOUND,
|
| 543 |
|
| 544 | SKB_DROP_REASON_MAC_INVALID_SOURCE,
|
| 545 | |
| 546 | * @SKB_DROP_REASON_VXLAN_ENTRY_EXISTS: trying to migrate a static
|
| 547 | * entry or an entry pointing to a nexthop.
|
| 548 |
|
| 549 | SKB_DROP_REASON_VXLAN_ENTRY_EXISTS,
|
| 550 |
|
| 551 | SKB_DROP_REASON_NO_TX_TARGET,
|
| 552 | |
| 553 | * @SKB_DROP_REASON_IP_TUNNEL_ECN: skb is dropped according to
|
| 554 | * RFC 6040 4.2, see __INET_ECN_decapsulate() for detail.
|
| 555 |
|
| 556 | SKB_DROP_REASON_IP_TUNNEL_ECN,
|
| 557 | |
| 558 | * @SKB_DROP_REASON_TUNNEL_TXINFO: packet without necessary metadata
|
| 559 | * reached a device which is in "external" mode.
|
| 560 |
|
| 561 | SKB_DROP_REASON_TUNNEL_TXINFO,
|
| 562 | |
| 563 | * @SKB_DROP_REASON_LOCAL_MAC: the source MAC address is equal to
|
| 564 | * the MAC address of the local netdev.
|
| 565 |
|
| 566 | SKB_DROP_REASON_LOCAL_MAC,
|
| 567 | |
| 568 | * @SKB_DROP_REASON_ARP_PVLAN_DISABLE: packet which is not IP is
|
| 569 | * forwarded to the in_dev, and the proxy_arp_pvlan is not
|
| 570 | * enabled.
|
| 571 |
|
| 572 | SKB_DROP_REASON_ARP_PVLAN_DISABLE,
|
| 573 | |
| 574 | * @SKB_DROP_REASON_MAC_IEEE_MAC_CONTROL: the destination MAC address
|
| 575 | * is an IEEE MAC Control address.
|
| 576 |
|
| 577 | SKB_DROP_REASON_MAC_IEEE_MAC_CONTROL,
|
| 578 | |
| 579 | * @SKB_DROP_REASON_BRIDGE_INGRESS_STP_STATE: the STP state of the
|
| 580 | * ingress bridge port does not allow frames to be forwarded.
|
| 581 |
|
| 582 | SKB_DROP_REASON_BRIDGE_INGRESS_STP_STATE,
|
| 583 | |
| 584 | * @SKB_DROP_REASON_CAN_RX_INVALID_FRAME: received
|
| 585 | * non conform CAN frame (or device is unable to receive CAN frames)
|
| 586 |
|
| 587 | SKB_DROP_REASON_CAN_RX_INVALID_FRAME,
|
| 588 | |
| 589 | * @SKB_DROP_REASON_CANFD_RX_INVALID_FRAME: received
|
| 590 | * non conform CAN-FD frame (or device is unable to receive CAN frames)
|
| 591 |
|
| 592 | SKB_DROP_REASON_CANFD_RX_INVALID_FRAME,
|
| 593 | |
| 594 | * @SKB_DROP_REASON_CANXL_RX_INVALID_FRAME: received
|
| 595 | * non conform CAN-XL frame (or device is unable to receive CAN frames)
|
| 596 |
|
| 597 | SKB_DROP_REASON_CANXL_RX_INVALID_FRAME,
|
| 598 | |
| 599 | * @SKB_DROP_REASON_PFMEMALLOC: packet allocated from memory reserve
|
| 600 | * reached a path or socket not eligible for use of memory reserves
|
| 601 |
|
| 602 | SKB_DROP_REASON_PFMEMALLOC,
|
| 603 |
|
| 604 | SKB_DROP_REASON_PSP_INPUT,
|
| 605 |
|
| 606 | SKB_DROP_REASON_PSP_OUTPUT,
|
| 607 |
|
| 608 | SKB_DROP_REASON_RECURSION_LIMIT,
|
| 609 | |
| 610 | * @SKB_DROP_REASON_MAX: the maximum of core drop reasons, which
|
| 611 | * shouldn't be used as a real 'reason' - only for tracing code gen
|
| 612 |
|
| 613 | SKB_DROP_REASON_MAX,
|
| 614 |
|
| 615 | |
| 616 | * @SKB_DROP_REASON_SUBSYS_MASK: subsystem mask in drop reasons,
|
| 617 | * see &enum skb_drop_reason_subsys
|
| 618 |
|
| 619 | SKB_DROP_REASON_SUBSYS_MASK = 0xffff0000,
|
| 620 | };
|
| 621 |
|
| 622 | #define SKB_DROP_REASON_SUBSYS_SHIFT 16
|
| 623 |
|
| 624 | #define SKB_DR_INIT(name, reason) \
|
| 625 | enum skb_drop_reason name = SKB_DROP_REASON_##reason
|
| 626 | #define SKB_DR(name) \
|
| 627 | SKB_DR_INIT(name, NOT_SPECIFIED)
|
| 628 | #define SKB_DR_SET(name, reason) \
|
| 629 | (name = SKB_DROP_REASON_##reason)
|
| 630 | #define SKB_DR_OR(name, reason) \
|
| 631 | do { \
|
| 632 | if (name == SKB_DROP_REASON_NOT_SPECIFIED || \
|
| 633 | name == SKB_NOT_DROPPED_YET) \
|
| 634 | SKB_DR_SET(name, reason); \
|
| 635 | } while (0)
|
| 636 |
|
| 637 | #endif
|