]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
Update kernel headers
authorDavid Ahern <dsahern@gmail.com>
Wed, 7 Oct 2020 06:01:26 +0000 (00:01 -0600)
committerDavid Ahern <dsahern@gmail.com>
Wed, 7 Oct 2020 06:01:26 +0000 (00:01 -0600)
Update kernel headers to commit:
    9faebeb2d800 ("Merge branch 'ethtool-allow-dumping-policies-to-user-space'")

Signed-off-by: David Ahern <dsahern@gmail.com>
include/uapi/linux/bpf.h
include/uapi/linux/devlink.h
include/uapi/linux/genetlink.h
include/uapi/linux/l2tp.h
include/uapi/linux/netlink.h
include/uapi/linux/snmp.h
include/uapi/linux/tc_act/tc_mpls.h
include/uapi/linux/tc_act/tc_vlan.h

index 0a2cbf2ddf15d5b32aa11708aa719feb97ea84fa..9e4366f3e461c66895b4c9e2674c42ae30b760f3 100644 (file)
@@ -414,6 +414,9 @@ enum {
 
 /* Enable memory-mapping BPF map */
        BPF_F_MMAPABLE          = (1U << 10),
+
+/* Share perf_event among processes */
+       BPF_F_PRESERVE_ELEMS    = (1U << 11),
 };
 
 /* Flags for BPF_PROG_QUERY. */
