]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
uapi: update kernel headers main
authorStephen Hemminger <stephen@networkplumber.org>
Tue, 5 Aug 2025 17:47:01 +0000 (10:47 -0700)
committerStephen Hemminger <stephen@networkplumber.org>
Tue, 5 Aug 2025 17:47:01 +0000 (10:47 -0700)
Add net_shaper.h and updates to bpf.h and capability.h

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
include/uapi/linux/bpf.h
include/uapi/linux/capability.h
include/uapi/linux/net_shaper.h [new file with mode: 0644]

index 78c03b12d556b42faed773375de9d875e266cdbe..936bb1c94c820552a7011328ba2246396dfcdea6 100644 (file)
@@ -450,6 +450,7 @@ union bpf_iter_link_info {
  *             * **struct bpf_map_info**
  *             * **struct bpf_btf_info**
  *             * **struct bpf_link_info**
+ *             * **struct bpf_token_info**
  *
  *     Return
  *             Returns zero on success. On error, -1 is returned and *errno*
@@ -906,6 +907,17 @@ union bpf_iter_link_info {
  *             A new file descriptor (a nonnegative integer), or -1 if an
  *             error occurred (in which case, *errno* is set appropriately).
  *
+ * BPF_PROG_STREAM_READ_BY_FD
+ *     Description
+ *             Read data of a program's BPF stream. The program is identified
+ *             by *prog_fd*, and the stream is identified by the *stream_id*.
+ *             The data is copied to a buffer pointed to by *stream_buf*, and
+ *             filled less than or equal to *stream_buf_len* bytes.
+ *
+ *     Return
+ *             Number of bytes read from the stream on success, or -1 if an
+ *             error occurred (in which case, *errno* is set appropriately).
+ *
  * NOTES
  *     eBPF objects (maps and programs) can be shared between processes.
  *
@@ -961,6 +973,7 @@ enum bpf_cmd {
        BPF_LINK_DETACH,
        BPF_PROG_BIND_MAP,
        BPF_TOKEN_CREATE,
+       BPF_PROG_STREAM_READ_BY_FD,
        __MAX_BPF_CMD,
 };
 
@@ -1463,6 +1476,11 @@ struct bpf_stack_build_id {
 
 #define BPF_OBJ_NAME_LEN 16U
 
+enum {
+       BPF_STREAM_STDOUT = 1,
+       BPF_STREAM_STDERR = 2,
+};
+
 union bpf_attr {
        struct { /* anonymous struct used by BPF_MAP_CREATE command */
                __u32   map_type;       /* one of enum bpf_map_type */
@@ -1794,6 +1812,13 @@ union bpf_attr {
                                };
                                __u64           expected_revision;
                        } netkit;
+                       struct {
+                               union {
+                                       __u32   relative_fd;
+                                       __u32   relative_id;
+                               };
+                               __u64           expected_revision;
+                       } cgroup;
                };
        } link_create;
 
@@ -1842,6 +1867,13 @@ union bpf_attr {
                __u32           bpffs_fd;
        } token_create;
 
+       struct {
+               __aligned_u64   stream_buf;
+               __u32           stream_buf_len;
+               __u32           stream_id;
+               __u32           prog_fd;
+       } prog_stream_read;
+
 } __attribute__((aligned(8)));
 
 /* The description below is an attempt at providing documentation to eBPF
@@ -2403,7 +2435,7 @@ union bpf_attr {
  *             into it. An example is available in file
  *             *samples/bpf/trace_output_user.c* in the Linux kernel source
  *             tree (the eBPF program counterpart is in
- *             *samples/bpf/trace_output_kern.c*).
+ *             *samples/bpf/trace_output.bpf.c*).
  *
  *             **bpf_perf_event_output**\ () achieves better performance
  *             than **bpf_trace_printk**\ () for sharing data with user
@@ -6653,11 +6685,15 @@ struct bpf_link_info {
                struct {
                        __aligned_u64 tp_name; /* in/out: tp_name buffer ptr */
                        __u32 tp_name_len;     /* in/out: tp_name buffer len */
+                       __u32 :32;
+                       __u64 cookie;
                } raw_tracepoint;
                struct {
                        __u32 attach_type;
                        __u32 target_obj_id; /* prog_id for PROG_EXT, otherwise btf object id */
                        __u32 target_btf_id; /* BTF type id inside the object */
+                       __u32 :32;
+                       __u64 cookie;
                } tracing;
                struct {
                        __u64 cgroup_id;
@@ -6768,6 +6804,13 @@ struct bpf_link_info {
        };
 } __attribute__((aligned(8)));
 
+struct bpf_token_info {
+       __u64 allowed_cmds;
+       __u64 allowed_maps;
+       __u64 allowed_progs;
+       __u64 allowed_attachs;
+} __attribute__((aligned(8)));
+
 /* User bpf_sock_addr struct to access socket fields and sockaddr struct passed
  * by user and intended to be used by socket (e.g. to bind to, depends on
  * attach type).
index ccab337dfe71058dd775f946cf5dce9cf2ccc7a1..60fd34309de01c518f1de2d384ea4cf09525b29f 100644 (file)
@@ -6,9 +6,10 @@
  * Alexander Kjeldaas <astor@guardian.no>
  * with help from Aleph1, Roland Buresund and Andrew Main.
  *
- * See here for the libcap library ("POSIX draft" compliance):
+ * See here for the libcap2 library (compliant with Section 25 of
+ * the withdrawn POSIX 1003.1e Draft 17):
  *
- * ftp://www.kernel.org/pub/linux/libs/security/linux-privs/kernel-2.6/
+ * https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/
  */
 
 #ifndef _LINUX_CAPABILITY_H
