]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
Update kernel headers
authorDavid Ahern <dsahern@kernel.org>
Mon, 7 Nov 2022 15:47:16 +0000 (08:47 -0700)
committerDavid Ahern <dsahern@kernel.org>
Mon, 7 Nov 2022 15:47:16 +0000 (08:47 -0700)
Update kernel headers to commit:
    bf46390f39c6 ("Merge branch 'genetlink-per-op-type-policies'")

Signed-off-by: David Ahern <dsahern@kernel.org>
include/uapi/linux/bpf.h
include/uapi/linux/dcbnl.h
include/uapi/linux/if_link.h
include/uapi/linux/if_packet.h
include/uapi/linux/neighbour.h
include/uapi/linux/netlink.h
include/uapi/linux/snmp.h
include/uapi/linux/tcp.h

index c50fc66fc5b08d23242ed4dd3a3058623d84742e..aedc71e318ffead6248297b6c68e6b6fb536567f 100644 (file)
@@ -110,6 +110,12 @@ union bpf_iter_link_info {
                __u32   cgroup_fd;
                __u64   cgroup_id;
        } cgroup;
+       /* Parameters of task iterators. */
+       struct {
+               __u32   tid;
+               __u32   pid;
+               __u32   pid_fd;
+       } task;
 };
 
 /* BPF syscall commands, see bpf(2) man-page for more details. */