@@ -424,6 +427,11 @@ enum {
  */
 #define BPF_F_QUERY_EFFECTIVE  (1U << 0)
 
+/* Flags for BPF_PROG_TEST_RUN */
+
+/* If set, run the test on the cpu specified by bpf_attr.test.cpu */
+#define BPF_F_TEST_RUN_ON_CPU  (1U << 0)
+
 /* type for BPF_ENABLE_STATS */
 enum bpf_stats_type {
        /* enabled run_time_ns and run_cnt */
@@ -566,6 +574,8 @@ union bpf_attr {
                                                 */
                __aligned_u64   ctx_in;
                __aligned_u64   ctx_out;
+               __u32           flags;
+               __u32           cpu;
        } test;
 
        struct { /* anonymous struct used by BPF_*_GET_*_ID */
@@ -632,8 +642,13 @@ union bpf_attr {
                };
                __u32           attach_type;    /* attach type */
                __u32           flags;          /* extra flags */
-               __aligned_u64   iter_info;      /* extra bpf_iter_link_info */
-               __u32           iter_info_len;  /* iter_info length */
+               union {
+                       __u32           target_btf_id;  /* btf_id of target to attach to */
+                       struct {
+                               __aligned_u64   iter_info;      /* extra bpf_iter_link_info */
+                               __u32           iter_info_len;  /* iter_info length */
+                       };
+               };
        } link_create;
 
        struct { /* struct used by BPF_LINK_UPDATE command */
@@ -2512,7 +2527,7 @@ union bpf_attr {
  *             result is from *reuse*\ **->socks**\ [] using the hash of the
  *             tuple.
  *
- * long bpf_sk_release(struct bpf_sock *sock)
+ * long bpf_sk_release(void *sock)
  *     Description
  *             Release the reference held by *sock*. *sock* must be a
  *             non-**NULL** pointer that was returned from
@@ -2692,7 +2707,7 @@ union bpf_attr {
  *             result is from *reuse*\ **->socks**\ [] using the hash of the
  *             tuple.
  *
- * long bpf_tcp_check_syncookie(struct bpf_sock *sk, void *iph, u32 iph_len, struct tcphdr *th, u32 th_len)
+ * long bpf_tcp_check_syncookie(void *sk, void *iph, u32 iph_len, struct tcphdr *th, u32 th_len)
  *     Description
  *             Check whether *iph* and *th* contain a valid SYN cookie ACK for
  *             the listening socket in *sk*.
@@ -2861,6 +2876,7 @@ union bpf_attr {
  *             0 on success.
  *
  *             **-ENOENT** if the bpf-local-storage cannot be found.
+ *             **-EINVAL** if sk is not a fullsock (e.g. a request_sock).
  *
  * long bpf_send_signal(u32 sig)
  *     Description
@@ -2877,7 +2893,7 @@ union bpf_attr {
  *
  *             **-EAGAIN** if bpf program can try again.
  *
- * s64 bpf_tcp_gen_syncookie(struct bpf_sock *sk, void *iph, u32 iph_len, struct tcphdr *th, u32 th_len)
+ * s64 bpf_tcp_gen_syncookie(void *sk, void *iph, u32 iph_len, struct tcphdr *th, u32 th_len)
  *     Description
  *             Try to issue a SYN cookie for the packet with corresponding
  *             IP/TCP headers, *iph* and *th*, on the listening socket in *sk*.
@@ -3106,7 +3122,7 @@ union bpf_attr {
  *     Return
  *             The id is returned or 0 in case the id could not be retrieved.
  *
- * long bpf_sk_assign(struct sk_buff *skb, struct bpf_sock *sk, u64 flags)
+ * long bpf_sk_assign(struct sk_buff *skb, void *sk, u64 flags)
  *     Description
  *             Helper is overloaded depending on BPF program type. This
  *             description applies to **BPF_PROG_TYPE_SCHED_CLS** and
@@ -3234,11 +3250,11 @@ union bpf_attr {
  *
  *             **-EOVERFLOW** if an overflow happened: The same object will be tried again.
  *
- * u64 bpf_sk_cgroup_id(struct bpf_sock *sk)
+ * u64 bpf_sk_cgroup_id(void *sk)
  *     Description
  *             Return the cgroup v2 id of the socket *sk*.
  *
- *             *sk* must be a non-**NULL** pointer to a full socket, e.g. one
+ *             *sk* must be a non-**NULL** pointer to a socket, e.g. one
  *             returned from **bpf_sk_lookup_xxx**\ (),
  *             **bpf_sk_fullsock**\ (), etc. The format of returned id is
  *             same as in **bpf_skb_cgroup_id**\ ().
@@ -3248,7 +3264,7 @@ union bpf_attr {
  *     Return
  *             The id is returned or 0 in case the id could not be retrieved.
  *
- * u64 bpf_sk_ancestor_cgroup_id(struct bpf_sock *sk, int ancestor_level)
+ * u64 bpf_sk_ancestor_cgroup_id(void *sk, int ancestor_level)
  *     Description
  *             Return id of cgroup v2 that is ancestor of cgroup associated
  *             with the *sk* at the *ancestor_level*.  The root cgroup is at
@@ -3586,6 +3602,72 @@ union bpf_attr {
  *             the data in *dst*. This is a wrapper of **copy_from_user**\ ().
  *     Return
  *             0 on success, or a negative error in case of failure.
+ *
+ * long bpf_snprintf_btf(char *str, u32 str_size, struct btf_ptr *ptr, u32 btf_ptr_size, u64 flags)
+ *     Description
+ *             Use BTF to store a string representation of *ptr*->ptr in *str*,
+ *             using *ptr*->type_id.  This value should specify the type
+ *             that *ptr*->ptr points to. LLVM __builtin_btf_type_id(type, 1)
+ *             can be used to look up vmlinux BTF type ids. Traversing the
+ *             data structure using BTF, the type information and values are
+ *             stored in the first *str_size* - 1 bytes of *str*.  Safe copy of
+ *             the pointer data is carried out to avoid kernel crashes during
+ *             operation.  Smaller types can use string space on the stack;
+ *             larger programs can use map data to store the string
+ *             representation.
+ *
+ *             The string can be subsequently shared with userspace via
+ *             bpf_perf_event_output() or ring buffer interfaces.
+ *             bpf_trace_printk() is to be avoided as it places too small
+ *             a limit on string size to be useful.
+ *
+ *             *flags* is a combination of
+ *
+ *             **BTF_F_COMPACT**
+ *                     no formatting around type information
+ *             **BTF_F_NONAME**
+ *                     no struct/union member names/types
+ *             **BTF_F_PTR_RAW**
+ *                     show raw (unobfuscated) pointer values;
+ *                     equivalent to printk specifier %px.
+ *             **BTF_F_ZERO**
+ *                     show zero-valued struct/union members; they
+ *                     are not displayed by default
+ *
+ *     Return
+ *             The number of bytes that were written (or would have been
+ *             written if output had to be truncated due to string size),
+ *             or a negative error in cases of failure.
+ *
+ * long bpf_seq_printf_btf(struct seq_file *m, struct btf_ptr *ptr, u32 ptr_size, u64 flags)
+ *     Description
+ *             Use BTF to write to seq_write a string representation of
+ *             *ptr*->ptr, using *ptr*->type_id as per bpf_snprintf_btf().
+ *             *flags* are identical to those used for bpf_snprintf_btf.
+ *     Return
+ *             0 on success or a negative error in case of failure.
+ *
+ * u64 bpf_skb_cgroup_classid(struct sk_buff *skb)
+ *     Description
+ *             See **bpf_get_cgroup_classid**\ () for the main description.
+ *             This helper differs from **bpf_get_cgroup_classid**\ () in that
+ *             the cgroup v1 net_cls class is retrieved only from the *skb*'s
+ *             associated socket instead of the current process.
+ *     Return
+ *             The id is returned or 0 in case the id could not be retrieved.
+ *
+ * long bpf_redirect_neigh(u32 ifindex, u64 flags)
+ *     Description
+ *             Redirect the packet to another net device of index *ifindex*
+ *             and fill in L2 addresses from neighboring subsystem. This helper
+ *             is somewhat similar to **bpf_redirect**\ (), except that it
+ *             fills in e.g. MAC addresses based on the L3 information from
+ *             the packet. This helper is supported for IPv4 and IPv6 protocols.
+ *             The *flags* argument is reserved and must be 0. The helper is
+ *             currently only supported for tc BPF program types.
+ *     Return
+ *             The helper returns **TC_ACT_REDIRECT** on success or
+ *             **TC_ACT_SHOT** on error.
  */
 #define __BPF_FUNC_MAPPER(FN)          \
        FN(unspec),                     \
@@ -3737,6 +3819,10 @@ union bpf_attr {
        FN(inode_storage_delete),       \
        FN(d_path),                     \
        FN(copy_from_user),             \
+       FN(snprintf_btf),               \
+       FN(seq_printf_btf),             \
+       FN(skb_cgroup_classid),         \
+       FN(redirect_neigh),             \
        /* */
 
 /* integer value in 'imm' field of BPF_CALL instruction selects which helper
@@ -4845,4 +4931,34 @@ struct bpf_sk_lookup {
        __u32 local_port;       /* Host byte order */
 };
 
+/*
+ * struct btf_ptr is used for typed pointer representation; the
+ * type id is used to render the pointer data as the appropriate type
+ * via the bpf_snprintf_btf() helper described above.  A flags field -
+ * potentially to specify additional details about the BTF pointer
+ * (rather than its mode of display) - is included for future use.
+ * Display flags - BTF_F_* - are passed to bpf_snprintf_btf separately.
+ */
+struct btf_ptr {
+       void *ptr;
+       __u32 type_id;
+       __u32 flags;            /* BTF ptr flags; unused at present. */
+};
+
+/*
+ * Flags to control bpf_snprintf_btf() behaviour.
+ *     - BTF_F_COMPACT: no formatting around type information
+ *     - BTF_F_NONAME: no struct/union member names/types
+ *     - BTF_F_PTR_RAW: show raw (unobfuscated) pointer values;
+ *       equivalent to %px.
+ *     - BTF_F_ZERO: show zero-valued struct/union members; they
+ *       are not displayed by default
+ */
+enum {
+       BTF_F_COMPACT   =       (1ULL << 0),
+       BTF_F_NONAME    =       (1ULL << 1),
+       BTF_F_PTR_RAW   =       (1ULL << 2),
+       BTF_F_ZERO      =       (1ULL << 3),
+};
+
 #endif /* __LINUX_BPF_H__ */
index 39f5cadc7f07c054c09cc90c11150728e10e4da9..39265000d818f95bb445e54d39d0a0afc96d44e3 100644 (file)
@@ -13,6 +13,8 @@
 #ifndef _LINUX_DEVLINK_H_
 #define _LINUX_DEVLINK_H_
 
+#include <linux/const.h>
+
 #define DEVLINK_GENL_NAME "devlink"
 #define DEVLINK_GENL_VERSION 0x1
 #define DEVLINK_GENL_MCGRP_CONFIG_NAME "config"
@@ -195,6 +197,9 @@ enum devlink_port_flavour {
                                      * port that faces the PCI VF.
                                      */
        DEVLINK_PORT_FLAVOUR_VIRTUAL, /* Any virtual port facing the user. */
+       DEVLINK_PORT_FLAVOUR_UNUSED, /* Port which exists in the switch, but
+                                     * is not used in any way.
+                                     */
 };
 
 enum devlink_param_cmode {
index 7c6c390c48ee7e3c01c9bd283f5dd9000194340f..9fa720ee87ae08ee1e8e18e6d95213b83023d446 100644 (file)
@@ -64,6 +64,8 @@ enum {
        CTRL_ATTR_OPS,
        CTRL_ATTR_MCAST_GROUPS,
        CTRL_ATTR_POLICY,
+       CTRL_ATTR_OP_POLICY,
+       CTRL_ATTR_OP,
        __CTRL_ATTR_MAX,
 };
 
@@ -85,6 +87,15 @@ enum {
        __CTRL_ATTR_MCAST_GRP_MAX,
 };
 
+enum {
+       CTRL_ATTR_POLICY_UNSPEC,
+       CTRL_ATTR_POLICY_DO,
+       CTRL_ATTR_POLICY_DUMP,
+
+       __CTRL_ATTR_POLICY_DUMP_MAX,
+       CTRL_ATTR_POLICY_DUMP_MAX = __CTRL_ATTR_POLICY_DUMP_MAX - 1
+};
+
 #define CTRL_ATTR_MCAST_GRP_MAX (__CTRL_ATTR_MCAST_GRP_MAX - 1)
 
 
index a418928179427d389894b6df5009c45a4b89375c..65ec47625f2cca61d107b1618c33b750997d66f2 100644 (file)
@@ -144,6 +144,7 @@ enum {
        L2TP_ATTR_RX_OOS_PACKETS,       /* u64 */
        L2TP_ATTR_RX_ERRORS,            /* u64 */
        L2TP_ATTR_STATS_PAD,
+       L2TP_ATTR_RX_COOKIE_DISCARDS,   /* u64 */
        __L2TP_ATTR_STATS_MAX,
 };
 
index 695c88e3c29d9bfbdfa69d96dfdd44b0ee86f8f0..f774920506b3206d8cd3532451ed306242bd0bc9 100644 (file)
@@ -327,6 +327,7 @@ enum netlink_attribute_type {
  *     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_MASK: mask of valid bits for unsigned integers (U64)
  * @NL_POLICY_TYPE_ATTR_PAD: pad attribute for 64-bit alignment
  */
 enum netlink_policy_type_attr {
@@ -342,6 +343,7 @@ enum netlink_policy_type_attr {
        NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE,
        NL_POLICY_TYPE_ATTR_BITFIELD32_MASK,
        NL_POLICY_TYPE_ATTR_PAD,
+       NL_POLICY_TYPE_ATTR_MASK,
 
        /* keep last */
        __NL_POLICY_TYPE_ATTR_MAX,
index cee9f8e6fce31589acb03529a5c5fce9ed8676f7..f84e7bcad6deb0f270bcb2adc1e83d8591443349 100644 (file)
@@ -288,6 +288,7 @@ enum
        LINUX_MIB_TCPTIMEOUTREHASH,             /* TCPTimeoutRehash */
        LINUX_MIB_TCPDUPLICATEDATAREHASH,       /* TCPDuplicateDataRehash */
        LINUX_MIB_TCPDSACKRECVSEGS,             /* TCPDSACKRecvSegs */
+       LINUX_MIB_TCPDSACKIGNOREDDUBIOUS,       /* TCPDSACKIgnoredDubious */
        __LINUX_MIB_MAX
 };
 
index 9360e95273c791c17a2c3097416ded2d6e95650a..9e4e8f52a779fc8b383aad0f95dfe0a3ef7a14f5 100644 (file)
@@ -10,6 +10,7 @@
 #define TCA_MPLS_ACT_PUSH      2
 #define TCA_MPLS_ACT_MODIFY    3
 #define TCA_MPLS_ACT_DEC_TTL   4
+#define TCA_MPLS_ACT_MAC_PUSH  5
 
 struct tc_mpls {
        tc_gen;         /* generic TC action fields. */
index 168995b54a70330081fdc6d835cc6d27c822a8f7..5b306fe815ccb0a13a4a9763ed728964d390661c 100644 (file)
@@ -16,6 +16,8 @@
 #define TCA_VLAN_ACT_POP       1
 #define TCA_VLAN_ACT_PUSH      2
 #define TCA_VLAN_ACT_MODIFY    3
+#define TCA_VLAN_ACT_POP_ETH   4
+#define TCA_VLAN_ACT_PUSH_ETH  5
 
 struct tc_vlan {
        tc_gen;
@@ -30,6 +32,8 @@ enum {
        TCA_VLAN_PUSH_VLAN_PROTOCOL,
        TCA_VLAN_PAD,
        TCA_VLAN_PUSH_VLAN_PRIORITY,
+       TCA_VLAN_PUSH_ETH_DST,
+       TCA_VLAN_PUSH_ETH_SRC,
        __TCA_VLAN_MAX,
 };
 #define TCA_VLAN_MAX (__TCA_VLAN_MAX - 1)