]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
util: update kernel headers (v5.9-rc5)
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 17 Sep 2020 05:51:09 +0000 (14:51 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 17 Sep 2020 05:51:47 +0000 (14:51 +0900)
13 files changed:
src/basic/linux/btrfs.h
src/basic/linux/btrfs_tree.h
src/basic/linux/if.h
src/basic/linux/if_bridge.h
src/basic/linux/if_ether.h
src/basic/linux/if_link.h
src/basic/linux/if_macsec.h
src/basic/linux/in.h
src/basic/linux/in6.h
src/basic/linux/netlink.h
src/basic/linux/nexthop.h
src/basic/linux/pkt_sched.h
src/basic/linux/rtnetlink.h

index 4b6ee345ba71d25841d1a808b496f12fdebb6f5f..d22f1978ce292b1ea9caf6f13a44658115e3dd58 100644 (file)
@@ -36,17 +36,22 @@ struct btrfs_ioctl_vol_args {
 #define BTRFS_DEVICE_PATH_NAME_MAX     1024
 #define BTRFS_SUBVOL_NAME_MAX          4039
 
-#define BTRFS_SUBVOL_CREATE_ASYNC      (1ULL << 0)
+#ifndef __KERNEL__
+/* Deprecated since 5.7 */
+# define BTRFS_SUBVOL_CREATE_ASYNC     (1ULL << 0)
+#endif
 #define BTRFS_SUBVOL_RDONLY            (1ULL << 1)
 #define BTRFS_SUBVOL_QGROUP_INHERIT    (1ULL << 2)
 
 #define BTRFS_DEVICE_SPEC_BY_ID                (1ULL << 3)
 
+#define BTRFS_SUBVOL_SPEC_BY_ID        (1ULL << 4)
+
 #define BTRFS_VOL_ARG_V2_FLAGS_SUPPORTED               \
-                       (BTRFS_SUBVOL_CREATE_ASYNC |    \
-                       BTRFS_SUBVOL_RDONLY |           \
+                       (BTRFS_SUBVOL_RDONLY |          \
                        BTRFS_SUBVOL_QGROUP_INHERIT |   \
-                       BTRFS_DEVICE_SPEC_BY_ID)
+                       BTRFS_DEVICE_SPEC_BY_ID |       \
+                       BTRFS_SUBVOL_SPEC_BY_ID)
 
 #define BTRFS_FSID_SIZE 16
 #define BTRFS_UUID_SIZE 16
@@ -97,16 +102,29 @@ struct btrfs_ioctl_qgroup_limit_args {
 };
 
 /*
- * flags for subvolumes
+ * Arguments for specification of subvolumes or devices, supporting by-name or
+ * by-id and flags
  *
- * Used by:
- * struct btrfs_ioctl_vol_args_v2.flags
+ * The set of supported flags depends on the ioctl
  *
  * BTRFS_SUBVOL_RDONLY is also provided/consumed by the following ioctls:
  * - BTRFS_IOC_SUBVOL_GETFLAGS
  * - BTRFS_IOC_SUBVOL_SETFLAGS
  */
 
+/* Supported flags for BTRFS_IOC_RM_DEV_V2 */
+#define BTRFS_DEVICE_REMOVE_ARGS_MASK                                  \
+       (BTRFS_DEVICE_SPEC_BY_ID)
+
+/* Supported flags for BTRFS_IOC_SNAP_CREATE_V2 and BTRFS_IOC_SUBVOL_CREATE_V2 */
+#define BTRFS_SUBVOL_CREATE_ARGS_MASK                                  \
+        (BTRFS_SUBVOL_RDONLY |                                         \
+        BTRFS_SUBVOL_QGROUP_INHERIT)
+
+/* Supported flags for BTRFS_IOC_SNAP_DESTROY_V2 */
+#define BTRFS_SUBVOL_DELETE_ARGS_MASK                                  \
+       (BTRFS_SUBVOL_SPEC_BY_ID)
+
 struct btrfs_ioctl_vol_args_v2 {
        __s64 fd;
        __u64 transid;
@@ -121,6 +139,7 @@ struct btrfs_ioctl_vol_args_v2 {
        union {
                char name[BTRFS_SUBVOL_NAME_MAX + 1];
                __u64 devid;
+               __u64 subvolid;
        };
 };
 
@@ -224,6 +243,18 @@ struct btrfs_ioctl_dev_info_args {
        __u8 path[BTRFS_DEVICE_PATH_NAME_MAX];  /* out */
 };
 
+/*
+ * Retrieve information about the filesystem
+ */
+
+/* Request information about checksum type and size */
+#define BTRFS_FS_INFO_FLAG_CSUM_INFO                   (1 << 0)
+
+/* Request information about filesystem generation */
+#define BTRFS_FS_INFO_FLAG_GENERATION                  (1 << 1)
+/* Request information about filesystem metadata UUID */
+#define BTRFS_FS_INFO_FLAG_METADATA_UUID               (1 << 2)
+
 struct btrfs_ioctl_fs_info_args {
        __u64 max_id;                           /* out */
        __u64 num_devices;                      /* out */
@@ -231,8 +262,13 @@ struct btrfs_ioctl_fs_info_args {
        __u32 nodesize;                         /* out */
        __u32 sectorsize;                       /* out */
        __u32 clone_alignment;                  /* out */
-       __u32 reserved32;
-       __u64 reserved[122];                    /* pad to 1k */
+       /* See BTRFS_FS_INFO_FLAG_* */
+       __u16 csum_type;                        /* out */
+       __u16 csum_size;                        /* out */
+       __u64 flags;                            /* in/out */
+       __u64 generation;                       /* out */
+       __u8 metadata_uuid[BTRFS_FSID_SIZE];    /* out */
+       __u8 reserved[944];                     /* pad to 1k */
 };
 
 /*
@@ -949,5 +985,7 @@ enum btrfs_err_code {
                                struct btrfs_ioctl_get_subvol_rootref_args)
 #define BTRFS_IOC_INO_LOOKUP_USER _IOWR(BTRFS_IOCTL_MAGIC, 62, \
                                struct btrfs_ioctl_ino_lookup_user_args)
+#define BTRFS_IOC_SNAP_DESTROY_V2 _IOW(BTRFS_IOCTL_MAGIC, 63, \
+                               struct btrfs_ioctl_vol_args_v2)
 
 #endif /* _UAPI_LINUX_BTRFS_H */
index 8e322e2c7e787e337617de04a61a633647f6b777..9ba64ca6b4ac953310d014ef9d4e3e6719f258b0 100644 (file)
@@ -519,15 +519,6 @@ struct btrfs_extent_inline_ref {
        __le64 offset;
 } __attribute__ ((__packed__));
 
-/* old style backrefs item */
-struct btrfs_extent_ref_v0 {
-       __le64 root;
-       __le64 generation;
-       __le64 objectid;
-       __le32 count;
-} __attribute__ ((__packed__));
-
-
 /* dev extents record free space on individual devices.  The owner
  * field points back to the chunk allocation mapping tree that allocated
  * the extent.  The chunk tree uuid field is a way to double check the owner
@@ -922,9 +913,9 @@ struct btrfs_free_space_info {
 #define BTRFS_FREE_SPACE_USING_BITMAPS (1ULL << 0)
 
 #define BTRFS_QGROUP_LEVEL_SHIFT               48
-static inline __u64 btrfs_qgroup_level(__u64 qgroupid)
+static inline __u16 btrfs_qgroup_level(__u64 qgroupid)
 {
-       return qgroupid >> BTRFS_QGROUP_LEVEL_SHIFT;
+       return (__u16)(qgroupid >> BTRFS_QGROUP_LEVEL_SHIFT);
 }
 
 /*
index 59948c2f73a9f06adc7ed33b8284a7b9a468bad6..e79f5c8cebd7ee56cd6d7602fedb1873560303e1 100644 (file)
@@ -177,6 +177,7 @@ enum {
 enum {
        IF_LINK_MODE_DEFAULT,
        IF_LINK_MODE_DORMANT,   /* limit upward transition to dormant */
+       IF_LINK_MODE_TESTING,   /* limit upward transition to testing */
 };
 
 /*
index 42f7ca38ad80e2d93c4143945c9ab386aaa7a1a4..c1227aecd38fd7aa5b903a61b65be7342bf2fab0 100644 (file)
@@ -120,6 +120,7 @@ enum {
        IFLA_BRIDGE_MODE,
        IFLA_BRIDGE_VLAN_INFO,
        IFLA_BRIDGE_VLAN_TUNNEL_INFO,
+       IFLA_BRIDGE_MRP,
        __IFLA_BRIDGE_MAX,
 };
 #define IFLA_BRIDGE_MAX (__IFLA_BRIDGE_MAX - 1)
@@ -157,6 +158,176 @@ struct bridge_vlan_xstats {
        __u32 pad2;
 };
 
+enum {
+       IFLA_BRIDGE_MRP_UNSPEC,
+       IFLA_BRIDGE_MRP_INSTANCE,
+       IFLA_BRIDGE_MRP_PORT_STATE,
+       IFLA_BRIDGE_MRP_PORT_ROLE,
+       IFLA_BRIDGE_MRP_RING_STATE,
+       IFLA_BRIDGE_MRP_RING_ROLE,
+       IFLA_BRIDGE_MRP_START_TEST,
+       IFLA_BRIDGE_MRP_INFO,
+       IFLA_BRIDGE_MRP_IN_ROLE,
+       IFLA_BRIDGE_MRP_IN_STATE,
+       IFLA_BRIDGE_MRP_START_IN_TEST,
+       __IFLA_BRIDGE_MRP_MAX,
+};
+
+#define IFLA_BRIDGE_MRP_MAX (__IFLA_BRIDGE_MRP_MAX - 1)
+
+enum {
+       IFLA_BRIDGE_MRP_INSTANCE_UNSPEC,
+       IFLA_BRIDGE_MRP_INSTANCE_RING_ID,
+       IFLA_BRIDGE_MRP_INSTANCE_P_IFINDEX,
+       IFLA_BRIDGE_MRP_INSTANCE_S_IFINDEX,
+       IFLA_BRIDGE_MRP_INSTANCE_PRIO,
+       __IFLA_BRIDGE_MRP_INSTANCE_MAX,
+};
+
+#define IFLA_BRIDGE_MRP_INSTANCE_MAX (__IFLA_BRIDGE_MRP_INSTANCE_MAX - 1)
+
+enum {
+       IFLA_BRIDGE_MRP_PORT_STATE_UNSPEC,
+       IFLA_BRIDGE_MRP_PORT_STATE_STATE,
+       __IFLA_BRIDGE_MRP_PORT_STATE_MAX,
+};
+
+#define IFLA_BRIDGE_MRP_PORT_STATE_MAX (__IFLA_BRIDGE_MRP_PORT_STATE_MAX - 1)
+
+enum {
+       IFLA_BRIDGE_MRP_PORT_ROLE_UNSPEC,
+       IFLA_BRIDGE_MRP_PORT_ROLE_ROLE,
+       __IFLA_BRIDGE_MRP_PORT_ROLE_MAX,
+};
+
+#define IFLA_BRIDGE_MRP_PORT_ROLE_MAX (__IFLA_BRIDGE_MRP_PORT_ROLE_MAX - 1)
+
+enum {
+       IFLA_BRIDGE_MRP_RING_STATE_UNSPEC,
+       IFLA_BRIDGE_MRP_RING_STATE_RING_ID,
+       IFLA_BRIDGE_MRP_RING_STATE_STATE,
+       __IFLA_BRIDGE_MRP_RING_STATE_MAX,
+};
+
+#define IFLA_BRIDGE_MRP_RING_STATE_MAX (__IFLA_BRIDGE_MRP_RING_STATE_MAX - 1)
+
+enum {
+       IFLA_BRIDGE_MRP_RING_ROLE_UNSPEC,
+       IFLA_BRIDGE_MRP_RING_ROLE_RING_ID,
+       IFLA_BRIDGE_MRP_RING_ROLE_ROLE,
+       __IFLA_BRIDGE_MRP_RING_ROLE_MAX,
+};
+
+#define IFLA_BRIDGE_MRP_RING_ROLE_MAX (__IFLA_BRIDGE_MRP_RING_ROLE_MAX - 1)
+
+enum {
+       IFLA_BRIDGE_MRP_START_TEST_UNSPEC,
+       IFLA_BRIDGE_MRP_START_TEST_RING_ID,
+       IFLA_BRIDGE_MRP_START_TEST_INTERVAL,
+       IFLA_BRIDGE_MRP_START_TEST_MAX_MISS,
+       IFLA_BRIDGE_MRP_START_TEST_PERIOD,
+       IFLA_BRIDGE_MRP_START_TEST_MONITOR,
+       __IFLA_BRIDGE_MRP_START_TEST_MAX,
+};
+
+#define IFLA_BRIDGE_MRP_START_TEST_MAX (__IFLA_BRIDGE_MRP_START_TEST_MAX - 1)
+
+enum {
+       IFLA_BRIDGE_MRP_INFO_UNSPEC,
+       IFLA_BRIDGE_MRP_INFO_RING_ID,
+       IFLA_BRIDGE_MRP_INFO_P_IFINDEX,
+       IFLA_BRIDGE_MRP_INFO_S_IFINDEX,
+       IFLA_BRIDGE_MRP_INFO_PRIO,
+       IFLA_BRIDGE_MRP_INFO_RING_STATE,
+       IFLA_BRIDGE_MRP_INFO_RING_ROLE,
+       IFLA_BRIDGE_MRP_INFO_TEST_INTERVAL,
+       IFLA_BRIDGE_MRP_INFO_TEST_MAX_MISS,
+       IFLA_BRIDGE_MRP_INFO_TEST_MONITOR,
+       IFLA_BRIDGE_MRP_INFO_I_IFINDEX,
+       IFLA_BRIDGE_MRP_INFO_IN_STATE,
+       IFLA_BRIDGE_MRP_INFO_IN_ROLE,
+       IFLA_BRIDGE_MRP_INFO_IN_TEST_INTERVAL,
+       IFLA_BRIDGE_MRP_INFO_IN_TEST_MAX_MISS,
+       __IFLA_BRIDGE_MRP_INFO_MAX,
+};
+
+#define IFLA_BRIDGE_MRP_INFO_MAX (__IFLA_BRIDGE_MRP_INFO_MAX - 1)
+
+enum {
+       IFLA_BRIDGE_MRP_IN_STATE_UNSPEC,
+       IFLA_BRIDGE_MRP_IN_STATE_IN_ID,
+       IFLA_BRIDGE_MRP_IN_STATE_STATE,
+       __IFLA_BRIDGE_MRP_IN_STATE_MAX,
+};
+
+#define IFLA_BRIDGE_MRP_IN_STATE_MAX (__IFLA_BRIDGE_MRP_IN_STATE_MAX - 1)
+
+enum {
+       IFLA_BRIDGE_MRP_IN_ROLE_UNSPEC,
+       IFLA_BRIDGE_MRP_IN_ROLE_RING_ID,
+       IFLA_BRIDGE_MRP_IN_ROLE_IN_ID,
+       IFLA_BRIDGE_MRP_IN_ROLE_ROLE,
+       IFLA_BRIDGE_MRP_IN_ROLE_I_IFINDEX,
+       __IFLA_BRIDGE_MRP_IN_ROLE_MAX,
+};
+
+#define IFLA_BRIDGE_MRP_IN_ROLE_MAX (__IFLA_BRIDGE_MRP_IN_ROLE_MAX - 1)
+
+enum {
+       IFLA_BRIDGE_MRP_START_IN_TEST_UNSPEC,
+       IFLA_BRIDGE_MRP_START_IN_TEST_IN_ID,
+       IFLA_BRIDGE_MRP_START_IN_TEST_INTERVAL,
+       IFLA_BRIDGE_MRP_START_IN_TEST_MAX_MISS,
+       IFLA_BRIDGE_MRP_START_IN_TEST_PERIOD,
+       __IFLA_BRIDGE_MRP_START_IN_TEST_MAX,
+};
+
+#define IFLA_BRIDGE_MRP_START_IN_TEST_MAX (__IFLA_BRIDGE_MRP_START_IN_TEST_MAX - 1)
+
+struct br_mrp_instance {
+       __u32 ring_id;
+       __u32 p_ifindex;
+       __u32 s_ifindex;
+       __u16 prio;
+};
+
+struct br_mrp_ring_state {
+       __u32 ring_id;
+       __u32 ring_state;
+};
+
+struct br_mrp_ring_role {
+       __u32 ring_id;
+       __u32 ring_role;
+};
+
+struct br_mrp_start_test {
+       __u32 ring_id;
+       __u32 interval;
+       __u32 max_miss;
+       __u32 period;
+       __u32 monitor;
+};
+
+struct br_mrp_in_state {
+       __u32 in_state;
+       __u16 in_id;
+};
+
+struct br_mrp_in_role {
+       __u32 ring_id;
+       __u32 in_role;
+       __u32 i_ifindex;
+       __u16 in_id;
+};
+
+struct br_mrp_start_in_test {
+       __u32 interval;
+       __u32 max_miss;
+       __u32 period;
+       __u16 in_id;
+};
+
 struct bridge_stp_xstats {
        __u64 transition_blk;
        __u64 transition_fwd;
@@ -174,6 +345,16 @@ struct br_vlan_msg {
        __u32 ifindex;
 };
 
+enum {
+       BRIDGE_VLANDB_DUMP_UNSPEC,
+       BRIDGE_VLANDB_DUMP_FLAGS,
+       __BRIDGE_VLANDB_DUMP_MAX,
+};
+#define BRIDGE_VLANDB_DUMP_MAX (__BRIDGE_VLANDB_DUMP_MAX - 1)
+
+/* flags used in BRIDGE_VLANDB_DUMP_FLAGS attribute to affect dumps */
+#define BRIDGE_VLANDB_DUMPF_STATS      (1 << 0) /* Include stats in the dump */
+
 /* Bridge vlan RTM attributes
  * [BRIDGE_VLANDB_ENTRY] = {
  *     [BRIDGE_VLANDB_ENTRY_INFO]
@@ -192,10 +373,46 @@ enum {
        BRIDGE_VLANDB_ENTRY_INFO,
        BRIDGE_VLANDB_ENTRY_RANGE,
        BRIDGE_VLANDB_ENTRY_STATE,
+       BRIDGE_VLANDB_ENTRY_TUNNEL_INFO,
+       BRIDGE_VLANDB_ENTRY_STATS,
        __BRIDGE_VLANDB_ENTRY_MAX,
 };
 #define BRIDGE_VLANDB_ENTRY_MAX (__BRIDGE_VLANDB_ENTRY_MAX - 1)
 
+/* [BRIDGE_VLANDB_ENTRY] = {
+ *     [BRIDGE_VLANDB_ENTRY_TUNNEL_INFO] = {
+ *         [BRIDGE_VLANDB_TINFO_ID]
+ *         ...
+ *     }
+ * }
+ */
+enum {
+       BRIDGE_VLANDB_TINFO_UNSPEC,
+       BRIDGE_VLANDB_TINFO_ID,
+       BRIDGE_VLANDB_TINFO_CMD,
+       __BRIDGE_VLANDB_TINFO_MAX,
+};
+#define BRIDGE_VLANDB_TINFO_MAX (__BRIDGE_VLANDB_TINFO_MAX - 1)
+
+/* [BRIDGE_VLANDB_ENTRY] = {
+ *     [BRIDGE_VLANDB_ENTRY_STATS] = {
+ *         [BRIDGE_VLANDB_STATS_RX_BYTES]
+ *         ...
+ *     }
+ *     ...
+ * }
+ */
+enum {
+       BRIDGE_VLANDB_STATS_UNSPEC,
+       BRIDGE_VLANDB_STATS_RX_BYTES,
+       BRIDGE_VLANDB_STATS_RX_PACKETS,
+       BRIDGE_VLANDB_STATS_TX_BYTES,
+       BRIDGE_VLANDB_STATS_TX_PACKETS,
+       BRIDGE_VLANDB_STATS_PAD,
+       __BRIDGE_VLANDB_STATS_MAX,
+};
+#define BRIDGE_VLANDB_STATS_MAX (__BRIDGE_VLANDB_STATS_MAX - 1)
+
 /* Bridge multicast database attributes
  * [MDBA_MDB] = {
  *     [MDBA_MDB_ENTRY] = {
index f6ceb2e63d1ebad812ace8f8af4deff6feb8318f..d6de2b167448fe592b73da2dda68e99f355078e5 100644 (file)
@@ -92,6 +92,7 @@
 #define ETH_P_PREAUTH  0x88C7          /* 802.11 Preauthentication */
 #define ETH_P_TIPC     0x88CA          /* TIPC                         */
 #define ETH_P_LLDP     0x88CC          /* Link Layer Discovery Protocol */
+#define ETH_P_MRP      0x88E3          /* Media Redundancy Protocol    */
 #define ETH_P_MACSEC   0x88E5          /* 802.1ae MACsec */
 #define ETH_P_8021AH   0x88E7          /* 802.1ah Backbone Service Tag */
 #define ETH_P_MVRP     0x88F5          /* 802.1Q MVRP                  */
index 024af2d1d0af4059cba0c40211b1095ecd55387e..7fba4de511dec7e3877244f625f2a59b91b601b7 100644 (file)
@@ -170,12 +170,22 @@ enum {
        IFLA_PROP_LIST,
        IFLA_ALT_IFNAME, /* Alternative ifname */
        IFLA_PERM_ADDRESS,
+       IFLA_PROTO_DOWN_REASON,
        __IFLA_MAX
 };
 
 
 #define IFLA_MAX (__IFLA_MAX - 1)
 
+enum {
+       IFLA_PROTO_DOWN_REASON_UNSPEC,
+       IFLA_PROTO_DOWN_REASON_MASK,    /* u32, mask for reason bits */
+       IFLA_PROTO_DOWN_REASON_VALUE,   /* u32, reason bit value */
+
+       __IFLA_PROTO_DOWN_REASON_CNT,
+       IFLA_PROTO_DOWN_REASON_MAX = __IFLA_PROTO_DOWN_REASON_CNT - 1
+};
+
 /* backwards compatibility for userspace */
 #ifndef __KERNEL__
 #define IFLA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifinfomsg))))
@@ -343,6 +353,8 @@ enum {
        IFLA_BRPORT_NEIGH_SUPPRESS,
        IFLA_BRPORT_ISOLATED,
        IFLA_BRPORT_BACKUP_PORT,
+       IFLA_BRPORT_MRP_RING_OPEN,
+       IFLA_BRPORT_MRP_IN_OPEN,
        __IFLA_BRPORT_MAX
 };
 #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
@@ -463,6 +475,7 @@ enum {
        IFLA_MACSEC_REPLAY_PROTECT,
        IFLA_MACSEC_VALIDATION,
        IFLA_MACSEC_PAD,
+       IFLA_MACSEC_OFFLOAD,
        __IFLA_MACSEC_MAX,
 };
 
@@ -489,6 +502,7 @@ enum macsec_validation_type {
 enum macsec_offload {
        MACSEC_OFFLOAD_OFF = 0,
        MACSEC_OFFLOAD_PHY = 1,
+       MACSEC_OFFLOAD_MAC = 2,
        __MACSEC_OFFLOAD_END,
        MACSEC_OFFLOAD_MAX = __MACSEC_OFFLOAD_END - 1,
 };
@@ -590,6 +604,18 @@ enum ifla_geneve_df {
        GENEVE_DF_MAX = __GENEVE_DF_END - 1,
 };
 
+/* Bareudp section  */
+enum {
+       IFLA_BAREUDP_UNSPEC,
+       IFLA_BAREUDP_PORT,
+       IFLA_BAREUDP_ETHERTYPE,
+       IFLA_BAREUDP_SRCPORT_MIN,
+       IFLA_BAREUDP_MULTIPROTO_MODE,
+       __IFLA_BAREUDP_MAX
+};
+
+#define IFLA_BAREUDP_MAX (__IFLA_BAREUDP_MAX - 1)
+
 /* PPP section */
 enum {
        IFLA_PPP_UNSPEC,
@@ -891,7 +917,14 @@ enum {
 #define IFLA_IPOIB_MAX (__IFLA_IPOIB_MAX - 1)
 
 
-/* HSR section */
+/* HSR/PRP section, both uses same interface */
+
+/* Different redundancy protocols for hsr device */
+enum {
+       HSR_PROTOCOL_HSR,
+       HSR_PROTOCOL_PRP,
+       HSR_PROTOCOL_MAX,
+};
 
 enum {
        IFLA_HSR_UNSPEC,
@@ -901,6 +934,9 @@ enum {
        IFLA_HSR_SUPERVISION_ADDR,      /* Supervision frame multicast addr */
        IFLA_HSR_SEQ_NR,
        IFLA_HSR_VERSION,               /* HSR version */
+       IFLA_HSR_PROTOCOL,              /* Indicate different protocol than
+                                        * HSR. For example PRP.
+                                        */
        __IFLA_HSR_MAX,
 };
 
@@ -960,11 +996,12 @@ enum {
 #define XDP_FLAGS_SKB_MODE             (1U << 1)
 #define XDP_FLAGS_DRV_MODE             (1U << 2)
 #define XDP_FLAGS_HW_MODE              (1U << 3)
+#define XDP_FLAGS_REPLACE              (1U << 4)
 #define XDP_FLAGS_MODES                        (XDP_FLAGS_SKB_MODE | \
                                         XDP_FLAGS_DRV_MODE | \
                                         XDP_FLAGS_HW_MODE)
 #define XDP_FLAGS_MASK                 (XDP_FLAGS_UPDATE_IF_NOEXIST | \
-                                        XDP_FLAGS_MODES)
+                                        XDP_FLAGS_MODES | XDP_FLAGS_REPLACE)
 
 /* These are stored into IFLA_XDP_ATTACHED on dump. */
 enum {
@@ -984,6 +1021,7 @@ enum {
        IFLA_XDP_DRV_PROG_ID,
        IFLA_XDP_SKB_PROG_ID,
        IFLA_XDP_HW_PROG_ID,
+       IFLA_XDP_EXPECTED_FD,
        __IFLA_XDP_MAX,
 };
 
index 1d63c43c38ccaf91067e18c9d6f0bd98c9f9ba1e..3af2aa069a3677ca30691c854268664201f7103f 100644 (file)
 
 #define MACSEC_KEYID_LEN 16
 
-/* cipher IDs as per IEEE802.1AEbn-2011 */
+/* cipher IDs as per IEEE802.1AE-2018 (Table 14-1) */
 #define MACSEC_CIPHER_ID_GCM_AES_128 0x0080C20001000001ULL
 #define MACSEC_CIPHER_ID_GCM_AES_256 0x0080C20001000002ULL
+#define MACSEC_CIPHER_ID_GCM_AES_XPN_128 0x0080C20001000003ULL
+#define MACSEC_CIPHER_ID_GCM_AES_XPN_256 0x0080C20001000004ULL
 
 /* deprecated cipher ID for GCM-AES-128 */
 #define MACSEC_DEFAULT_CIPHER_ID     0x0080020001000001ULL
@@ -88,11 +90,13 @@ enum macsec_sa_attrs {
        MACSEC_SA_ATTR_UNSPEC,
        MACSEC_SA_ATTR_AN,     /* config/dump, u8 0..3 */
        MACSEC_SA_ATTR_ACTIVE, /* config/dump, u8 0..1 */
-       MACSEC_SA_ATTR_PN,     /* config/dump, u32 */
+       MACSEC_SA_ATTR_PN,     /* config/dump, u32/u64 (u64 if XPN) */
        MACSEC_SA_ATTR_KEY,    /* config, data */
        MACSEC_SA_ATTR_KEYID,  /* config/dump, 128-bit */
        MACSEC_SA_ATTR_STATS,  /* dump, nested, macsec_sa_stats_attr */
        MACSEC_SA_ATTR_PAD,
+       MACSEC_SA_ATTR_SSCI,   /* config/dump, u32 - XPN only */
+       MACSEC_SA_ATTR_SALT,   /* config, 96-bit - XPN only */
        __MACSEC_SA_ATTR_END,
        NUM_MACSEC_SA_ATTR = __MACSEC_SA_ATTR_END,
        MACSEC_SA_ATTR_MAX = __MACSEC_SA_ATTR_END - 1,
index 1521073b634800f5ee1c01e08ff86742dab0d2f5..7d6687618d80802ce10da1aa4e326b55bd9af014 100644 (file)
@@ -74,6 +74,8 @@ enum {
 #define IPPROTO_UDPLITE                IPPROTO_UDPLITE
   IPPROTO_MPLS = 137,          /* MPLS in IP (RFC 4023)                */
 #define IPPROTO_MPLS           IPPROTO_MPLS
+  IPPROTO_ETHERNET = 143,      /* Ethernet-within-IPv6 Encapsulation   */
+#define IPPROTO_ETHERNET       IPPROTO_ETHERNET
   IPPROTO_RAW = 255,           /* Raw IP packets                       */
 #define IPPROTO_RAW            IPPROTO_RAW
   IPPROTO_MPTCP = 262,         /* Multipath TCP connection             */
@@ -121,6 +123,7 @@ struct in_addr {
 #define IP_CHECKSUM    23
 #define IP_BIND_ADDRESS_NO_PORT        24
 #define IP_RECVFRAGSIZE        25
+#define IP_RECVERR_RFC4884     26
 
 /* IP_MTU_DISCOVER values */
 #define IP_PMTUDISC_DONT               0       /* Never send DF frames */
@@ -132,7 +135,7 @@ struct in_addr {
  * this socket to prevent accepting spoofed ones.
  */
 #define IP_PMTUDISC_INTERFACE          4
-/* weaker version of IP_PMTUDISC_INTERFACE, which allos packets to get
+/* weaker version of IP_PMTUDISC_INTERFACE, which allows packets to get
  * fragmented if they exeed the interface mtu
  */
 #define IP_PMTUDISC_OMIT               5
index 9f2273a0835642b243a7c10903ac24b79ecb9f99..5ad396a57eb327a2e69cc288fe1d287d2d05287e 100644 (file)
@@ -179,6 +179,7 @@ struct in6_flowlabel_req {
 #define IPV6_LEAVE_ANYCAST     28
 #define IPV6_MULTICAST_ALL     29
 #define IPV6_ROUTER_ALERT_ISOLATE      30
+#define IPV6_RECVERR_RFC4884   31
 
 /* IPV6_MTU_DISCOVER values */
 #define IPV6_PMTUDISC_DONT             0
index 0a4d73317759c9ee523d7d5482548b3171c821e6..eac8a6a648ea3cd7c6df262f7451c0597e63b24f 100644 (file)
@@ -249,4 +249,107 @@ struct nla_bitfield32 {
        __u32 selector;
 };
 
+/*
+ * policy descriptions - it's specific to each family how this is used
+ * Normally, it should be retrieved via a dump inside another attribute
+ * specifying where it applies.
+ */
+
+/**
+ * enum netlink_attribute_type - type of an attribute
+ * @NL_ATTR_TYPE_INVALID: unused
+ * @NL_ATTR_TYPE_FLAG: flag attribute (present/not present)
+ * @NL_ATTR_TYPE_U8: 8-bit unsigned attribute
+ * @NL_ATTR_TYPE_U16: 16-bit unsigned attribute
+ * @NL_ATTR_TYPE_U32: 32-bit unsigned attribute
+ * @NL_ATTR_TYPE_U64: 64-bit unsigned attribute
+ * @NL_ATTR_TYPE_S8: 8-bit signed attribute
+ * @NL_ATTR_TYPE_S16: 16-bit signed attribute
+ * @NL_ATTR_TYPE_S32: 32-bit signed attribute
+ * @NL_ATTR_TYPE_S64: 64-bit signed attribute
+ * @NL_ATTR_TYPE_BINARY: binary data, min/max length may be specified
+ * @NL_ATTR_TYPE_STRING: string, min/max length may be specified
+ * @NL_ATTR_TYPE_NUL_STRING: NUL-terminated string,
+ *     min/max length may be specified
+ * @NL_ATTR_TYPE_NESTED: nested, i.e. the content of this attribute
+ *     consists of sub-attributes. The nested policy and maxtype
+ *     inside may be specified.
+ * @NL_ATTR_TYPE_NESTED_ARRAY: nested array, i.e. the content of this
+ *     attribute contains sub-attributes whose type is irrelevant
+ *     (just used to separate the array entries) and each such array
+ *     entry has attributes again, the policy for those inner ones
+ *     and the corresponding maxtype may be specified.
+ * @NL_ATTR_TYPE_BITFIELD32: &struct nla_bitfield32 attribute
+ */
+enum netlink_attribute_type {
+       NL_ATTR_TYPE_INVALID,
+
+       NL_ATTR_TYPE_FLAG,
+
+       NL_ATTR_TYPE_U8,
+       NL_ATTR_TYPE_U16,
+       NL_ATTR_TYPE_U32,
+       NL_ATTR_TYPE_U64,
+
+       NL_ATTR_TYPE_S8,
+       NL_ATTR_TYPE_S16,
+       NL_ATTR_TYPE_S32,
+       NL_ATTR_TYPE_S64,
+
+       NL_ATTR_TYPE_BINARY,
+       NL_ATTR_TYPE_STRING,
+       NL_ATTR_TYPE_NUL_STRING,
+
+       NL_ATTR_TYPE_NESTED,
+       NL_ATTR_TYPE_NESTED_ARRAY,
+
+       NL_ATTR_TYPE_BITFIELD32,
+};
+
+/**
+ * enum netlink_policy_type_attr - policy type attributes
+ * @NL_POLICY_TYPE_ATTR_UNSPEC: unused
+ * @NL_POLICY_TYPE_ATTR_TYPE: type of the attribute,
+ *     &enum netlink_attribute_type (U32)
+ * @NL_POLICY_TYPE_ATTR_MIN_VALUE_S: minimum value for signed
+ *     integers (S64)
+ * @NL_POLICY_TYPE_ATTR_MAX_VALUE_S: maximum value for signed
+ *     integers (S64)
+ * @NL_POLICY_TYPE_ATTR_MIN_VALUE_U: minimum value for unsigned
+ *     integers (U64)
+ * @NL_POLICY_TYPE_ATTR_MAX_VALUE_U: maximum value for unsigned
+ *     integers (U64)
+ * @NL_POLICY_TYPE_ATTR_MIN_LENGTH: minimum length for binary
+ *     attributes, no minimum if not given (U32)
+ * @NL_POLICY_TYPE_ATTR_MAX_LENGTH: maximum length for binary
+ *     attributes, no maximum if not given (U32)
+ * @NL_POLICY_TYPE_ATTR_POLICY_IDX: sub policy for nested and
+ *     nested array types (U32)
+ * @NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE: maximum sub policy
+ *     attribute for nested and nested array types, this can
+ *     in theory be < the size of the policy pointed to by
+ *     the index, if limited inside the nesting (U32)
+ * @NL_POLICY_TYPE_ATTR_BITFIELD32_MASK: valid mask for the
+ *     bitfield32 type (U32)
+ * @NL_POLICY_TYPE_ATTR_PAD: pad attribute for 64-bit alignment
+ */
+enum netlink_policy_type_attr {
+       NL_POLICY_TYPE_ATTR_UNSPEC,
+       NL_POLICY_TYPE_ATTR_TYPE,
+       NL_POLICY_TYPE_ATTR_MIN_VALUE_S,
+       NL_POLICY_TYPE_ATTR_MAX_VALUE_S,
+       NL_POLICY_TYPE_ATTR_MIN_VALUE_U,
+       NL_POLICY_TYPE_ATTR_MAX_VALUE_U,
+       NL_POLICY_TYPE_ATTR_MIN_LENGTH,
+       NL_POLICY_TYPE_ATTR_MAX_LENGTH,
+       NL_POLICY_TYPE_ATTR_POLICY_IDX,
+       NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE,
+       NL_POLICY_TYPE_ATTR_BITFIELD32_MASK,
+       NL_POLICY_TYPE_ATTR_PAD,
+
+       /* keep last */
+       __NL_POLICY_TYPE_ATTR_MAX,
+       NL_POLICY_TYPE_ATTR_MAX = __NL_POLICY_TYPE_ATTR_MAX - 1
+};
+
 #endif /* _UAPI__LINUX_NETLINK_H */
index 7b61867e98487e4d4240e59b8e9304af7d64d9b1..2d4a1e784cf04a30fed6d4d28628212c80b1dde9 100644 (file)
@@ -49,6 +49,9 @@ enum {
        NHA_GROUPS,     /* flag; only return nexthop groups in dump */
        NHA_MASTER,     /* u32;  only return nexthops with given master dev */
 
+       NHA_FDB,        /* flag; nexthop belongs to a bridge fdb */
+       /* if NHA_FDB is added, OIF, BLACKHOLE, ENCAP cannot be set */
+
        __NHA_MAX,
 };
 
index bbe791b241682fafddfac2d40aaad2bc789eebe8..9e7c2c6078456bdc8dad240e844cfd42144bb024 100644 (file)
@@ -256,6 +256,9 @@ enum {
        TCA_RED_PARMS,
        TCA_RED_STAB,
        TCA_RED_MAX_P,
+       TCA_RED_FLAGS,          /* bitfield32 */
+       TCA_RED_EARLY_DROP_BLOCK, /* u32 */
+       TCA_RED_MARK_BLOCK,     /* u32 */
        __TCA_RED_MAX,
 };
 
@@ -268,12 +271,28 @@ struct tc_red_qopt {
        unsigned char   Wlog;           /* log(W)               */
        unsigned char   Plog;           /* log(P_max/(qth_max-qth_min)) */
        unsigned char   Scell_log;      /* cell size for idle damping */
+
+       /* This field can be used for flags that a RED-like qdisc has
+        * historically supported. E.g. when configuring RED, it can be used for
+        * ECN, HARDDROP and ADAPTATIVE. For SFQ it can be used for ECN,
+        * HARDDROP. Etc. Because this field has not been validated, and is
+        * copied back on dump, any bits besides those to which a given qdisc
+        * has assigned a historical meaning need to be considered for free use
+        * by userspace tools.
+        *
+        * Any further flags need to be passed differently, e.g. through an
+        * attribute (such as TCA_RED_FLAGS above). Such attribute should allow
+        * passing both recent and historic flags in one value.
+        */
        unsigned char   flags;
 #define TC_RED_ECN             1
 #define TC_RED_HARDDROP                2
 #define TC_RED_ADAPTATIVE      4
+#define TC_RED_NODROP          8
 };
 
+#define TC_RED_HISTORIC_FLAGS (TC_RED_ECN | TC_RED_HARDDROP | TC_RED_ADAPTATIVE)
+
 struct tc_red_xstats {
        __u32           early;          /* Early drops */
        __u32           pdrop;          /* Drops due to queue limits */
@@ -894,6 +913,12 @@ enum {
 
        TCA_FQ_CE_THRESHOLD,    /* DCTCP-like CE-marking threshold */
 
+       TCA_FQ_TIMER_SLACK,     /* timer slack */
+
+       TCA_FQ_HORIZON,         /* time horizon in us */
+
+       TCA_FQ_HORIZON_DROP,    /* drop packets beyond horizon, or cap their EDT */
+
        __TCA_FQ_MAX
 };
 
@@ -913,6 +938,8 @@ struct tc_fq_qd_stats {
        __u32   throttled_flows;
        __u32   unthrottle_latency_ns;
        __u64   ce_mark;                /* packets above ce_threshold */
+       __u64   horizon_drops;
+       __u64   horizon_caps;
 };
 
 /* Heavy-Hitter Filter */
@@ -1197,8 +1224,8 @@ enum {
  *       [TCA_TAPRIO_ATTR_SCHED_ENTRY_INTERVAL]
  */
 
-#define TCA_TAPRIO_ATTR_FLAG_TXTIME_ASSIST     BIT(0)
-#define TCA_TAPRIO_ATTR_FLAG_FULL_OFFLOAD      BIT(1)
+#define TCA_TAPRIO_ATTR_FLAG_TXTIME_ASSIST     _BITUL(0)
+#define TCA_TAPRIO_ATTR_FLAG_FULL_OFFLOAD      _BITUL(1)
 
 enum {
        TCA_TAPRIO_ATTR_UNSPEC,
index 4a8c5b7451570d9e5cce44830e208334675583de..9b814c92de123911aad41564cb290fa099bb0c0c 100644 (file)
@@ -257,12 +257,12 @@ enum {
 
 /* rtm_protocol */
 
-#define RTPROT_UNSPEC  0
-#define RTPROT_REDIRECT        1       /* Route installed by ICMP redirects;
-                                  not used by current IPv4 */
-#define RTPROT_KERNEL  2       /* Route installed by kernel            */
-#define RTPROT_BOOT    3       /* Route installed during boot          */
-#define RTPROT_STATIC  4       /* Route installed by administrator     */
+#define RTPROT_UNSPEC          0
+#define RTPROT_REDIRECT                1       /* Route installed by ICMP redirects;
+                                          not used by current IPv4 */
+#define RTPROT_KERNEL          2       /* Route installed by kernel            */
+#define RTPROT_BOOT            3       /* Route installed during boot          */
+#define RTPROT_STATIC          4       /* Route installed by administrator     */
 
 /* Values of protocol >= RTPROT_STATIC are not interpreted by kernel;
    they are just passed from user and back as is.
@@ -271,22 +271,23 @@ enum {
    avoid conflicts.
  */
 
-#define RTPROT_GATED   8       /* Apparently, GateD */
-#define RTPROT_RA      9       /* RDISC/ND router advertisements */
-#define RTPROT_MRT     10      /* Merit MRT */
-#define RTPROT_ZEBRA   11      /* Zebra */
-#define RTPROT_BIRD    12      /* BIRD */
-#define RTPROT_DNROUTED        13      /* DECnet routing daemon */
-#define RTPROT_XORP    14      /* XORP */
-#define RTPROT_NTK     15      /* Netsukuku */
-#define RTPROT_DHCP    16      /* DHCP client */
-#define RTPROT_MROUTED 17      /* Multicast daemon */
-#define RTPROT_BABEL   42      /* Babel daemon */
-#define RTPROT_BGP     186     /* BGP Routes */
-#define RTPROT_ISIS    187     /* ISIS Routes */
-#define RTPROT_OSPF    188     /* OSPF Routes */
-#define RTPROT_RIP     189     /* RIP Routes */
-#define RTPROT_EIGRP   192     /* EIGRP Routes */
+#define RTPROT_GATED           8       /* Apparently, GateD */
+#define RTPROT_RA              9       /* RDISC/ND router advertisements */
+#define RTPROT_MRT             10      /* Merit MRT */
+#define RTPROT_ZEBRA           11      /* Zebra */
+#define RTPROT_BIRD            12      /* BIRD */
+#define RTPROT_DNROUTED                13      /* DECnet routing daemon */
+#define RTPROT_XORP            14      /* XORP */
+#define RTPROT_NTK             15      /* Netsukuku */
+#define RTPROT_DHCP            16      /* DHCP client */
+#define RTPROT_MROUTED         17      /* Multicast daemon */
+#define RTPROT_KEEPALIVED      18      /* Keepalived daemon */
+#define RTPROT_BABEL           42      /* Babel daemon */
+#define RTPROT_BGP             186     /* BGP Routes */
+#define RTPROT_ISIS            187     /* ISIS Routes */
+#define RTPROT_OSPF            188     /* OSPF Routes */
+#define RTPROT_RIP             189     /* RIP Routes */
+#define RTPROT_EIGRP           192     /* EIGRP Routes */
 
 /* rtm_scope
 
@@ -609,11 +610,17 @@ enum {
        TCA_HW_OFFLOAD,
        TCA_INGRESS_BLOCK,
        TCA_EGRESS_BLOCK,
+       TCA_DUMP_FLAGS,
        __TCA_MAX
 };
 
 #define TCA_MAX (__TCA_MAX - 1)
 
+#define TCA_DUMP_FLAGS_TERSE (1 << 0) /* Means that in dump user gets only basic
+                                      * data necessary to identify the objects
+                                      * (handle, cookie, etc.) and stats.
+                                      */
+
 #define TCA_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcmsg))))
 #define TCA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcmsg))
 
@@ -771,6 +778,7 @@ enum {
 #define RTEXT_FILTER_BRVLAN    (1 << 1)
 #define RTEXT_FILTER_BRVLAN_COMPRESSED (1 << 2)
 #define        RTEXT_FILTER_SKIP_STATS (1 << 3)
+#define RTEXT_FILTER_MRP       (1 << 4)
 
 /* End of information exported to user level */