]> git.ipfire.org Git - thirdparty/lldpd.git/blobdiff - include/linux/if_packet.h
include: update headers to 4.19
[thirdparty/lldpd.git] / include / linux / if_packet.h
index f3799295d231c7d34a114cbb75b8950e6a61da3c..67b61d91d89bf4fc8a54e01ffa3ca253a7fc45c9 100644 (file)
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
 #ifndef __LINUX_IF_PACKET_H
 #define __LINUX_IF_PACKET_H
 
@@ -26,8 +27,10 @@ struct sockaddr_ll {
 #define PACKET_MULTICAST       2               /* To group             */
 #define PACKET_OTHERHOST       3               /* To someone else      */
 #define PACKET_OUTGOING                4               /* Outgoing of any type */
-/* These ones are invisible by user level */
 #define PACKET_LOOPBACK                5               /* MC/BRD frame looped back */
+#define PACKET_USER            6               /* To user space        */
+#define PACKET_KERNEL          7               /* To kernel space      */
+/* Unused, PACKET_FASTROUTE and PACKET_LOOPBACK are invisible to user space */
 #define PACKET_FASTROUTE       6               /* Fastrouted frame     */
 
 /* Packet socket options */
@@ -50,10 +53,21 @@ struct sockaddr_ll {
 #define PACKET_TX_TIMESTAMP            16
 #define PACKET_TIMESTAMP               17
 #define PACKET_FANOUT                  18
+#define PACKET_TX_HAS_OFF              19
+#define PACKET_QDISC_BYPASS            20
+#define PACKET_ROLLOVER_STATS          21
+#define PACKET_FANOUT_DATA             22
 
 #define PACKET_FANOUT_HASH             0
 #define PACKET_FANOUT_LB               1
 #define PACKET_FANOUT_CPU              2
+#define PACKET_FANOUT_ROLLOVER         3
+#define PACKET_FANOUT_RND              4
+#define PACKET_FANOUT_QM               5
+#define PACKET_FANOUT_CBPF             6
+#define PACKET_FANOUT_EBPF             7
+#define PACKET_FANOUT_FLAG_ROLLOVER    0x1000
+#define PACKET_FANOUT_FLAG_UNIQUEID    0x2000
 #define PACKET_FANOUT_FLAG_DEFRAG      0x8000
 
 struct tpacket_stats {
@@ -67,6 +81,12 @@ struct tpacket_stats_v3 {
        unsigned int    tp_freeze_q_cnt;
 };
 
+struct tpacket_rollover_stats {
+       __aligned_u64   tp_all;
+       __aligned_u64   tp_huge;
+       __aligned_u64   tp_failed;
+};
+
 union tpacket_stats_u {
        struct tpacket_stats stats1;
        struct tpacket_stats_v3 stats3;
@@ -79,23 +99,30 @@ struct tpacket_auxdata {
        __u16           tp_mac;
        __u16           tp_net;
        __u16           tp_vlan_tci;
-       __u16           tp_padding;
+       __u16           tp_vlan_tpid;
 };
 
 /* Rx ring - header status */
-#define TP_STATUS_KERNEL       0x0
-#define TP_STATUS_USER         0x1
-#define TP_STATUS_COPY         0x2
-#define TP_STATUS_LOSING       0x4
-#define TP_STATUS_CSUMNOTREADY 0x8
-#define TP_STATUS_VLAN_VALID   0x10 /* auxdata has valid tp_vlan_tci */
-#define TP_STATUS_BLK_TMO      0x20
+#define TP_STATUS_KERNEL                     0
+#define TP_STATUS_USER                 (1 << 0)
+#define TP_STATUS_COPY                 (1 << 1)
+#define TP_STATUS_LOSING               (1 << 2)
+#define TP_STATUS_CSUMNOTREADY         (1 << 3)
+#define TP_STATUS_VLAN_VALID           (1 << 4) /* auxdata has valid tp_vlan_tci */
+#define TP_STATUS_BLK_TMO              (1 << 5)
+#define TP_STATUS_VLAN_TPID_VALID      (1 << 6) /* auxdata has valid tp_vlan_tpid */
+#define TP_STATUS_CSUM_VALID           (1 << 7)
 
 /* Tx ring - header status */
-#define TP_STATUS_AVAILABLE    0x0
-#define TP_STATUS_SEND_REQUEST 0x1
-#define TP_STATUS_SENDING      0x2
-#define TP_STATUS_WRONG_FORMAT 0x4
+#define TP_STATUS_AVAILABLE          0
+#define TP_STATUS_SEND_REQUEST (1 << 0)
+#define TP_STATUS_SENDING      (1 << 1)
+#define TP_STATUS_WRONG_FORMAT (1 << 2)
+
+/* Rx and Tx ring - header status */
+#define TP_STATUS_TS_SOFTWARE          (1 << 29)
+#define TP_STATUS_TS_SYS_HARDWARE      (1 << 30) /* deprecated, never set */
+#define TP_STATUS_TS_RAW_HARDWARE      (1 << 31)
 
 /* Rx ring - feature request bits */
 #define TP_FT_REQ_FILL_RXHASH  0x1
@@ -123,12 +150,15 @@ struct tpacket2_hdr {
        __u32           tp_sec;
        __u32           tp_nsec;
        __u16           tp_vlan_tci;
-       __u16           tp_padding;
+       __u16           tp_vlan_tpid;
+       __u8            tp_padding[4];
 };
 
 struct tpacket_hdr_variant1 {
        __u32   tp_rxhash;
        __u32   tp_vlan_tci;
+       __u16   tp_vlan_tpid;
+       __u16   tp_padding;
 };
 
 struct tpacket3_hdr {
@@ -144,6 +174,7 @@ struct tpacket3_hdr {
        union {
                struct tpacket_hdr_variant1 hv1;
        };
+       __u8            tp_padding[8];
 };
 
 struct tpacket_bd_ts {