diff --git a/include/uapi/linux/net_shaper.h b/include/uapi/linux/net_shaper.h
new file mode 100644 (file)
index 0000000..0531291
--- /dev/null
@@ -0,0 +1,95 @@
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
+/* Do not edit directly, auto-generated from: */
+/*     Documentation/netlink/specs/net_shaper.yaml */
+/* YNL-GEN uapi header */
+
+#ifndef _LINUX_NET_SHAPER_H
+#define _LINUX_NET_SHAPER_H
+
+#define NET_SHAPER_FAMILY_NAME         "net-shaper"
+#define NET_SHAPER_FAMILY_VERSION      1
+
+/**
+ * enum net_shaper_scope - Defines the shaper @id interpretation.
+ * @NET_SHAPER_SCOPE_UNSPEC: The scope is not specified.
+ * @NET_SHAPER_SCOPE_NETDEV: The main shaper for the given network device.
+ * @NET_SHAPER_SCOPE_QUEUE: The shaper is attached to the given device queue,
+ *   the @id represents the queue number.
+ * @NET_SHAPER_SCOPE_NODE: The shaper allows grouping of queues or other node
+ *   shapers; can be nested in either @netdev shapers or other @node shapers,
+ *   allowing placement in any location of the scheduling tree, except leaves
+ *   and root.
+ */
+enum net_shaper_scope {
+       NET_SHAPER_SCOPE_UNSPEC,
+       NET_SHAPER_SCOPE_NETDEV,
+       NET_SHAPER_SCOPE_QUEUE,
+       NET_SHAPER_SCOPE_NODE,
+
+       /* private: */
+       __NET_SHAPER_SCOPE_MAX,
+       NET_SHAPER_SCOPE_MAX = (__NET_SHAPER_SCOPE_MAX - 1)
+};
+
+/**
+ * enum net_shaper_metric - Different metric supported by the shaper.
+ * @NET_SHAPER_METRIC_BPS: Shaper operates on a bits per second basis.
+ * @NET_SHAPER_METRIC_PPS: Shaper operates on a packets per second basis.
+ */
+enum net_shaper_metric {
+       NET_SHAPER_METRIC_BPS,
+       NET_SHAPER_METRIC_PPS,
+};
+
+enum {
+       NET_SHAPER_A_HANDLE = 1,
+       NET_SHAPER_A_METRIC,
+       NET_SHAPER_A_BW_MIN,
+       NET_SHAPER_A_BW_MAX,
+       NET_SHAPER_A_BURST,
+       NET_SHAPER_A_PRIORITY,
+       NET_SHAPER_A_WEIGHT,
+       NET_SHAPER_A_IFINDEX,
+       NET_SHAPER_A_PARENT,
+       NET_SHAPER_A_LEAVES,
+
+       __NET_SHAPER_A_MAX,
+       NET_SHAPER_A_MAX = (__NET_SHAPER_A_MAX - 1)
+};
+
+enum {
+       NET_SHAPER_A_HANDLE_SCOPE = 1,
+       NET_SHAPER_A_HANDLE_ID,
+
+       __NET_SHAPER_A_HANDLE_MAX,
+       NET_SHAPER_A_HANDLE_MAX = (__NET_SHAPER_A_HANDLE_MAX - 1)
+};
+
+enum {
+       NET_SHAPER_A_CAPS_IFINDEX = 1,
+       NET_SHAPER_A_CAPS_SCOPE,
+       NET_SHAPER_A_CAPS_SUPPORT_METRIC_BPS,
+       NET_SHAPER_A_CAPS_SUPPORT_METRIC_PPS,
+       NET_SHAPER_A_CAPS_SUPPORT_NESTING,
+       NET_SHAPER_A_CAPS_SUPPORT_BW_MIN,
+       NET_SHAPER_A_CAPS_SUPPORT_BW_MAX,
+       NET_SHAPER_A_CAPS_SUPPORT_BURST,
+       NET_SHAPER_A_CAPS_SUPPORT_PRIORITY,
+       NET_SHAPER_A_CAPS_SUPPORT_WEIGHT,
+
+       __NET_SHAPER_A_CAPS_MAX,
+       NET_SHAPER_A_CAPS_MAX = (__NET_SHAPER_A_CAPS_MAX - 1)
+};
+
+enum {
+       NET_SHAPER_CMD_GET = 1,
+       NET_SHAPER_CMD_SET,
+       NET_SHAPER_CMD_DELETE,
+       NET_SHAPER_CMD_GROUP,
+       NET_SHAPER_CMD_CAP_GET,
+
+       __NET_SHAPER_CMD_MAX,
+       NET_SHAPER_CMD_MAX = (__NET_SHAPER_CMD_MAX - 1)
+};
+
+#endif /* _LINUX_NET_SHAPER_H */