]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
Update kernel headers
authorDavid Ahern <dsahern@kernel.org>
Mon, 6 Nov 2023 17:08:23 +0000 (10:08 -0700)
committerDavid Ahern <dsahern@kernel.org>
Mon, 6 Nov 2023 17:08:23 +0000 (10:08 -0700)
Update kernel headers to commit:
    ff269e2cd5ad ("Merge tag 'net-next-6.7-followup' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next")

Import mptcp_pm.h due to a new dependency.

Signed-off-by: David Ahern <dsahern@kernel.org>
include/uapi/linux/bpf.h
include/uapi/linux/devlink.h
include/uapi/linux/if_bridge.h
include/uapi/linux/if_link.h
include/uapi/linux/mptcp.h
include/uapi/linux/mptcp_pm.h [new file with mode: 0644]
include/uapi/linux/netlink.h
include/uapi/linux/rtnetlink.h
include/uapi/linux/snmp.h
include/uapi/linux/tcp.h
include/uapi/linux/xfrm.h

index 0877a9f0af7a4b3fc54d8aaa8fb5b1d9829f4d0e..cdd6006d79fb99bddfc1633a184d53f663c5d4f7 100644 (file)
@@ -1052,6 +1052,8 @@ enum bpf_attach_type {
        BPF_CGROUP_UNIX_RECVMSG,
        BPF_CGROUP_UNIX_GETPEERNAME,
        BPF_CGROUP_UNIX_GETSOCKNAME,
+       BPF_NETKIT_PRIMARY,
+       BPF_NETKIT_PEER,
        __MAX_BPF_ATTACH_TYPE
 };
 
@@ -1071,6 +1073,7 @@ enum bpf_link_type {
        BPF_LINK_TYPE_NETFILTER = 10,
        BPF_LINK_TYPE_TCX = 11,
        BPF_LINK_TYPE_UPROBE_MULTI = 12,
+       BPF_LINK_TYPE_NETKIT = 13,
        MAX_BPF_LINK_TYPE,
 };
 
@@ -1656,6 +1659,13 @@ union bpf_attr {
                                __u32           flags;
                                __u32           pid;
                        } uprobe_multi;
+                       struct {
+                               union {
+                                       __u32   relative_fd;
+                                       __u32   relative_id;
+                               };
+                               __u64           expected_revision;
+                       } netkit;
                };
        } link_create;
 
@@ -6576,6 +6586,10 @@ struct bpf_link_info {
                        __u32 ifindex;
                        __u32 attach_type;
                } tcx;
+               struct {
+                       __u32 ifindex;
+                       __u32 attach_type;
+               } netkit;
        };
 } __attribute__((aligned(8)));
 