@@ -916,7 +922,14 @@ enum bpf_map_type {
        BPF_MAP_TYPE_CPUMAP,
        BPF_MAP_TYPE_XSKMAP,
        BPF_MAP_TYPE_SOCKHASH,
-       BPF_MAP_TYPE_CGROUP_STORAGE,
+       BPF_MAP_TYPE_CGROUP_STORAGE_DEPRECATED,
+       /* BPF_MAP_TYPE_CGROUP_STORAGE is available to bpf programs attaching
+        * to a cgroup. The newer BPF_MAP_TYPE_CGRP_STORAGE is available to
+        * both cgroup-attached and other progs and supports all functionality
+        * provided by BPF_MAP_TYPE_CGROUP_STORAGE. So mark
+        * BPF_MAP_TYPE_CGROUP_STORAGE deprecated.
+        */
+       BPF_MAP_TYPE_CGROUP_STORAGE = BPF_MAP_TYPE_CGROUP_STORAGE_DEPRECATED,
        BPF_MAP_TYPE_REUSEPORT_SOCKARRAY,
        BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE,
        BPF_MAP_TYPE_QUEUE,
@@ -928,6 +941,8 @@ enum bpf_map_type {
        BPF_MAP_TYPE_INODE_STORAGE,
        BPF_MAP_TYPE_TASK_STORAGE,
        BPF_MAP_TYPE_BLOOM_FILTER,
+       BPF_MAP_TYPE_USER_RINGBUF,
+       BPF_MAP_TYPE_CGRP_STORAGE,
 };
 
 /* Note that tracing related programs such as
@@ -1252,7 +1267,7 @@ enum {
 
 /* Query effective (directly attached + inherited from ancestor cgroups)
  * programs that will be executed for events within a cgroup.
- * attach_flags with this flag are returned only for directly attached programs.
+ * attach_flags with this flag are always returned 0.
  */
 #define BPF_F_QUERY_EFFECTIVE  (1U << 0)
 
@@ -1451,7 +1466,10 @@ union bpf_attr {
                __u32           attach_flags;
                __aligned_u64   prog_ids;
                __u32           prog_cnt;
-               __aligned_u64   prog_attach_flags; /* output: per-program attach_flags */
+               /* output: per-program attach_flags.
+                * not allowed to be set during effective query.
+                */
+               __aligned_u64   prog_attach_flags;
        } query;
 
        struct { /* anonymous struct used by BPF_RAW_TRACEPOINT_OPEN command */
@@ -4950,6 +4968,7 @@ union bpf_attr {
  *             Get address of the traced function (for tracing and kprobe programs).
  *     Return
  *             Address of the traced function.
+ *             0 for kprobes placed within the function (not at the entry).
  *
  * u64 bpf_get_attach_cookie(void *ctx)
  *     Description
@@ -5079,12 +5098,12 @@ union bpf_attr {
  *
  * long bpf_get_func_arg(void *ctx, u32 n, u64 *value)
  *     Description
- *             Get **n**-th argument (zero based) of the traced function (for tracing programs)
+ *             Get **n**-th argument register (zero based) of the traced function (for tracing programs)
  *             returned in **value**.
  *
  *     Return
  *             0 on success.
- *             **-EINVAL** if n >= arguments count of traced function.
+ *             **-EINVAL** if n >= argument register count of traced function.
  *
  * long bpf_get_func_ret(void *ctx, u64 *value)
  *     Description
@@ -5097,10 +5116,11 @@ union bpf_attr {
  *
  * long bpf_get_func_arg_cnt(void *ctx)
  *     Description
- *             Get number of arguments of the traced function (for tracing programs).
+ *             Get number of registers of the traced function (for tracing programs) where
+ *             function arguments are stored in these registers.
  *
  *     Return
- *             The number of arguments of the traced function.
+ *             The number of argument registers of the traced function.
  *
  * int bpf_get_retval(void)
  *     Description
@@ -5386,225 +5406,309 @@ union bpf_attr {
  *     Return
  *             Current *ktime*.
  *
+ * long bpf_user_ringbuf_drain(struct bpf_map *map, void *callback_fn, void *ctx, u64 flags)
+ *     Description
+ *             Drain samples from the specified user ring buffer, and invoke
+ *             the provided callback for each such sample:
+ *
+ *             long (\*callback_fn)(struct bpf_dynptr \*dynptr, void \*ctx);
+ *
+ *             If **callback_fn** returns 0, the helper will continue to try
+ *             and drain the next sample, up to a maximum of
+ *             BPF_MAX_USER_RINGBUF_SAMPLES samples. If the return value is 1,
+ *             the helper will skip the rest of the samples and return. Other
+ *             return values are not used now, and will be rejected by the
+ *             verifier.
+ *     Return
+ *             The number of drained samples if no error was encountered while
+ *             draining samples, or 0 if no samples were present in the ring
+ *             buffer. If a user-space producer was epoll-waiting on this map,
+ *             and at least one sample was drained, they will receive an event
+ *             notification notifying them of available space in the ring
+ *             buffer. If the BPF_RB_NO_WAKEUP flag is passed to this
+ *             function, no wakeup notification will be sent. If the
+ *             BPF_RB_FORCE_WAKEUP flag is passed, a wakeup notification will
+ *             be sent even if no sample was drained.
+ *
+ *             On failure, the returned value is one of the following:
+ *
+ *             **-EBUSY** if the ring buffer is contended, and another calling
+ *             context was concurrently draining the ring buffer.
+ *
+ *             **-EINVAL** if user-space is not properly tracking the ring
+ *             buffer due to the producer position not being aligned to 8
+ *             bytes, a sample not being aligned to 8 bytes, or the producer
+ *             position not matching the advertised length of a sample.
+ *
+ *             **-E2BIG** if user-space has tried to publish a sample which is
+ *             larger than the size of the ring buffer, or which cannot fit
+ *             within a struct bpf_dynptr.
+ *
+ * void *bpf_cgrp_storage_get(struct bpf_map *map, struct cgroup *cgroup, void *value, u64 flags)
+ *     Description
+ *             Get a bpf_local_storage from the *cgroup*.
+ *
+ *             Logically, it could be thought of as getting the value from
+ *             a *map* with *cgroup* as the **key**.  From this
+ *             perspective,  the usage is not much different from
+ *             **bpf_map_lookup_elem**\ (*map*, **&**\ *cgroup*) except this
+ *             helper enforces the key must be a cgroup struct and the map must also
+ *             be a **BPF_MAP_TYPE_CGRP_STORAGE**.
+ *
+ *             In reality, the local-storage value is embedded directly inside of the
+ *             *cgroup* object itself, rather than being located in the
+ *             **BPF_MAP_TYPE_CGRP_STORAGE** map. When the local-storage value is
+ *             queried for some *map* on a *cgroup* object, the kernel will perform an
+ *             O(n) iteration over all of the live local-storage values for that
+ *             *cgroup* object until the local-storage value for the *map* is found.
+ *
+ *             An optional *flags* (**BPF_LOCAL_STORAGE_GET_F_CREATE**) can be
+ *             used such that a new bpf_local_storage will be
+ *             created if one does not exist.  *value* can be used
+ *             together with **BPF_LOCAL_STORAGE_GET_F_CREATE** to specify
+ *             the initial value of a bpf_local_storage.  If *value* is
+ *             **NULL**, the new bpf_local_storage will be zero initialized.
+ *     Return
+ *             A bpf_local_storage pointer is returned on success.
+ *
+ *             **NULL** if not found or there was an error in adding
+ *             a new bpf_local_storage.
+ *
+ * long bpf_cgrp_storage_delete(struct bpf_map *map, struct cgroup *cgroup)
+ *     Description
+ *             Delete a bpf_local_storage from a *cgroup*.
+ *     Return
+ *             0 on success.
+ *
+ *             **-ENOENT** if the bpf_local_storage cannot be found.
  */
-#define __BPF_FUNC_MAPPER(FN)          \
-       FN(unspec),                     \
-       FN(map_lookup_elem),            \
-       FN(map_update_elem),            \
-       FN(map_delete_elem),            \
-       FN(probe_read),                 \
-       FN(ktime_get_ns),               \
-       FN(trace_printk),               \
-       FN(get_prandom_u32),            \
-       FN(get_smp_processor_id),       \
-       FN(skb_store_bytes),            \
-       FN(l3_csum_replace),            \
-       FN(l4_csum_replace),            \
-       FN(tail_call),                  \
-       FN(clone_redirect),             \
-       FN(get_current_pid_tgid),       \
-       FN(get_current_uid_gid),        \
-       FN(get_current_comm),           \
-       FN(get_cgroup_classid),         \
-       FN(skb_vlan_push),              \
-       FN(skb_vlan_pop),               \
-       FN(skb_get_tunnel_key),         \
-       FN(skb_set_tunnel_key),         \
-       FN(perf_event_read),            \
-       FN(redirect),                   \
-       FN(get_route_realm),            \
-       FN(perf_event_output),          \
-       FN(skb_load_bytes),             \
-       FN(get_stackid),                \
-       FN(csum_diff),                  \
-       FN(skb_get_tunnel_opt),         \
-       FN(skb_set_tunnel_opt),         \
-       FN(skb_change_proto),           \
-       FN(skb_change_type),            \
-       FN(skb_under_cgroup),           \
-       FN(get_hash_recalc),            \
-       FN(get_current_task),           \
-       FN(probe_write_user),           \
-       FN(current_task_under_cgroup),  \
-       FN(skb_change_tail),            \
-       FN(skb_pull_data),              \
-       FN(csum_update),                \
-       FN(set_hash_invalid),           \
-       FN(get_numa_node_id),           \
-       FN(skb_change_head),            \
-       FN(xdp_adjust_head),            \
-       FN(probe_read_str),             \
-       FN(get_socket_cookie),          \
-       FN(get_socket_uid),             \
-       FN(set_hash),                   \
-       FN(setsockopt),                 \
-       FN(skb_adjust_room),            \
-       FN(redirect_map),               \
-       FN(sk_redirect_map),            \
-       FN(sock_map_update),            \
-       FN(xdp_adjust_meta),            \
-       FN(perf_event_read_value),      \
-       FN(perf_prog_read_value),       \
-       FN(getsockopt),                 \
-       FN(override_return),            \
-       FN(sock_ops_cb_flags_set),      \
-       FN(msg_redirect_map),           \
-       FN(msg_apply_bytes),            \
-       FN(msg_cork_bytes),             \
-       FN(msg_pull_data),              \
-       FN(bind),                       \
-       FN(xdp_adjust_tail),            \
-       FN(skb_get_xfrm_state),         \
-       FN(get_stack),                  \
-       FN(skb_load_bytes_relative),    \
-       FN(fib_lookup),                 \
-       FN(sock_hash_update),           \
-       FN(msg_redirect_hash),          \
-       FN(sk_redirect_hash),           \
-       FN(lwt_push_encap),             \
-       FN(lwt_seg6_store_bytes),       \
-       FN(lwt_seg6_adjust_srh),        \
-       FN(lwt_seg6_action),            \
-       FN(rc_repeat),                  \
-       FN(rc_keydown),                 \
-       FN(skb_cgroup_id),              \
-       FN(get_current_cgroup_id),      \
-       FN(get_local_storage),          \
-       FN(sk_select_reuseport),        \
-       FN(skb_ancestor_cgroup_id),     \
-       FN(sk_lookup_tcp),              \
-       FN(sk_lookup_udp),              \
-       FN(sk_release),                 \
-       FN(map_push_elem),              \
-       FN(map_pop_elem),               \
-       FN(map_peek_elem),              \
-       FN(msg_push_data),              \
-       FN(msg_pop_data),               \
-       FN(rc_pointer_rel),             \
-       FN(spin_lock),                  \
-       FN(spin_unlock),                \
-       FN(sk_fullsock),                \
-       FN(tcp_sock),                   \
-       FN(skb_ecn_set_ce),             \
-       FN(get_listener_sock),          \
-       FN(skc_lookup_tcp),             \
-       FN(tcp_check_syncookie),        \
-       FN(sysctl_get_name),            \
-       FN(sysctl_get_current_value),   \
-       FN(sysctl_get_new_value),       \
-       FN(sysctl_set_new_value),       \
-       FN(strtol),                     \
-       FN(strtoul),                    \
-       FN(sk_storage_get),             \
-       FN(sk_storage_delete),          \
-       FN(send_signal),                \
-       FN(tcp_gen_syncookie),          \
-       FN(skb_output),                 \
-       FN(probe_read_user),            \
-       FN(probe_read_kernel),          \
-       FN(probe_read_user_str),        \
-       FN(probe_read_kernel_str),      \
-       FN(tcp_send_ack),               \
-       FN(send_signal_thread),         \
-       FN(jiffies64),                  \
-       FN(read_branch_records),        \
-       FN(get_ns_current_pid_tgid),    \
-       FN(xdp_output),                 \
-       FN(get_netns_cookie),           \
-       FN(get_current_ancestor_cgroup_id),     \
-       FN(sk_assign),                  \
-       FN(ktime_get_boot_ns),          \
-       FN(seq_printf),                 \
-       FN(seq_write),                  \
-       FN(sk_cgroup_id),               \
-       FN(sk_ancestor_cgroup_id),      \
-       FN(ringbuf_output),             \
-       FN(ringbuf_reserve),            \
-       FN(ringbuf_submit),             \
-       FN(ringbuf_discard),            \
-       FN(ringbuf_query),              \
-       FN(csum_level),                 \
-       FN(skc_to_tcp6_sock),           \
-       FN(skc_to_tcp_sock),            \
-       FN(skc_to_tcp_timewait_sock),   \
-       FN(skc_to_tcp_request_sock),    \
-       FN(skc_to_udp6_sock),           \
-       FN(get_task_stack),             \
-       FN(load_hdr_opt),               \
-       FN(store_hdr_opt),              \
-       FN(reserve_hdr_opt),            \
-       FN(inode_storage_get),          \
-       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),             \
-       FN(per_cpu_ptr),                \
-       FN(this_cpu_ptr),               \
-       FN(redirect_peer),              \
-       FN(task_storage_get),           \
-       FN(task_storage_delete),        \
-       FN(get_current_task_btf),       \
-       FN(bprm_opts_set),              \
-       FN(ktime_get_coarse_ns),        \
-       FN(ima_inode_hash),             \
-       FN(sock_from_file),             \
-       FN(check_mtu),                  \
-       FN(for_each_map_elem),          \
-       FN(snprintf),                   \
-       FN(sys_bpf),                    \
-       FN(btf_find_by_name_kind),      \
-       FN(sys_close),                  \
-       FN(timer_init),                 \
-       FN(timer_set_callback),         \
-       FN(timer_start),                \
-       FN(timer_cancel),               \
-       FN(get_func_ip),                \
-       FN(get_attach_cookie),          \
-       FN(task_pt_regs),               \
-       FN(get_branch_snapshot),        \
-       FN(trace_vprintk),              \
-       FN(skc_to_unix_sock),           \
-       FN(kallsyms_lookup_name),       \
-       FN(find_vma),                   \
-       FN(loop),                       \
-       FN(strncmp),                    \
-       FN(get_func_arg),               \
-       FN(get_func_ret),               \
-       FN(get_func_arg_cnt),           \
-       FN(get_retval),                 \
-       FN(set_retval),                 \
-       FN(xdp_get_buff_len),           \
-       FN(xdp_load_bytes),             \
-       FN(xdp_store_bytes),            \
-       FN(copy_from_user_task),        \
-       FN(skb_set_tstamp),             \
-       FN(ima_file_hash),              \
-       FN(kptr_xchg),                  \
-       FN(map_lookup_percpu_elem),     \
-       FN(skc_to_mptcp_sock),          \
-       FN(dynptr_from_mem),            \
-       FN(ringbuf_reserve_dynptr),     \
-       FN(ringbuf_submit_dynptr),      \
-       FN(ringbuf_discard_dynptr),     \
-       FN(dynptr_read),                \
-       FN(dynptr_write),               \
-       FN(dynptr_data),                \
-       FN(tcp_raw_gen_syncookie_ipv4), \
-       FN(tcp_raw_gen_syncookie_ipv6), \
-       FN(tcp_raw_check_syncookie_ipv4),       \
-       FN(tcp_raw_check_syncookie_ipv6),       \
-       FN(ktime_get_tai_ns),           \
+#define ___BPF_FUNC_MAPPER(FN, ctx...)                 \
+       FN(unspec, 0, ##ctx)                            \
+       FN(map_lookup_elem, 1, ##ctx)                   \
+       FN(map_update_elem, 2, ##ctx)                   \
+       FN(map_delete_elem, 3, ##ctx)                   \
+       FN(probe_read, 4, ##ctx)                        \
+       FN(ktime_get_ns, 5, ##ctx)                      \
+       FN(trace_printk, 6, ##ctx)                      \
+       FN(get_prandom_u32, 7, ##ctx)                   \
+       FN(get_smp_processor_id, 8, ##ctx)              \
+       FN(skb_store_bytes, 9, ##ctx)                   \
+       FN(l3_csum_replace, 10, ##ctx)                  \
+       FN(l4_csum_replace, 11, ##ctx)                  \
+       FN(tail_call, 12, ##ctx)                        \
+       FN(clone_redirect, 13, ##ctx)                   \
+       FN(get_current_pid_tgid, 14, ##ctx)             \
+       FN(get_current_uid_gid, 15, ##ctx)              \
+       FN(get_current_comm, 16, ##ctx)                 \
+       FN(get_cgroup_classid, 17, ##ctx)               \
+       FN(skb_vlan_push, 18, ##ctx)                    \
+       FN(skb_vlan_pop, 19, ##ctx)                     \
+       FN(skb_get_tunnel_key, 20, ##ctx)               \
+       FN(skb_set_tunnel_key, 21, ##ctx)               \
+       FN(perf_event_read, 22, ##ctx)                  \
+       FN(redirect, 23, ##ctx)                         \
+       FN(get_route_realm, 24, ##ctx)                  \
+       FN(perf_event_output, 25, ##ctx)                \
+       FN(skb_load_bytes, 26, ##ctx)                   \
+       FN(get_stackid, 27, ##ctx)                      \
+       FN(csum_diff, 28, ##ctx)                        \
+       FN(skb_get_tunnel_opt, 29, ##ctx)               \
+       FN(skb_set_tunnel_opt, 30, ##ctx)               \
+       FN(skb_change_proto, 31, ##ctx)                 \
+       FN(skb_change_type, 32, ##ctx)                  \
+       FN(skb_under_cgroup, 33, ##ctx)                 \
+       FN(get_hash_recalc, 34, ##ctx)                  \
+       FN(get_current_task, 35, ##ctx)                 \
+       FN(probe_write_user, 36, ##ctx)                 \
+       FN(current_task_under_cgroup, 37, ##ctx)        \
+       FN(skb_change_tail, 38, ##ctx)                  \
+       FN(skb_pull_data, 39, ##ctx)                    \
+       FN(csum_update, 40, ##ctx)                      \
+       FN(set_hash_invalid, 41, ##ctx)                 \
+       FN(get_numa_node_id, 42, ##ctx)                 \
+       FN(skb_change_head, 43, ##ctx)                  \
+       FN(xdp_adjust_head, 44, ##ctx)                  \
+       FN(probe_read_str, 45, ##ctx)                   \
+       FN(get_socket_cookie, 46, ##ctx)                \
+       FN(get_socket_uid, 47, ##ctx)                   \
+       FN(set_hash, 48, ##ctx)                         \
+       FN(setsockopt, 49, ##ctx)                       \
+       FN(skb_adjust_room, 50, ##ctx)                  \
+       FN(redirect_map, 51, ##ctx)                     \
+       FN(sk_redirect_map, 52, ##ctx)                  \
+       FN(sock_map_update, 53, ##ctx)                  \
+       FN(xdp_adjust_meta, 54, ##ctx)                  \
+       FN(perf_event_read_value, 55, ##ctx)            \
+       FN(perf_prog_read_value, 56, ##ctx)             \
+       FN(getsockopt, 57, ##ctx)                       \
+       FN(override_return, 58, ##ctx)                  \
+       FN(sock_ops_cb_flags_set, 59, ##ctx)            \
+       FN(msg_redirect_map, 60, ##ctx)                 \
+       FN(msg_apply_bytes, 61, ##ctx)                  \
+       FN(msg_cork_bytes, 62, ##ctx)                   \
+       FN(msg_pull_data, 63, ##ctx)                    \
+       FN(bind, 64, ##ctx)                             \
+       FN(xdp_adjust_tail, 65, ##ctx)                  \
+       FN(skb_get_xfrm_state, 66, ##ctx)               \
+       FN(get_stack, 67, ##ctx)                        \
+       FN(skb_load_bytes_relative, 68, ##ctx)          \
+       FN(fib_lookup, 69, ##ctx)                       \
+       FN(sock_hash_update, 70, ##ctx)                 \
+       FN(msg_redirect_hash, 71, ##ctx)                \
+       FN(sk_redirect_hash, 72, ##ctx)                 \
+       FN(lwt_push_encap, 73, ##ctx)                   \
+       FN(lwt_seg6_store_bytes, 74, ##ctx)             \
+       FN(lwt_seg6_adjust_srh, 75, ##ctx)              \
+       FN(lwt_seg6_action, 76, ##ctx)                  \
+       FN(rc_repeat, 77, ##ctx)                        \
+       FN(rc_keydown, 78, ##ctx)                       \
+       FN(skb_cgroup_id, 79, ##ctx)                    \
+       FN(get_current_cgroup_id, 80, ##ctx)            \
+       FN(get_local_storage, 81, ##ctx)                \
+       FN(sk_select_reuseport, 82, ##ctx)              \
+       FN(skb_ancestor_cgroup_id, 83, ##ctx)           \
+       FN(sk_lookup_tcp, 84, ##ctx)                    \
+       FN(sk_lookup_udp, 85, ##ctx)                    \
+       FN(sk_release, 86, ##ctx)                       \
+       FN(map_push_elem, 87, ##ctx)                    \
+       FN(map_pop_elem, 88, ##ctx)                     \
+       FN(map_peek_elem, 89, ##ctx)                    \
+       FN(msg_push_data, 90, ##ctx)                    \
+       FN(msg_pop_data, 91, ##ctx)                     \
+       FN(rc_pointer_rel, 92, ##ctx)                   \
+       FN(spin_lock, 93, ##ctx)                        \
+       FN(spin_unlock, 94, ##ctx)                      \
+       FN(sk_fullsock, 95, ##ctx)                      \
+       FN(tcp_sock, 96, ##ctx)                         \
+       FN(skb_ecn_set_ce, 97, ##ctx)                   \
+       FN(get_listener_sock, 98, ##ctx)                \
+       FN(skc_lookup_tcp, 99, ##ctx)                   \
+       FN(tcp_check_syncookie, 100, ##ctx)             \
+       FN(sysctl_get_name, 101, ##ctx)                 \
+       FN(sysctl_get_current_value, 102, ##ctx)        \
+       FN(sysctl_get_new_value, 103, ##ctx)            \
+       FN(sysctl_set_new_value, 104, ##ctx)            \
+       FN(strtol, 105, ##ctx)                          \
+       FN(strtoul, 106, ##ctx)                         \
+       FN(sk_storage_get, 107, ##ctx)                  \
+       FN(sk_storage_delete, 108, ##ctx)               \
+       FN(send_signal, 109, ##ctx)                     \
+       FN(tcp_gen_syncookie, 110, ##ctx)               \
+       FN(skb_output, 111, ##ctx)                      \
+       FN(probe_read_user, 112, ##ctx)                 \
+       FN(probe_read_kernel, 113, ##ctx)               \
+       FN(probe_read_user_str, 114, ##ctx)             \
+       FN(probe_read_kernel_str, 115, ##ctx)           \
+       FN(tcp_send_ack, 116, ##ctx)                    \
+       FN(send_signal_thread, 117, ##ctx)              \
+       FN(jiffies64, 118, ##ctx)                       \
+       FN(read_branch_records, 119, ##ctx)             \
+       FN(get_ns_current_pid_tgid, 120, ##ctx)         \
+       FN(xdp_output, 121, ##ctx)                      \
+       FN(get_netns_cookie, 122, ##ctx)                \
+       FN(get_current_ancestor_cgroup_id, 123, ##ctx)  \
+       FN(sk_assign, 124, ##ctx)                       \
+       FN(ktime_get_boot_ns, 125, ##ctx)               \
+       FN(seq_printf, 126, ##ctx)                      \
+       FN(seq_write, 127, ##ctx)                       \
+       FN(sk_cgroup_id, 128, ##ctx)                    \
+       FN(sk_ancestor_cgroup_id, 129, ##ctx)           \
+       FN(ringbuf_output, 130, ##ctx)                  \
+       FN(ringbuf_reserve, 131, ##ctx)                 \
+       FN(ringbuf_submit, 132, ##ctx)                  \
+       FN(ringbuf_discard, 133, ##ctx)                 \
+       FN(ringbuf_query, 134, ##ctx)                   \
+       FN(csum_level, 135, ##ctx)                      \
+       FN(skc_to_tcp6_sock, 136, ##ctx)                \
+       FN(skc_to_tcp_sock, 137, ##ctx)                 \
+       FN(skc_to_tcp_timewait_sock, 138, ##ctx)        \
+       FN(skc_to_tcp_request_sock, 139, ##ctx)         \
+       FN(skc_to_udp6_sock, 140, ##ctx)                \
+       FN(get_task_stack, 141, ##ctx)                  \
+       FN(load_hdr_opt, 142, ##ctx)                    \
+       FN(store_hdr_opt, 143, ##ctx)                   \
+       FN(reserve_hdr_opt, 144, ##ctx)                 \
+       FN(inode_storage_get, 145, ##ctx)               \
+       FN(inode_storage_delete, 146, ##ctx)            \
+       FN(d_path, 147, ##ctx)                          \
+       FN(copy_from_user, 148, ##ctx)                  \
+       FN(snprintf_btf, 149, ##ctx)                    \
+       FN(seq_printf_btf, 150, ##ctx)                  \
+       FN(skb_cgroup_classid, 151, ##ctx)              \
+       FN(redirect_neigh, 152, ##ctx)                  \
+       FN(per_cpu_ptr, 153, ##ctx)                     \
+       FN(this_cpu_ptr, 154, ##ctx)                    \
+       FN(redirect_peer, 155, ##ctx)                   \
+       FN(task_storage_get, 156, ##ctx)                \
+       FN(task_storage_delete, 157, ##ctx)             \
+       FN(get_current_task_btf, 158, ##ctx)            \
+       FN(bprm_opts_set, 159, ##ctx)                   \
+       FN(ktime_get_coarse_ns, 160, ##ctx)             \
+       FN(ima_inode_hash, 161, ##ctx)                  \
+       FN(sock_from_file, 162, ##ctx)                  \
+       FN(check_mtu, 163, ##ctx)                       \
+       FN(for_each_map_elem, 164, ##ctx)               \
+       FN(snprintf, 165, ##ctx)                        \
+       FN(sys_bpf, 166, ##ctx)                         \
+       FN(btf_find_by_name_kind, 167, ##ctx)           \
+       FN(sys_close, 168, ##ctx)                       \
+       FN(timer_init, 169, ##ctx)                      \
+       FN(timer_set_callback, 170, ##ctx)              \
+       FN(timer_start, 171, ##ctx)                     \
+       FN(timer_cancel, 172, ##ctx)                    \
+       FN(get_func_ip, 173, ##ctx)                     \
+       FN(get_attach_cookie, 174, ##ctx)               \
+       FN(task_pt_regs, 175, ##ctx)                    \
+       FN(get_branch_snapshot, 176, ##ctx)             \
+       FN(trace_vprintk, 177, ##ctx)                   \
+       FN(skc_to_unix_sock, 178, ##ctx)                \
+       FN(kallsyms_lookup_name, 179, ##ctx)            \
+       FN(find_vma, 180, ##ctx)                        \
+       FN(loop, 181, ##ctx)                            \
+       FN(strncmp, 182, ##ctx)                         \
+       FN(get_func_arg, 183, ##ctx)                    \
+       FN(get_func_ret, 184, ##ctx)                    \
+       FN(get_func_arg_cnt, 185, ##ctx)                \
+       FN(get_retval, 186, ##ctx)                      \
+       FN(set_retval, 187, ##ctx)                      \
+       FN(xdp_get_buff_len, 188, ##ctx)                \
+       FN(xdp_load_bytes, 189, ##ctx)                  \
+       FN(xdp_store_bytes, 190, ##ctx)                 \
+       FN(copy_from_user_task, 191, ##ctx)             \
+       FN(skb_set_tstamp, 192, ##ctx)                  \
+       FN(ima_file_hash, 193, ##ctx)                   \
+       FN(kptr_xchg, 194, ##ctx)                       \
+       FN(map_lookup_percpu_elem, 195, ##ctx)          \
+       FN(skc_to_mptcp_sock, 196, ##ctx)               \
+       FN(dynptr_from_mem, 197, ##ctx)                 \
+       FN(ringbuf_reserve_dynptr, 198, ##ctx)          \
+       FN(ringbuf_submit_dynptr, 199, ##ctx)           \
+       FN(ringbuf_discard_dynptr, 200, ##ctx)          \
+       FN(dynptr_read, 201, ##ctx)                     \
+       FN(dynptr_write, 202, ##ctx)                    \
+       FN(dynptr_data, 203, ##ctx)                     \
+       FN(tcp_raw_gen_syncookie_ipv4, 204, ##ctx)      \
+       FN(tcp_raw_gen_syncookie_ipv6, 205, ##ctx)      \
+       FN(tcp_raw_check_syncookie_ipv4, 206, ##ctx)    \
+       FN(tcp_raw_check_syncookie_ipv6, 207, ##ctx)    \
+       FN(ktime_get_tai_ns, 208, ##ctx)                \
+       FN(user_ringbuf_drain, 209, ##ctx)              \
+       FN(cgrp_storage_get, 210, ##ctx)                \
+       FN(cgrp_storage_delete, 211, ##ctx)             \
        /* */
 
+/* backwards-compatibility macros for users of __BPF_FUNC_MAPPER that don't
+ * know or care about integer value that is now passed as second argument
+ */
+#define __BPF_FUNC_MAPPER_APPLY(name, value, FN) FN(name),
+#define __BPF_FUNC_MAPPER(FN) ___BPF_FUNC_MAPPER(__BPF_FUNC_MAPPER_APPLY, FN)
+
 /* integer value in 'imm' field of BPF_CALL instruction selects which helper
  * function eBPF program intends to call
  */
-#define __BPF_ENUM_FN(x) BPF_FUNC_ ## x
+#define __BPF_ENUM_FN(x, y) BPF_FUNC_ ## x = y,
 enum bpf_func_id {
-       __BPF_FUNC_MAPPER(__BPF_ENUM_FN)
+       ___BPF_FUNC_MAPPER(__BPF_ENUM_FN)
        __BPF_FUNC_MAX_ID,
 };
 #undef __BPF_ENUM_FN
@@ -6218,6 +6322,10 @@ struct bpf_link_info {
                                        __u64 cgroup_id;
                                        __u32 order;
                                } cgroup;
+                               struct {
+                                       __u32 tid;
+                                       __u32 pid;
+                               } task;
                        };
                } iter;
                struct  {
index a791a94013a69a61c310e65d8e4ed21bb0d5139e..99047223ab2661620563a9b95c76c7ede95bb8d9 100644 (file)
@@ -218,6 +218,9 @@ struct cee_pfc {
 #define IEEE_8021QAZ_APP_SEL_ANY       4
 #define IEEE_8021QAZ_APP_SEL_DSCP       5
 
+/* Non-std selector values */
+#define DCB_APP_SEL_PCP 255
+
 /* This structure contains the IEEE 802.1Qaz APP managed object. This
  * object is also used for the CEE std as well.
  *
@@ -247,6 +250,8 @@ struct dcb_app {
        __u16   protocol;
 };
 
+#define IEEE_8021QAZ_APP_SEL_MAX 255
+
 /**
  * struct dcb_peer_app_info - APP feature information sent by the peer
  *
@@ -405,6 +410,7 @@ enum dcbnl_attrs {
  * @DCB_ATTR_IEEE_PEER_ETS: peer ETS configuration - get only
  * @DCB_ATTR_IEEE_PEER_PFC: peer PFC configuration - get only
  * @DCB_ATTR_IEEE_PEER_APP: peer APP tlv - get only
+ * @DCB_ATTR_DCB_APP_TRUST_TABLE: selector trust table
  */
 enum ieee_attrs {
        DCB_ATTR_IEEE_UNSPEC,
@@ -418,6 +424,7 @@ enum ieee_attrs {
        DCB_ATTR_IEEE_QCN,
        DCB_ATTR_IEEE_QCN_STATS,
        DCB_ATTR_DCB_BUFFER,
+       DCB_ATTR_DCB_APP_TRUST_TABLE,
        __DCB_ATTR_IEEE_MAX
 };
 #define DCB_ATTR_IEEE_MAX (__DCB_ATTR_IEEE_MAX - 1)
@@ -425,6 +432,7 @@ enum ieee_attrs {
 enum ieee_attrs_app {
        DCB_ATTR_IEEE_APP_UNSPEC,
        DCB_ATTR_IEEE_APP,
+       DCB_ATTR_DCB_APP,
        __DCB_ATTR_IEEE_APP_MAX
 };
 #define DCB_ATTR_IEEE_APP_MAX (__DCB_ATTR_IEEE_APP_MAX - 1)
index 153fcb9617f8b9882b64e6575534b3ba267e7e70..147ad0a39d3b984d177d587a3d92ef59baee8e82 100644 (file)
@@ -372,6 +372,8 @@ enum {
        IFLA_TSO_MAX_SEGS,
        IFLA_ALLMULTI,          /* Allmulti count: > 0 means acts ALLMULTI */
 
+       IFLA_DEVLINK_PORT,
+
        __IFLA_MAX
 };
 
@@ -559,6 +561,7 @@ enum {
        IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT,
        IFLA_BRPORT_MCAST_EHT_HOSTS_CNT,
        IFLA_BRPORT_LOCKED,
+       IFLA_BRPORT_MAB,
        __IFLA_BRPORT_MAX
 };
 #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
index c07caf7b40db6eb71f613c8824c0ce3de05c3504..a8516b3594a4478ca4d65fcc32902279cbbff351 100644 (file)
@@ -70,6 +70,7 @@ struct sockaddr_ll {
 #define PACKET_FANOUT_EBPF             7
 #define PACKET_FANOUT_FLAG_ROLLOVER    0x1000
 #define PACKET_FANOUT_FLAG_UNIQUEID    0x2000
+#define PACKET_FANOUT_FLAG_IGNORE_OUTGOING     0x4000
 #define PACKET_FANOUT_FLAG_DEFRAG      0x8000
 
 struct tpacket_stats {
index a998bf7616356be779fb655c0dee4e2ce7389144..5e67a7eaf4a7e9ba4ac1f080a74f67c5fca27da2 100644 (file)
@@ -52,7 +52,8 @@ enum {
 #define NTF_STICKY     (1 << 6)
 #define NTF_ROUTER     (1 << 7)
 /* Extended flags under NDA_FLAGS_EXT: */
-#define NTF_EXT_MANAGED        (1 << 0)
+#define NTF_EXT_MANAGED                (1 << 0)
+#define NTF_EXT_LOCKED         (1 << 1)
 
 /*
  *     Neighbor Cache Entry States.
@@ -86,6 +87,11 @@ enum {
  * NTF_EXT_MANAGED flagged neigbor entries are managed by the kernel on behalf
  * of a user space control plane, and automatically refreshed so that (if
  * possible) they remain in NUD_REACHABLE state.
+ *
+ * NTF_EXT_LOCKED flagged bridge FDB entries are entries generated by the
+ * bridge in response to a host trying to communicate via a locked bridge port
+ * with MAB enabled. Their purpose is to notify user space that a host requires
+ * authentication.
  */
 
 struct nda_cacheinfo {
index 47bac97ec76b3dbc9a30b434123ce90028fc981c..8b0d9ed28f3bedfa2ab56678e51bb303a0bf652e 100644 (file)
@@ -48,6 +48,7 @@ struct sockaddr_nl {
  * @nlmsg_flags: Additional flags
  * @nlmsg_seq:   Sequence number
  * @nlmsg_pid:   Sending process port ID
+ * @nlmsg_data:  Message payload
  */
 struct nlmsghdr {
        __u32           nlmsg_len;
@@ -55,6 +56,7 @@ struct nlmsghdr {
        __u16           nlmsg_flags;
        __u32           nlmsg_seq;
        __u32           nlmsg_pid;
+       __u8            nlmsg_data[];
 };
 
 /* Flags values */
index 4d7470036a8b5be598bd21367f60854b023cceef..6600cb0164c2beb6f140beaa0bd4ea44e9443b0c 100644 (file)
@@ -292,6 +292,7 @@ enum
        LINUX_MIB_TCPDSACKIGNOREDDUBIOUS,       /* TCPDSACKIgnoredDubious */
        LINUX_MIB_TCPMIGRATEREQSUCCESS,         /* TCPMigrateReqSuccess */
        LINUX_MIB_TCPMIGRATEREQFAILURE,         /* TCPMigrateReqFailure */
+       LINUX_MIB_TCPPLBREHASH,                 /* TCPPLBRehash */
        __LINUX_MIB_MAX
 };
 
index a206627884fc881b2b3c0fe40f61794a5a439d7f..4ee5d7721c6fcf076eb05486a4c433b73db603e4 100644 (file)
@@ -284,6 +284,11 @@ struct tcp_info {
        __u32   tcpi_snd_wnd;        /* peer's advertised receive window after
                                      * scaling (bytes)
                                      */
+       __u32   tcpi_rcv_wnd;        /* local advertised receive window after
+                                     * scaling (bytes)
+                                     */
+
+       __u32   tcpi_rehash;         /* PLB or timeout triggered rehash attempts */
 };
 
 /* netlink attributes types for SCM_TIMESTAMPING_OPT_STATS */
@@ -315,6 +320,7 @@ enum {
        TCP_NLA_BYTES_NOTSENT,  /* Bytes in write queue not yet sent */
        TCP_NLA_EDT,            /* Earliest departure time (CLOCK_MONOTONIC) */
        TCP_NLA_TTL,            /* TTL or hop limit of a packet received */
+       TCP_NLA_REHASH,         /* PLB and timeout triggered rehash attempts */
 };
 
 /* for TCP_MD5SIG socket option */