index 6c4721270910432f647bd201e10121afe6146c3d..fc554a898c91a73914ee83eec7df91c29bca4687 100644 (file)
@@ -265,7 +265,7 @@ enum {
  * Documentation/networking/devlink/devlink-flash.rst
  *
  */
-enum {
+enum devlink_flash_overwrite {
        DEVLINK_FLASH_OVERWRITE_SETTINGS_BIT,
        DEVLINK_FLASH_OVERWRITE_IDENTIFIERS_BIT,
 
index e3d55b12bfb857f65f14d62d93f8a7d9e703dcb3..adb75f7db0a21f0aa134d8c7899606db410daec9 100644 (file)
@@ -723,6 +723,24 @@ enum {
 };
 #define MDBA_SET_ENTRY_MAX (__MDBA_SET_ENTRY_MAX - 1)
 
+/* [MDBA_GET_ENTRY] = {
+ *    struct br_mdb_entry
+ *    [MDBA_GET_ENTRY_ATTRS] = {
+ *       [MDBE_ATTR_SOURCE]
+ *          struct in_addr / struct in6_addr
+ *       [MDBE_ATTR_SRC_VNI]
+ *          u32
+ *    }
+ * }
+ */
+enum {
+       MDBA_GET_ENTRY_UNSPEC,
+       MDBA_GET_ENTRY,
+       MDBA_GET_ENTRY_ATTRS,
+       __MDBA_GET_ENTRY_MAX,
+};
+#define MDBA_GET_ENTRY_MAX (__MDBA_GET_ENTRY_MAX - 1)
+
 /* [MDBA_SET_ENTRY_ATTRS] = {
  *    [MDBE_ATTR_xxx]
  *    ...
index f01f6299f714e85bda491b762743a0bbb3f651b8..c146352f5b7884277732fc40805d204a9850fe3b 100644 (file)
@@ -756,6 +756,30 @@ struct tunnel_msg {
        __u32 ifindex;
 };
 
+/* netkit section */
+enum netkit_action {
+       NETKIT_NEXT     = -1,
+       NETKIT_PASS     = 0,
+       NETKIT_DROP     = 2,
+       NETKIT_REDIRECT = 7,
+};
+
+enum netkit_mode {
+       NETKIT_L2,
+       NETKIT_L3,
+};
+
+enum {
+       IFLA_NETKIT_UNSPEC,
+       IFLA_NETKIT_PEER_INFO,
+       IFLA_NETKIT_PRIMARY,
+       IFLA_NETKIT_POLICY,
+       IFLA_NETKIT_PEER_POLICY,
+       IFLA_NETKIT_MODE,
+       __IFLA_NETKIT_MAX,
+};
+#define IFLA_NETKIT_MAX        (__IFLA_NETKIT_MAX - 1)
+
 /* VXLAN section */
 
 /* include statistics in the dump */
@@ -1392,7 +1416,9 @@ enum {
 
 enum {
        IFLA_DSA_UNSPEC,
-       IFLA_DSA_MASTER,
+       IFLA_DSA_CONDUIT,
+       /* Deprecated, use IFLA_DSA_CONDUIT instead */
+       IFLA_DSA_MASTER = IFLA_DSA_CONDUIT,
        __IFLA_DSA_MAX,
 };
 
index 159d32f04cd025c24a63b0520df3b31b84bf5d22..99b55575865a60733f948d796647523b730333c8 100644 (file)
 #define MPTCP_SUBFLOW_FLAG_CONNECTED           _BITUL(7)
 #define MPTCP_SUBFLOW_FLAG_MAPVALID            _BITUL(8)
 
-enum {
-       MPTCP_SUBFLOW_ATTR_UNSPEC,
-       MPTCP_SUBFLOW_ATTR_TOKEN_REM,
-       MPTCP_SUBFLOW_ATTR_TOKEN_LOC,
-       MPTCP_SUBFLOW_ATTR_RELWRITE_SEQ,
-       MPTCP_SUBFLOW_ATTR_MAP_SEQ,
-       MPTCP_SUBFLOW_ATTR_MAP_SFSEQ,
-       MPTCP_SUBFLOW_ATTR_SSN_OFFSET,
-       MPTCP_SUBFLOW_ATTR_MAP_DATALEN,
-       MPTCP_SUBFLOW_ATTR_FLAGS,
-       MPTCP_SUBFLOW_ATTR_ID_REM,
-       MPTCP_SUBFLOW_ATTR_ID_LOC,
-       MPTCP_SUBFLOW_ATTR_PAD,
-       __MPTCP_SUBFLOW_ATTR_MAX
-};
-
-#define MPTCP_SUBFLOW_ATTR_MAX (__MPTCP_SUBFLOW_ATTR_MAX - 1)
-
-/* netlink interface */
-#define MPTCP_PM_NAME          "mptcp_pm"
 #define MPTCP_PM_CMD_GRP_NAME  "mptcp_pm_cmds"
 #define MPTCP_PM_EV_GRP_NAME   "mptcp_pm_events"
-#define MPTCP_PM_VER           0x1
-
-/*
- * ATTR types defined for MPTCP
- */
-enum {
-       MPTCP_PM_ATTR_UNSPEC,
-
-       MPTCP_PM_ATTR_ADDR,                             /* nested address */
-       MPTCP_PM_ATTR_RCV_ADD_ADDRS,                    /* u32 */
-       MPTCP_PM_ATTR_SUBFLOWS,                         /* u32 */
-       MPTCP_PM_ATTR_TOKEN,                            /* u32 */
-       MPTCP_PM_ATTR_LOC_ID,                           /* u8 */
-       MPTCP_PM_ATTR_ADDR_REMOTE,                      /* nested address */
-
-       __MPTCP_PM_ATTR_MAX
-};
-
-#define MPTCP_PM_ATTR_MAX (__MPTCP_PM_ATTR_MAX - 1)
-
-enum {
-       MPTCP_PM_ADDR_ATTR_UNSPEC,
-
-       MPTCP_PM_ADDR_ATTR_FAMILY,                      /* u16 */
-       MPTCP_PM_ADDR_ATTR_ID,                          /* u8 */
-       MPTCP_PM_ADDR_ATTR_ADDR4,                       /* struct in_addr */
-       MPTCP_PM_ADDR_ATTR_ADDR6,                       /* struct in6_addr */
-       MPTCP_PM_ADDR_ATTR_PORT,                        /* u16 */
-       MPTCP_PM_ADDR_ATTR_FLAGS,                       /* u32 */
-       MPTCP_PM_ADDR_ATTR_IF_IDX,                      /* s32 */
-
-       __MPTCP_PM_ADDR_ATTR_MAX
-};
-
-#define MPTCP_PM_ADDR_ATTR_MAX (__MPTCP_PM_ADDR_ATTR_MAX - 1)
-
-#define MPTCP_PM_ADDR_FLAG_SIGNAL                      (1 << 0)
-#define MPTCP_PM_ADDR_FLAG_SUBFLOW                     (1 << 1)
-#define MPTCP_PM_ADDR_FLAG_BACKUP                      (1 << 2)
-#define MPTCP_PM_ADDR_FLAG_FULLMESH                    (1 << 3)
-#define MPTCP_PM_ADDR_FLAG_IMPLICIT                    (1 << 4)
-
-enum {
-       MPTCP_PM_CMD_UNSPEC,
 
-       MPTCP_PM_CMD_ADD_ADDR,
-       MPTCP_PM_CMD_DEL_ADDR,
-       MPTCP_PM_CMD_GET_ADDR,
-       MPTCP_PM_CMD_FLUSH_ADDRS,
-       MPTCP_PM_CMD_SET_LIMITS,
-       MPTCP_PM_CMD_GET_LIMITS,
-       MPTCP_PM_CMD_SET_FLAGS,
-       MPTCP_PM_CMD_ANNOUNCE,
-       MPTCP_PM_CMD_REMOVE,
-       MPTCP_PM_CMD_SUBFLOW_CREATE,
-       MPTCP_PM_CMD_SUBFLOW_DESTROY,
-
-       __MPTCP_PM_CMD_AFTER_LAST
-};
+#include <linux/mptcp_pm.h>
 
 #define MPTCP_INFO_FLAG_FALLBACK               _BITUL(0)
 #define MPTCP_INFO_FLAG_REMOTE_KEY_RECEIVED    _BITUL(1)
 
+#define MPTCP_PM_ADDR_FLAG_SIGNAL                      (1 << 0)
+#define MPTCP_PM_ADDR_FLAG_SUBFLOW                     (1 << 1)
+#define MPTCP_PM_ADDR_FLAG_BACKUP                      (1 << 2)
+#define MPTCP_PM_ADDR_FLAG_FULLMESH                    (1 << 3)
+#define MPTCP_PM_ADDR_FLAG_IMPLICIT                    (1 << 4)
+
 struct mptcp_info {
        __u8    mptcpi_subflows;
        __u8    mptcpi_add_addr_signal;
@@ -128,93 +57,6 @@ struct mptcp_info {
        __u64   mptcpi_bytes_acked;
 };
 
-/*
- * MPTCP_EVENT_CREATED: token, family, saddr4 | saddr6, daddr4 | daddr6,
- *                      sport, dport
- * A new MPTCP connection has been created. It is the good time to allocate
- * memory and send ADD_ADDR if needed. Depending on the traffic-patterns
- * it can take a long time until the MPTCP_EVENT_ESTABLISHED is sent.
- *
- * MPTCP_EVENT_ESTABLISHED: token, family, saddr4 | saddr6, daddr4 | daddr6,
- *                         sport, dport
- * A MPTCP connection is established (can start new subflows).
- *
- * MPTCP_EVENT_CLOSED: token
- * A MPTCP connection has stopped.
- *
- * MPTCP_EVENT_ANNOUNCED: token, rem_id, family, daddr4 | daddr6 [, dport]
- * A new address has been announced by the peer.
- *
- * MPTCP_EVENT_REMOVED: token, rem_id
- * An address has been lost by the peer.
- *
- * MPTCP_EVENT_SUB_ESTABLISHED: token, family, loc_id, rem_id,
- *                              saddr4 | saddr6, daddr4 | daddr6, sport,
- *                              dport, backup, if_idx [, error]
- * A new subflow has been established. 'error' should not be set.
- *
- * MPTCP_EVENT_SUB_CLOSED: token, family, loc_id, rem_id, saddr4 | saddr6,
- *                         daddr4 | daddr6, sport, dport, backup, if_idx
- *                         [, error]
- * A subflow has been closed. An error (copy of sk_err) could be set if an
- * error has been detected for this subflow.
- *
- * MPTCP_EVENT_SUB_PRIORITY: token, family, loc_id, rem_id, saddr4 | saddr6,
- *                           daddr4 | daddr6, sport, dport, backup, if_idx
- *                           [, error]
- * The priority of a subflow has changed. 'error' should not be set.
- *
- * MPTCP_EVENT_LISTENER_CREATED: family, sport, saddr4 | saddr6
- * A new PM listener is created.
- *
- * MPTCP_EVENT_LISTENER_CLOSED: family, sport, saddr4 | saddr6
- * A PM listener is closed.
- */
-enum mptcp_event_type {
-       MPTCP_EVENT_UNSPEC = 0,
-       MPTCP_EVENT_CREATED = 1,
-       MPTCP_EVENT_ESTABLISHED = 2,
-       MPTCP_EVENT_CLOSED = 3,
-
-       MPTCP_EVENT_ANNOUNCED = 6,
-       MPTCP_EVENT_REMOVED = 7,
-
-       MPTCP_EVENT_SUB_ESTABLISHED = 10,
-       MPTCP_EVENT_SUB_CLOSED = 11,
-
-       MPTCP_EVENT_SUB_PRIORITY = 13,
-
-       MPTCP_EVENT_LISTENER_CREATED = 15,
-       MPTCP_EVENT_LISTENER_CLOSED = 16,
-};
-
-enum mptcp_event_attr {
-       MPTCP_ATTR_UNSPEC = 0,
-
-       MPTCP_ATTR_TOKEN,       /* u32 */
-       MPTCP_ATTR_FAMILY,      /* u16 */
-       MPTCP_ATTR_LOC_ID,      /* u8 */
-       MPTCP_ATTR_REM_ID,      /* u8 */
-       MPTCP_ATTR_SADDR4,      /* be32 */
-       MPTCP_ATTR_SADDR6,      /* struct in6_addr */
-       MPTCP_ATTR_DADDR4,      /* be32 */
-       MPTCP_ATTR_DADDR6,      /* struct in6_addr */
-       MPTCP_ATTR_SPORT,       /* be16 */
-       MPTCP_ATTR_DPORT,       /* be16 */
-       MPTCP_ATTR_BACKUP,      /* u8 */
-       MPTCP_ATTR_ERROR,       /* u8 */
-       MPTCP_ATTR_FLAGS,       /* u16 */
-       MPTCP_ATTR_TIMEOUT,     /* u32 */
-       MPTCP_ATTR_IF_IDX,      /* s32 */
-       MPTCP_ATTR_RESET_REASON,/* u32 */
-       MPTCP_ATTR_RESET_FLAGS, /* u32 */
-       MPTCP_ATTR_SERVER_SIDE, /* u8 */
-
-       __MPTCP_ATTR_AFTER_LAST
-};
-
-#define MPTCP_ATTR_MAX (__MPTCP_ATTR_AFTER_LAST - 1)
-
 /* MPTCP Reset reason codes, rfc8684 */
 #define MPTCP_RST_EUNSPEC      0
 #define MPTCP_RST_EMPTCP       1
diff --git a/include/uapi/linux/mptcp_pm.h b/include/uapi/linux/mptcp_pm.h
new file mode 100644 (file)
index 0000000..3a4912a
--- /dev/null
@@ -0,0 +1,150 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
+/* Do not edit directly, auto-generated from: */
+/*     Documentation/netlink/specs/mptcp.yaml */
+/* YNL-GEN uapi header */
+
+#ifndef _LINUX_MPTCP_PM_H
+#define _LINUX_MPTCP_PM_H
+
+#define MPTCP_PM_NAME  "mptcp_pm"
+#define MPTCP_PM_VER   1
+
+/**
+ * enum mptcp_event_type
+ * @MPTCP_EVENT_UNSPEC: unused event
+ * @MPTCP_EVENT_CREATED: token, family, saddr4 | saddr6, daddr4 | daddr6,
+ *   sport, dport A new MPTCP connection has been created. It is the good time
+ *   to allocate memory and send ADD_ADDR if needed. Depending on the
+ *   traffic-patterns it can take a long time until the MPTCP_EVENT_ESTABLISHED
+ *   is sent.
+ * @MPTCP_EVENT_ESTABLISHED: token, family, saddr4 | saddr6, daddr4 | daddr6,
+ *   sport, dport A MPTCP connection is established (can start new subflows).
+ * @MPTCP_EVENT_CLOSED: token A MPTCP connection has stopped.
+ * @MPTCP_EVENT_ANNOUNCED: token, rem_id, family, daddr4 | daddr6 [, dport] A
+ *   new address has been announced by the peer.
+ * @MPTCP_EVENT_REMOVED: token, rem_id An address has been lost by the peer.
+ * @MPTCP_EVENT_SUB_ESTABLISHED: token, family, loc_id, rem_id, saddr4 |
+ *   saddr6, daddr4 | daddr6, sport, dport, backup, if_idx [, error] A new
+ *   subflow has been established. 'error' should not be set.
+ * @MPTCP_EVENT_SUB_CLOSED: token, family, loc_id, rem_id, saddr4 | saddr6,
+ *   daddr4 | daddr6, sport, dport, backup, if_idx [, error] A subflow has been
+ *   closed. An error (copy of sk_err) could be set if an error has been
+ *   detected for this subflow.
+ * @MPTCP_EVENT_SUB_PRIORITY: token, family, loc_id, rem_id, saddr4 | saddr6,
+ *   daddr4 | daddr6, sport, dport, backup, if_idx [, error] The priority of a
+ *   subflow has changed. 'error' should not be set.
+ * @MPTCP_EVENT_LISTENER_CREATED: family, sport, saddr4 | saddr6 A new PM
+ *   listener is created.
+ * @MPTCP_EVENT_LISTENER_CLOSED: family, sport, saddr4 | saddr6 A PM listener
+ *   is closed.
+ */
+enum mptcp_event_type {
+       MPTCP_EVENT_UNSPEC,
+       MPTCP_EVENT_CREATED,
+       MPTCP_EVENT_ESTABLISHED,
+       MPTCP_EVENT_CLOSED,
+       MPTCP_EVENT_ANNOUNCED = 6,
+       MPTCP_EVENT_REMOVED,
+       MPTCP_EVENT_SUB_ESTABLISHED = 10,
+       MPTCP_EVENT_SUB_CLOSED,
+       MPTCP_EVENT_SUB_PRIORITY = 13,
+       MPTCP_EVENT_LISTENER_CREATED = 15,
+       MPTCP_EVENT_LISTENER_CLOSED,
+};
+
+enum {
+       MPTCP_PM_ADDR_ATTR_UNSPEC,
+       MPTCP_PM_ADDR_ATTR_FAMILY,
+       MPTCP_PM_ADDR_ATTR_ID,
+       MPTCP_PM_ADDR_ATTR_ADDR4,
+       MPTCP_PM_ADDR_ATTR_ADDR6,
+       MPTCP_PM_ADDR_ATTR_PORT,
+       MPTCP_PM_ADDR_ATTR_FLAGS,
+       MPTCP_PM_ADDR_ATTR_IF_IDX,
+
+       __MPTCP_PM_ADDR_ATTR_MAX
+};
+#define MPTCP_PM_ADDR_ATTR_MAX (__MPTCP_PM_ADDR_ATTR_MAX - 1)
+
+enum {
+       MPTCP_SUBFLOW_ATTR_UNSPEC,
+       MPTCP_SUBFLOW_ATTR_TOKEN_REM,
+       MPTCP_SUBFLOW_ATTR_TOKEN_LOC,
+       MPTCP_SUBFLOW_ATTR_RELWRITE_SEQ,
+       MPTCP_SUBFLOW_ATTR_MAP_SEQ,
+       MPTCP_SUBFLOW_ATTR_MAP_SFSEQ,
+       MPTCP_SUBFLOW_ATTR_SSN_OFFSET,
+       MPTCP_SUBFLOW_ATTR_MAP_DATALEN,
+       MPTCP_SUBFLOW_ATTR_FLAGS,
+       MPTCP_SUBFLOW_ATTR_ID_REM,
+       MPTCP_SUBFLOW_ATTR_ID_LOC,
+       MPTCP_SUBFLOW_ATTR_PAD,
+
+       __MPTCP_SUBFLOW_ATTR_MAX
+};
+#define MPTCP_SUBFLOW_ATTR_MAX (__MPTCP_SUBFLOW_ATTR_MAX - 1)
+
+enum {
+       MPTCP_PM_ENDPOINT_ADDR = 1,
+
+       __MPTCP_PM_ENDPOINT_MAX
+};
+#define MPTCP_PM_ENDPOINT_MAX (__MPTCP_PM_ENDPOINT_MAX - 1)
+
+enum {
+       MPTCP_PM_ATTR_UNSPEC,
+       MPTCP_PM_ATTR_ADDR,
+       MPTCP_PM_ATTR_RCV_ADD_ADDRS,
+       MPTCP_PM_ATTR_SUBFLOWS,
+       MPTCP_PM_ATTR_TOKEN,
+       MPTCP_PM_ATTR_LOC_ID,
+       MPTCP_PM_ATTR_ADDR_REMOTE,
+
+       __MPTCP_ATTR_AFTER_LAST
+};
+#define MPTCP_PM_ATTR_MAX (__MPTCP_ATTR_AFTER_LAST - 1)
+
+enum mptcp_event_attr {
+       MPTCP_ATTR_UNSPEC,
+       MPTCP_ATTR_TOKEN,
+       MPTCP_ATTR_FAMILY,
+       MPTCP_ATTR_LOC_ID,
+       MPTCP_ATTR_REM_ID,
+       MPTCP_ATTR_SADDR4,
+       MPTCP_ATTR_SADDR6,
+       MPTCP_ATTR_DADDR4,
+       MPTCP_ATTR_DADDR6,
+       MPTCP_ATTR_SPORT,
+       MPTCP_ATTR_DPORT,
+       MPTCP_ATTR_BACKUP,
+       MPTCP_ATTR_ERROR,
+       MPTCP_ATTR_FLAGS,
+       MPTCP_ATTR_TIMEOUT,
+       MPTCP_ATTR_IF_IDX,
+       MPTCP_ATTR_RESET_REASON,
+       MPTCP_ATTR_RESET_FLAGS,
+       MPTCP_ATTR_SERVER_SIDE,
+
+       __MPTCP_ATTR_MAX
+};
+#define MPTCP_ATTR_MAX (__MPTCP_ATTR_MAX - 1)
+
+enum {
+       MPTCP_PM_CMD_UNSPEC,
+       MPTCP_PM_CMD_ADD_ADDR,
+       MPTCP_PM_CMD_DEL_ADDR,
+       MPTCP_PM_CMD_GET_ADDR,
+       MPTCP_PM_CMD_FLUSH_ADDRS,
+       MPTCP_PM_CMD_SET_LIMITS,
+       MPTCP_PM_CMD_GET_LIMITS,
+       MPTCP_PM_CMD_SET_FLAGS,
+       MPTCP_PM_CMD_ANNOUNCE,
+       MPTCP_PM_CMD_REMOVE,
+       MPTCP_PM_CMD_SUBFLOW_CREATE,
+       MPTCP_PM_CMD_SUBFLOW_DESTROY,
+
+       __MPTCP_PM_CMD_AFTER_LAST
+};
+#define MPTCP_PM_CMD_MAX (__MPTCP_PM_CMD_AFTER_LAST - 1)
+
+#endif /* _LINUX_MPTCP_PM_H */
index 47bac97ec76b3dbc9a30b434123ce90028fc981c..ff64eb18622bc3a929d7a9d5befe93303bc8cf59 100644 (file)
@@ -294,6 +294,8 @@ struct nla_bitfield32 {
  *     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
+ * @NL_ATTR_TYPE_SINT: 32-bit or 64-bit signed attribute, aligned to 4B
+ * @NL_ATTR_TYPE_UINT: 32-bit or 64-bit unsigned attribute, aligned to 4B
  */
 enum netlink_attribute_type {
        NL_ATTR_TYPE_INVALID,
@@ -318,6 +320,9 @@ enum netlink_attribute_type {
        NL_ATTR_TYPE_NESTED_ARRAY,
 
        NL_ATTR_TYPE_BITFIELD32,
+
+       NL_ATTR_TYPE_SINT,
+       NL_ATTR_TYPE_UINT,
 };
 
 /**
index 2132e941b93a3660e4818bc58f9ec1c76fe4937d..4e6c8e14cc300a5e14bfe06481bc349de0f9bb6e 100644 (file)
@@ -502,13 +502,17 @@ enum {
 
 #define RTAX_MAX (__RTAX_MAX - 1)
 
-#define RTAX_FEATURE_ECN       (1 << 0)
-#define RTAX_FEATURE_SACK      (1 << 1)
-#define RTAX_FEATURE_TIMESTAMP (1 << 2)
-#define RTAX_FEATURE_ALLFRAG   (1 << 3)
-
-#define RTAX_FEATURE_MASK      (RTAX_FEATURE_ECN | RTAX_FEATURE_SACK | \
-                                RTAX_FEATURE_TIMESTAMP | RTAX_FEATURE_ALLFRAG)
+#define RTAX_FEATURE_ECN               (1 << 0)
+#define RTAX_FEATURE_SACK              (1 << 1) /* unused */
+#define RTAX_FEATURE_TIMESTAMP         (1 << 2) /* unused */
+#define RTAX_FEATURE_ALLFRAG           (1 << 3) /* unused */
+#define RTAX_FEATURE_TCP_USEC_TS       (1 << 4)
+
+#define RTAX_FEATURE_MASK      (RTAX_FEATURE_ECN |             \
+                                RTAX_FEATURE_SACK |            \
+                                RTAX_FEATURE_TIMESTAMP |       \
+                                RTAX_FEATURE_ALLFRAG |         \
+                                RTAX_FEATURE_TCP_USEC_TS)
 
 struct rta_session {
        __u8    proto;
index 26f33a4c253d75c6661f6606aef9d8fd61baa476..a0819c6a5988fc97b14fc23cac3911e70a14cbff 100644 (file)
@@ -24,7 +24,7 @@ enum
        IPSTATS_MIB_INOCTETS,                   /* InOctets */
        IPSTATS_MIB_INDELIVERS,                 /* InDelivers */
        IPSTATS_MIB_OUTFORWDATAGRAMS,           /* OutForwDatagrams */
-       IPSTATS_MIB_OUTPKTS,                    /* OutRequests */
+       IPSTATS_MIB_OUTREQUESTS,                /* OutRequests */
        IPSTATS_MIB_OUTOCTETS,                  /* OutOctets */
 /* other fields */
        IPSTATS_MIB_INHDRERRORS,                /* InHdrErrors */
@@ -57,6 +57,7 @@ enum
        IPSTATS_MIB_ECT0PKTS,                   /* InECT0Pkts */
        IPSTATS_MIB_CEPKTS,                     /* InCEPkts */
        IPSTATS_MIB_REASM_OVERLAPS,             /* ReasmOverlaps */
+       IPSTATS_MIB_OUTPKTS,                    /* OutTransmits */
        __IPSTATS_MIB_MAX
 };
 
@@ -296,6 +297,11 @@ enum
        LINUX_MIB_TCPMIGRATEREQSUCCESS,         /* TCPMigrateReqSuccess */
        LINUX_MIB_TCPMIGRATEREQFAILURE,         /* TCPMigrateReqFailure */
        LINUX_MIB_TCPPLBREHASH,                 /* TCPPLBRehash */
+       LINUX_MIB_TCPAOREQUIRED,                /* TCPAORequired */
+       LINUX_MIB_TCPAOBAD,                     /* TCPAOBad */
+       LINUX_MIB_TCPAOKEYNOTFOUND,             /* TCPAOKeyNotFound */
+       LINUX_MIB_TCPAOGOOD,                    /* TCPAOGood */
+       LINUX_MIB_TCPAODROPPEDICMPS,            /* TCPAODroppedIcmps */
        __LINUX_MIB_MAX
 };
 
index fa34e496fb64093df27a8b592900641ad1faa719..a1b9fb3f8d74fc48e5d5b7d43c125a63a601737c 100644 (file)
@@ -129,6 +129,11 @@ enum {
 
 #define TCP_TX_DELAY           37      /* delay outgoing packets by XX usec */
 
+#define TCP_AO_ADD_KEY         38      /* Add/Set MKT */
+#define TCP_AO_DEL_KEY         39      /* Delete MKT */
+#define TCP_AO_INFO            40      /* Set/list TCP-AO per-socket options */
+#define TCP_AO_GET_KEYS                41      /* List MKT(s) */
+#define TCP_AO_REPAIR          42      /* Get/Set SNEs and ISNs */
 
 #define TCP_REPAIR_ON          1
 #define TCP_REPAIR_OFF         0
@@ -170,6 +175,7 @@ enum tcp_fastopen_client_fail {
 #define TCPI_OPT_ECN           8 /* ECN was negociated at TCP session init */
 #define TCPI_OPT_ECN_SEEN      16 /* we received at least one packet with ECT */
 #define TCPI_OPT_SYN_DATA      32 /* SYN-ACK acked data in SYN sent or rcvd */
+#define TCPI_OPT_USEC_TS       64 /* usec timestamps */
 
 /*
  * Sender's congestion state indicating normal or abnormal situations
@@ -360,6 +366,106 @@ struct tcp_diag_md5sig {
        __u8    tcpm_key[TCP_MD5SIG_MAXKEYLEN];
 };
 
+#define TCP_AO_MAXKEYLEN       80
+
+#define TCP_AO_KEYF_IFINDEX    (1 << 0)        /* L3 ifindex for VRF */
+#define TCP_AO_KEYF_EXCLUDE_OPT        (1 << 1)        /* "Indicates whether TCP
+                                                *  options other than TCP-AO
+                                                *  are included in the MAC
+                                                *  calculation"
+                                                */
+
+struct tcp_ao_add { /* setsockopt(TCP_AO_ADD_KEY) */
+       struct __kernel_sockaddr_storage addr;  /* peer's address for the key */
+       char    alg_name[64];           /* crypto hash algorithm to use */
+       __s32   ifindex;                /* L3 dev index for VRF */
+       __u32   set_current     :1,     /* set key as Current_key at once */
+               set_rnext       :1,     /* request it from peer with RNext_key */
+               reserved        :30;    /* must be 0 */
+       __u16   reserved2;              /* padding, must be 0 */
+       __u8    prefix;                 /* peer's address prefix */
+       __u8    sndid;                  /* SendID for outgoing segments */
+       __u8    rcvid;                  /* RecvID to match for incoming seg */
+       __u8    maclen;                 /* length of authentication code (hash) */
+       __u8    keyflags;               /* see TCP_AO_KEYF_ */
+       __u8    keylen;                 /* length of ::key */
+       __u8    key[TCP_AO_MAXKEYLEN];
+} __attribute__((aligned(8)));
+
+struct tcp_ao_del { /* setsockopt(TCP_AO_DEL_KEY) */
+       struct __kernel_sockaddr_storage addr;  /* peer's address for the key */
+       __s32   ifindex;                /* L3 dev index for VRF */
+       __u32   set_current     :1,     /* corresponding ::current_key */
+               set_rnext       :1,     /* corresponding ::rnext */
+               del_async       :1,     /* only valid for listen sockets */
+               reserved        :29;    /* must be 0 */
+       __u16   reserved2;              /* padding, must be 0 */
+       __u8    prefix;                 /* peer's address prefix */
+       __u8    sndid;                  /* SendID for outgoing segments */
+       __u8    rcvid;                  /* RecvID to match for incoming seg */
+       __u8    current_key;            /* KeyID to set as Current_key */
+       __u8    rnext;                  /* KeyID to set as Rnext_key */
+       __u8    keyflags;               /* see TCP_AO_KEYF_ */
+} __attribute__((aligned(8)));
+
+struct tcp_ao_info_opt { /* setsockopt(TCP_AO_INFO), getsockopt(TCP_AO_INFO) */
+       /* Here 'in' is for setsockopt(), 'out' is for getsockopt() */
+       __u32   set_current     :1,     /* in/out: corresponding ::current_key */
+               set_rnext       :1,     /* in/out: corresponding ::rnext */
+               ao_required     :1,     /* in/out: don't accept non-AO connects */
+               set_counters    :1,     /* in: set/clear ::pkt_* counters */
+               accept_icmps    :1,     /* in/out: accept incoming ICMPs */
+               reserved        :27;    /* must be 0 */
+       __u16   reserved2;              /* padding, must be 0 */
+       __u8    current_key;            /* in/out: KeyID of Current_key */
+       __u8    rnext;                  /* in/out: keyid of RNext_key */
+       __u64   pkt_good;               /* in/out: verified segments */
+       __u64   pkt_bad;                /* in/out: failed verification */
+       __u64   pkt_key_not_found;      /* in/out: could not find a key to verify */
+       __u64   pkt_ao_required;        /* in/out: segments missing TCP-AO sign */
+       __u64   pkt_dropped_icmp;       /* in/out: ICMPs that were ignored */
+} __attribute__((aligned(8)));
+
+struct tcp_ao_getsockopt { /* getsockopt(TCP_AO_GET_KEYS) */
+       struct __kernel_sockaddr_storage addr;  /* in/out: dump keys for peer
+                                                * with this address/prefix
+                                                */
+       char    alg_name[64];           /* out: crypto hash algorithm */
+       __u8    key[TCP_AO_MAXKEYLEN];
+       __u32   nkeys;                  /* in: size of the userspace buffer
+                                        * @optval, measured in @optlen - the
+                                        * sizeof(struct tcp_ao_getsockopt)
+                                        * out: number of keys that matched
+                                        */
+       __u16   is_current      :1,     /* in: match and dump Current_key,
+                                        * out: the dumped key is Current_key
+                                        */
+
+               is_rnext        :1,     /* in: match and dump RNext_key,
+                                        * out: the dumped key is RNext_key
+                                        */
+               get_all         :1,     /* in: dump all keys */
+               reserved        :13;    /* padding, must be 0 */
+       __u8    sndid;                  /* in/out: dump keys with SendID */
+       __u8    rcvid;                  /* in/out: dump keys with RecvID */
+       __u8    prefix;                 /* in/out: dump keys with address/prefix */
+       __u8    maclen;                 /* out: key's length of authentication
+                                        * code (hash)
+                                        */
+       __u8    keyflags;               /* in/out: see TCP_AO_KEYF_ */
+       __u8    keylen;                 /* out: length of ::key */
+       __s32   ifindex;                /* in/out: L3 dev index for VRF */
+       __u64   pkt_good;               /* out: verified segments */
+       __u64   pkt_bad;                /* out: segments that failed verification */
+} __attribute__((aligned(8)));
+
+struct tcp_ao_repair { /* {s,g}etsockopt(TCP_AO_REPAIR) */
+       __be32                  snt_isn;
+       __be32                  rcv_isn;
+       __u32                   snd_sne;
+       __u32                   rcv_sne;
+} __attribute__((aligned(8)));
+
 /* setsockopt(fd, IPPROTO_TCP, TCP_ZEROCOPY_RECEIVE, ...) */
 
 #define TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT 0x1
index 10bdef8f6a463273c1dd56c9fc601d013daf579e..43efaeca0f178e2258745efebc0b8baa8afdabd9 100644 (file)
@@ -4,6 +4,7 @@
 
 #include <linux/in6.h>
 #include <linux/types.h>
+#include <linux/stddef.h>
 
 /* All of the structures in this file may not change size as they are
  * passed into the kernel from userspace via netlink sockets.
@@ -33,7 +34,7 @@ struct xfrm_sec_ctx {
        __u8    ctx_alg;
        __u16   ctx_len;
        __u32   ctx_sid;
-       char    ctx_str[];
+       char    ctx_str[] __counted_by(ctx_len);
 };
 
 /* Security Context Domains of Interpretation */