mirror of
https://github.com/systemd/systemd.git
synced 2025-02-03 17:47:28 +03:00
basic/linux: update kernel headers from v6.10-rc3
This also - merges basic/linux and shared/linux, - moves BPF_JUMP_A() to basic/missing_bpf.h, - copies from usrspace kernel headers directory generated by 'make headers', rather than copying from kernel tree, - copies const.h into our tree to reduce change in ethtool.h, - copies auto_fs.h into our tree to reduce change in auto_dev-ioctl.h.
This commit is contained in:
parent
c7dd491d66
commit
0cced2948f
@ -1,8 +1,6 @@
|
||||
The files in this directory are copied from current kernel master
|
||||
(b06ed1e7a2fa9b636f368a9e97c3c8877623f8b2) or WireGuard master
|
||||
(8416093498ac2c754536dad4757c5d86c9ba8809), and the following
|
||||
modifications are applied:
|
||||
- btrfs.h: drop '__user' attributes
|
||||
- if.h: drop '#include <linux/compiler.h>' and '__user' attributes
|
||||
- stddef.h: drop '#include <linux/compiler_types.h>'
|
||||
- guard linux/fs.h include to avoid conflict with glibc 2.36
|
||||
The headers in this directory are from kernel v6.10-rc1 (1613e604df0cd359cf2a7fbd9be7a0bcfacfabd0),
|
||||
and the following modifications are applied:
|
||||
- auto_dev-ioctl.h: set AUTOFS_DEV_IOCTL_VERSION_MINOR to 0
|
||||
- btrfs.h: guard linux/fs.h include to avoid conflict with glibc 2.36
|
||||
- dm-ioctl.h: set DM_VERSION_MINOR to 27
|
||||
- ethtool.h: add casts in ethtool_cmd_speed()
|
||||
|
@ -157,10 +157,6 @@ enum {
|
||||
AUTOFS_DEV_IOCTL_ISMOUNTPOINT_CMD,
|
||||
};
|
||||
|
||||
#ifndef AUTOFS_IOCTL
|
||||
#define AUTOFS_IOCTL 0x93
|
||||
#endif
|
||||
|
||||
#define AUTOFS_DEV_IOCTL_VERSION \
|
||||
_IOWR(AUTOFS_IOCTL, \
|
||||
AUTOFS_DEV_IOCTL_VERSION_CMD, struct autofs_dev_ioctl)
|
229
src/basic/linux/auto_fs.h
Normal file
229
src/basic/linux/auto_fs.h
Normal file
@ -0,0 +1,229 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
|
||||
/*
|
||||
* Copyright 1997 Transmeta Corporation - All Rights Reserved
|
||||
* Copyright 1999-2000 Jeremy Fitzhardinge <jeremy@goop.org>
|
||||
* Copyright 2005-2006,2013,2017-2018 Ian Kent <raven@themaw.net>
|
||||
*
|
||||
* This file is part of the Linux kernel and is made available under
|
||||
* the terms of the GNU General Public License, version 2, or at your
|
||||
* option, any later version, incorporated herein by reference.
|
||||
*
|
||||
* ----------------------------------------------------------------------- */
|
||||
|
||||
#ifndef _LINUX_AUTO_FS_H
|
||||
#define _LINUX_AUTO_FS_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/limits.h>
|
||||
#include <sys/ioctl.h>
|
||||
|
||||
#define AUTOFS_PROTO_VERSION 5
|
||||
#define AUTOFS_MIN_PROTO_VERSION 3
|
||||
#define AUTOFS_MAX_PROTO_VERSION 5
|
||||
|
||||
#define AUTOFS_PROTO_SUBVERSION 5
|
||||
|
||||
/*
|
||||
* The wait_queue_token (autofs_wqt_t) is part of a structure which is passed
|
||||
* back to the kernel via ioctl from userspace. On architectures where 32- and
|
||||
* 64-bit userspace binaries can be executed it's important that the size of
|
||||
* autofs_wqt_t stays constant between 32- and 64-bit Linux kernels so that we
|
||||
* do not break the binary ABI interface by changing the structure size.
|
||||
*/
|
||||
#if defined(__ia64__) || defined(__alpha__) /* pure 64bit architectures */
|
||||
typedef unsigned long autofs_wqt_t;
|
||||
#else
|
||||
typedef unsigned int autofs_wqt_t;
|
||||
#endif
|
||||
|
||||
/* Packet types */
|
||||
#define autofs_ptype_missing 0 /* Missing entry (mount request) */
|
||||
#define autofs_ptype_expire 1 /* Expire entry (umount request) */
|
||||
|
||||
struct autofs_packet_hdr {
|
||||
int proto_version; /* Protocol version */
|
||||
int type; /* Type of packet */
|
||||
};
|
||||
|
||||
struct autofs_packet_missing {
|
||||
struct autofs_packet_hdr hdr;
|
||||
autofs_wqt_t wait_queue_token;
|
||||
int len;
|
||||
char name[NAME_MAX+1];
|
||||
};
|
||||
|
||||
/* v3 expire (via ioctl) */
|
||||
struct autofs_packet_expire {
|
||||
struct autofs_packet_hdr hdr;
|
||||
int len;
|
||||
char name[NAME_MAX+1];
|
||||
};
|
||||
|
||||
#define AUTOFS_IOCTL 0x93
|
||||
|
||||
enum {
|
||||
AUTOFS_IOC_READY_CMD = 0x60,
|
||||
AUTOFS_IOC_FAIL_CMD,
|
||||
AUTOFS_IOC_CATATONIC_CMD,
|
||||
AUTOFS_IOC_PROTOVER_CMD,
|
||||
AUTOFS_IOC_SETTIMEOUT_CMD,
|
||||
AUTOFS_IOC_EXPIRE_CMD,
|
||||
};
|
||||
|
||||
#define AUTOFS_IOC_READY _IO(AUTOFS_IOCTL, AUTOFS_IOC_READY_CMD)
|
||||
#define AUTOFS_IOC_FAIL _IO(AUTOFS_IOCTL, AUTOFS_IOC_FAIL_CMD)
|
||||
#define AUTOFS_IOC_CATATONIC _IO(AUTOFS_IOCTL, AUTOFS_IOC_CATATONIC_CMD)
|
||||
#define AUTOFS_IOC_PROTOVER _IOR(AUTOFS_IOCTL, \
|
||||
AUTOFS_IOC_PROTOVER_CMD, int)
|
||||
#define AUTOFS_IOC_SETTIMEOUT32 _IOWR(AUTOFS_IOCTL, \
|
||||
AUTOFS_IOC_SETTIMEOUT_CMD, \
|
||||
compat_ulong_t)
|
||||
#define AUTOFS_IOC_SETTIMEOUT _IOWR(AUTOFS_IOCTL, \
|
||||
AUTOFS_IOC_SETTIMEOUT_CMD, \
|
||||
unsigned long)
|
||||
#define AUTOFS_IOC_EXPIRE _IOR(AUTOFS_IOCTL, \
|
||||
AUTOFS_IOC_EXPIRE_CMD, \
|
||||
struct autofs_packet_expire)
|
||||
|
||||
/* autofs version 4 and later definitions */
|
||||
|
||||
/* Mask for expire behaviour */
|
||||
#define AUTOFS_EXP_NORMAL 0x00
|
||||
#define AUTOFS_EXP_IMMEDIATE 0x01
|
||||
#define AUTOFS_EXP_LEAVES 0x02
|
||||
#define AUTOFS_EXP_FORCED 0x04
|
||||
|
||||
#define AUTOFS_TYPE_ANY 0U
|
||||
#define AUTOFS_TYPE_INDIRECT 1U
|
||||
#define AUTOFS_TYPE_DIRECT 2U
|
||||
#define AUTOFS_TYPE_OFFSET 4U
|
||||
|
||||
static __inline__ void set_autofs_type_indirect(unsigned int *type)
|
||||
{
|
||||
*type = AUTOFS_TYPE_INDIRECT;
|
||||
}
|
||||
|
||||
static __inline__ unsigned int autofs_type_indirect(unsigned int type)
|
||||
{
|
||||
return (type == AUTOFS_TYPE_INDIRECT);
|
||||
}
|
||||
|
||||
static __inline__ void set_autofs_type_direct(unsigned int *type)
|
||||
{
|
||||
*type = AUTOFS_TYPE_DIRECT;
|
||||
}
|
||||
|
||||
static __inline__ unsigned int autofs_type_direct(unsigned int type)
|
||||
{
|
||||
return (type == AUTOFS_TYPE_DIRECT);
|
||||
}
|
||||
|
||||
static __inline__ void set_autofs_type_offset(unsigned int *type)
|
||||
{
|
||||
*type = AUTOFS_TYPE_OFFSET;
|
||||
}
|
||||
|
||||
static __inline__ unsigned int autofs_type_offset(unsigned int type)
|
||||
{
|
||||
return (type == AUTOFS_TYPE_OFFSET);
|
||||
}
|
||||
|
||||
static __inline__ unsigned int autofs_type_trigger(unsigned int type)
|
||||
{
|
||||
return (type == AUTOFS_TYPE_DIRECT || type == AUTOFS_TYPE_OFFSET);
|
||||
}
|
||||
|
||||
/*
|
||||
* This isn't really a type as we use it to say "no type set" to
|
||||
* indicate we want to search for "any" mount in the
|
||||
* autofs_dev_ioctl_ismountpoint() device ioctl function.
|
||||
*/
|
||||
static __inline__ void set_autofs_type_any(unsigned int *type)
|
||||
{
|
||||
*type = AUTOFS_TYPE_ANY;
|
||||
}
|
||||
|
||||
static __inline__ unsigned int autofs_type_any(unsigned int type)
|
||||
{
|
||||
return (type == AUTOFS_TYPE_ANY);
|
||||
}
|
||||
|
||||
/* Daemon notification packet types */
|
||||
enum autofs_notify {
|
||||
NFY_NONE,
|
||||
NFY_MOUNT,
|
||||
NFY_EXPIRE
|
||||
};
|
||||
|
||||
/* Kernel protocol version 4 packet types */
|
||||
|
||||
/* Expire entry (umount request) */
|
||||
#define autofs_ptype_expire_multi 2
|
||||
|
||||
/* Kernel protocol version 5 packet types */
|
||||
|
||||
/* Indirect mount missing and expire requests. */
|
||||
#define autofs_ptype_missing_indirect 3
|
||||
#define autofs_ptype_expire_indirect 4
|
||||
|
||||
/* Direct mount missing and expire requests */
|
||||
#define autofs_ptype_missing_direct 5
|
||||
#define autofs_ptype_expire_direct 6
|
||||
|
||||
/* v4 multi expire (via pipe) */
|
||||
struct autofs_packet_expire_multi {
|
||||
struct autofs_packet_hdr hdr;
|
||||
autofs_wqt_t wait_queue_token;
|
||||
int len;
|
||||
char name[NAME_MAX+1];
|
||||
};
|
||||
|
||||
union autofs_packet_union {
|
||||
struct autofs_packet_hdr hdr;
|
||||
struct autofs_packet_missing missing;
|
||||
struct autofs_packet_expire expire;
|
||||
struct autofs_packet_expire_multi expire_multi;
|
||||
};
|
||||
|
||||
/* autofs v5 common packet struct */
|
||||
struct autofs_v5_packet {
|
||||
struct autofs_packet_hdr hdr;
|
||||
autofs_wqt_t wait_queue_token;
|
||||
__u32 dev;
|
||||
__u64 ino;
|
||||
__u32 uid;
|
||||
__u32 gid;
|
||||
__u32 pid;
|
||||
__u32 tgid;
|
||||
__u32 len;
|
||||
char name[NAME_MAX+1];
|
||||
};
|
||||
|
||||
typedef struct autofs_v5_packet autofs_packet_missing_indirect_t;
|
||||
typedef struct autofs_v5_packet autofs_packet_expire_indirect_t;
|
||||
typedef struct autofs_v5_packet autofs_packet_missing_direct_t;
|
||||
typedef struct autofs_v5_packet autofs_packet_expire_direct_t;
|
||||
|
||||
union autofs_v5_packet_union {
|
||||
struct autofs_packet_hdr hdr;
|
||||
struct autofs_v5_packet v5_packet;
|
||||
autofs_packet_missing_indirect_t missing_indirect;
|
||||
autofs_packet_expire_indirect_t expire_indirect;
|
||||
autofs_packet_missing_direct_t missing_direct;
|
||||
autofs_packet_expire_direct_t expire_direct;
|
||||
};
|
||||
|
||||
enum {
|
||||
AUTOFS_IOC_EXPIRE_MULTI_CMD = 0x66, /* AUTOFS_IOC_EXPIRE_CMD + 1 */
|
||||
AUTOFS_IOC_PROTOSUBVER_CMD,
|
||||
AUTOFS_IOC_ASKUMOUNT_CMD = 0x70, /* AUTOFS_DEV_IOCTL_VERSION_CMD - 1 */
|
||||
};
|
||||
|
||||
#define AUTOFS_IOC_EXPIRE_MULTI _IOW(AUTOFS_IOCTL, \
|
||||
AUTOFS_IOC_EXPIRE_MULTI_CMD, int)
|
||||
#define AUTOFS_IOC_PROTOSUBVER _IOR(AUTOFS_IOCTL, \
|
||||
AUTOFS_IOC_PROTOSUBVER_CMD, int)
|
||||
#define AUTOFS_IOC_ASKUMOUNT _IOR(AUTOFS_IOCTL, \
|
||||
AUTOFS_IOC_ASKUMOUNT_CMD, int)
|
||||
|
||||
#endif /* _LINUX_AUTO_FS_H */
|
@ -4,8 +4,8 @@
|
||||
* Matthias Schiffer
|
||||
*/
|
||||
|
||||
#ifndef _UAPI_LINUX_BATMAN_ADV_H_
|
||||
#define _UAPI_LINUX_BATMAN_ADV_H_
|
||||
#ifndef _LINUX_BATMAN_ADV_H_
|
||||
#define _LINUX_BATMAN_ADV_H_
|
||||
|
||||
#define BATADV_NL_NAME "batadv"
|
||||
|
||||
@ -701,4 +701,4 @@ enum batadv_ifla_attrs {
|
||||
|
||||
#define IFLA_BATADV_MAX (__IFLA_BATADV_MAX - 1)
|
||||
|
||||
#endif /* _UAPI_LINUX_BATMAN_ADV_H_ */
|
||||
#endif /* _LINUX_BATMAN_ADV_H_ */
|
||||
|
@ -19,6 +19,7 @@
|
||||
|
||||
/* ld/ldx fields */
|
||||
#define BPF_DW 0x18 /* double word (64-bit) */
|
||||
#define BPF_MEMSX 0x80 /* load with sign extension */
|
||||
#define BPF_ATOMIC 0xc0 /* atomic memory ops - op type in immediate */
|
||||
#define BPF_XADD 0xc0 /* exclusive add - legacy name */
|
||||
|
||||
@ -41,6 +42,7 @@
|
||||
#define BPF_JSGE 0x70 /* SGE is signed '>=', GE in x86 */
|
||||
#define BPF_JSLT 0xc0 /* SLT is signed, '<' */
|
||||
#define BPF_JSLE 0xd0 /* SLE is signed, '<=' */
|
||||
#define BPF_JCOND 0xe0 /* conditional pseudo jumps: may_goto, goto_or_nop */
|
||||
#define BPF_CALL 0x80 /* function call */
|
||||
#define BPF_EXIT 0x90 /* function return */
|
||||
|
||||
@ -49,6 +51,10 @@
|
||||
#define BPF_XCHG (0xe0 | BPF_FETCH) /* atomic exchange */
|
||||
#define BPF_CMPXCHG (0xf0 | BPF_FETCH) /* atomic compare-and-write */
|
||||
|
||||
enum bpf_cond_pseudo_jmp {
|
||||
BPF_MAY_GOTO = 0,
|
||||
};
|
||||
|
||||
/* Register numbers */
|
||||
enum {
|
||||
BPF_REG_0 = 0,
|
||||
@ -76,12 +82,29 @@ struct bpf_insn {
|
||||
__s32 imm; /* signed immediate constant */
|
||||
};
|
||||
|
||||
/* Key of an a BPF_MAP_TYPE_LPM_TRIE entry */
|
||||
/* Deprecated: use struct bpf_lpm_trie_key_u8 (when the "data" member is needed for
|
||||
* byte access) or struct bpf_lpm_trie_key_hdr (when using an alternative type for
|
||||
* the trailing flexible array member) instead.
|
||||
*/
|
||||
struct bpf_lpm_trie_key {
|
||||
__u32 prefixlen; /* up to 32 for AF_INET, 128 for AF_INET6 */
|
||||
__u8 data[0]; /* Arbitrary size */
|
||||
};
|
||||
|
||||
/* Header for bpf_lpm_trie_key structs */
|
||||
struct bpf_lpm_trie_key_hdr {
|
||||
__u32 prefixlen;
|
||||
};
|
||||
|
||||
/* Key of an a BPF_MAP_TYPE_LPM_TRIE entry, with trailing byte array. */
|
||||
struct bpf_lpm_trie_key_u8 {
|
||||
union {
|
||||
struct bpf_lpm_trie_key_hdr hdr;
|
||||
__u32 prefixlen;
|
||||
};
|
||||
__u8 data[]; /* Arbitrary size */
|
||||
};
|
||||
|
||||
struct bpf_cgroup_storage_key {
|
||||
__u64 cgroup_inode_id; /* cgroup inode id */
|
||||
__u32 attach_type; /* program attach type (enum bpf_attach_type) */
|
||||
@ -616,7 +639,11 @@ union bpf_iter_link_info {
|
||||
* to NULL to begin the batched operation. After each subsequent
|
||||
* **BPF_MAP_LOOKUP_BATCH**, the caller should pass the resultant
|
||||
* *out_batch* as the *in_batch* for the next operation to
|
||||
* continue iteration from the current point.
|
||||
* continue iteration from the current point. Both *in_batch* and
|
||||
* *out_batch* must point to memory large enough to hold a key,
|
||||
* except for maps of type **BPF_MAP_TYPE_{HASH, PERCPU_HASH,
|
||||
* LRU_HASH, LRU_PERCPU_HASH}**, for which batch parameters
|
||||
* must be at least 4 bytes wide regardless of key size.
|
||||
*
|
||||
* The *keys* and *values* are output parameters which must point
|
||||
* to memory large enough to hold *count* items based on the key
|
||||
@ -846,6 +873,36 @@ union bpf_iter_link_info {
|
||||
* Returns zero on success. On error, -1 is returned and *errno*
|
||||
* is set appropriately.
|
||||
*
|
||||
* BPF_TOKEN_CREATE
|
||||
* Description
|
||||
* Create BPF token with embedded information about what
|
||||
* BPF-related functionality it allows:
|
||||
* - a set of allowed bpf() syscall commands;
|
||||
* - a set of allowed BPF map types to be created with
|
||||
* BPF_MAP_CREATE command, if BPF_MAP_CREATE itself is allowed;
|
||||
* - a set of allowed BPF program types and BPF program attach
|
||||
* types to be loaded with BPF_PROG_LOAD command, if
|
||||
* BPF_PROG_LOAD itself is allowed.
|
||||
*
|
||||
* BPF token is created (derived) from an instance of BPF FS,
|
||||
* assuming it has necessary delegation mount options specified.
|
||||
* This BPF token can be passed as an extra parameter to various
|
||||
* bpf() syscall commands to grant BPF subsystem functionality to
|
||||
* unprivileged processes.
|
||||
*
|
||||
* When created, BPF token is "associated" with the owning
|
||||
* user namespace of BPF FS instance (super block) that it was
|
||||
* derived from, and subsequent BPF operations performed with
|
||||
* BPF token would be performing capabilities checks (i.e.,
|
||||
* CAP_BPF, CAP_PERFMON, CAP_NET_ADMIN, CAP_SYS_ADMIN) within
|
||||
* that user namespace. Without BPF token, such capabilities
|
||||
* have to be granted in init user namespace, making bpf()
|
||||
* syscall incompatible with user namespace, for the most part.
|
||||
*
|
||||
* Return
|
||||
* A new file descriptor (a nonnegative integer), or -1 if an
|
||||
* error occurred (in which case, *errno* is set appropriately).
|
||||
*
|
||||
* NOTES
|
||||
* eBPF objects (maps and programs) can be shared between processes.
|
||||
*
|
||||
@ -900,6 +957,8 @@ enum bpf_cmd {
|
||||
BPF_ITER_CREATE,
|
||||
BPF_LINK_DETACH,
|
||||
BPF_PROG_BIND_MAP,
|
||||
BPF_TOKEN_CREATE,
|
||||
__MAX_BPF_CMD,
|
||||
};
|
||||
|
||||
enum bpf_map_type {
|
||||
@ -931,7 +990,14 @@ enum bpf_map_type {
|
||||
*/
|
||||
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_PERCPU_CGROUP_STORAGE_DEPRECATED,
|
||||
/* BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE is available to bpf programs
|
||||
* attaching to a cgroup. The new mechanism (BPF_MAP_TYPE_CGRP_STORAGE +
|
||||
* local percpu kptr) supports all BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE
|
||||
* functionality and more. So mark * BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE
|
||||
* deprecated.
|
||||
*/
|
||||
BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE_DEPRECATED,
|
||||
BPF_MAP_TYPE_QUEUE,
|
||||
BPF_MAP_TYPE_STACK,
|
||||
BPF_MAP_TYPE_SK_STORAGE,
|
||||
@ -943,6 +1009,8 @@ enum bpf_map_type {
|
||||
BPF_MAP_TYPE_BLOOM_FILTER,
|
||||
BPF_MAP_TYPE_USER_RINGBUF,
|
||||
BPF_MAP_TYPE_CGRP_STORAGE,
|
||||
BPF_MAP_TYPE_ARENA,
|
||||
__MAX_BPF_MAP_TYPE
|
||||
};
|
||||
|
||||
/* Note that tracing related programs such as
|
||||
@ -986,6 +1054,8 @@ enum bpf_prog_type {
|
||||
BPF_PROG_TYPE_LSM,
|
||||
BPF_PROG_TYPE_SK_LOOKUP,
|
||||
BPF_PROG_TYPE_SYSCALL, /* a program that can execute syscalls */
|
||||
BPF_PROG_TYPE_NETFILTER,
|
||||
__MAX_BPF_PROG_TYPE
|
||||
};
|
||||
|
||||
enum bpf_attach_type {
|
||||
@ -1033,6 +1103,19 @@ enum bpf_attach_type {
|
||||
BPF_PERF_EVENT,
|
||||
BPF_TRACE_KPROBE_MULTI,
|
||||
BPF_LSM_CGROUP,
|
||||
BPF_STRUCT_OPS,
|
||||
BPF_NETFILTER,
|
||||
BPF_TCX_INGRESS,
|
||||
BPF_TCX_EGRESS,
|
||||
BPF_TRACE_UPROBE_MULTI,
|
||||
BPF_CGROUP_UNIX_CONNECT,
|
||||
BPF_CGROUP_UNIX_SENDMSG,
|
||||
BPF_CGROUP_UNIX_RECVMSG,
|
||||
BPF_CGROUP_UNIX_GETPEERNAME,
|
||||
BPF_CGROUP_UNIX_GETSOCKNAME,
|
||||
BPF_NETKIT_PRIMARY,
|
||||
BPF_NETKIT_PEER,
|
||||
BPF_TRACE_KPROBE_SESSION,
|
||||
__MAX_BPF_ATTACH_TYPE
|
||||
};
|
||||
|
||||
@ -1049,8 +1132,24 @@ enum bpf_link_type {
|
||||
BPF_LINK_TYPE_PERF_EVENT = 7,
|
||||
BPF_LINK_TYPE_KPROBE_MULTI = 8,
|
||||
BPF_LINK_TYPE_STRUCT_OPS = 9,
|
||||
BPF_LINK_TYPE_NETFILTER = 10,
|
||||
BPF_LINK_TYPE_TCX = 11,
|
||||
BPF_LINK_TYPE_UPROBE_MULTI = 12,
|
||||
BPF_LINK_TYPE_NETKIT = 13,
|
||||
BPF_LINK_TYPE_SOCKMAP = 14,
|
||||
__MAX_BPF_LINK_TYPE,
|
||||
};
|
||||
|
||||
MAX_BPF_LINK_TYPE,
|
||||
#define MAX_BPF_LINK_TYPE __MAX_BPF_LINK_TYPE
|
||||
|
||||
enum bpf_perf_event_type {
|
||||
BPF_PERF_EVENT_UNSPEC = 0,
|
||||
BPF_PERF_EVENT_UPROBE = 1,
|
||||
BPF_PERF_EVENT_URETPROBE = 2,
|
||||
BPF_PERF_EVENT_KPROBE = 3,
|
||||
BPF_PERF_EVENT_KRETPROBE = 4,
|
||||
BPF_PERF_EVENT_TRACEPOINT = 5,
|
||||
BPF_PERF_EVENT_EVENT = 6,
|
||||
};
|
||||
|
||||
/* cgroup-bpf attach flags used in BPF_PROG_ATTACH command
|
||||
@ -1099,7 +1198,12 @@ enum bpf_link_type {
|
||||
*/
|
||||
#define BPF_F_ALLOW_OVERRIDE (1U << 0)
|
||||
#define BPF_F_ALLOW_MULTI (1U << 1)
|
||||
/* Generic attachment flags. */
|
||||
#define BPF_F_REPLACE (1U << 2)
|
||||
#define BPF_F_BEFORE (1U << 3)
|
||||
#define BPF_F_AFTER (1U << 4)
|
||||
#define BPF_F_ID (1U << 5)
|
||||
#define BPF_F_LINK BPF_F_LINK /* 1 << 13 */
|
||||
|
||||
/* If BPF_F_STRICT_ALIGNMENT is used in BPF_PROG_LOAD command, the
|
||||
* verifier will perform strict alignment checking as if the kernel
|
||||
@ -1108,7 +1212,7 @@ enum bpf_link_type {
|
||||
*/
|
||||
#define BPF_F_STRICT_ALIGNMENT (1U << 0)
|
||||
|
||||
/* If BPF_F_ANY_ALIGNMENT is used in BPF_PROF_LOAD command, the
|
||||
/* If BPF_F_ANY_ALIGNMENT is used in BPF_PROG_LOAD command, the
|
||||
* verifier will allow any alignment whatsoever. On platforms
|
||||
* with strict alignment requirements for loads ands stores (such
|
||||
* as sparc and mips) the verifier validates that all loads and
|
||||
@ -1156,10 +1260,32 @@ enum bpf_link_type {
|
||||
*/
|
||||
#define BPF_F_XDP_HAS_FRAGS (1U << 5)
|
||||
|
||||
/* If BPF_F_XDP_DEV_BOUND_ONLY is used in BPF_PROG_LOAD command, the loaded
|
||||
* program becomes device-bound but can access XDP metadata.
|
||||
*/
|
||||
#define BPF_F_XDP_DEV_BOUND_ONLY (1U << 6)
|
||||
|
||||
/* The verifier internal test flag. Behavior is undefined */
|
||||
#define BPF_F_TEST_REG_INVARIANTS (1U << 7)
|
||||
|
||||
/* link_create.kprobe_multi.flags used in LINK_CREATE command for
|
||||
* BPF_TRACE_KPROBE_MULTI attach type to create return probe.
|
||||
*/
|
||||
#define BPF_F_KPROBE_MULTI_RETURN (1U << 0)
|
||||
enum {
|
||||
BPF_F_KPROBE_MULTI_RETURN = (1U << 0)
|
||||
};
|
||||
|
||||
/* link_create.uprobe_multi.flags used in LINK_CREATE command for
|
||||
* BPF_TRACE_UPROBE_MULTI attach type to create return probe.
|
||||
*/
|
||||
enum {
|
||||
BPF_F_UPROBE_MULTI_RETURN = (1U << 0)
|
||||
};
|
||||
|
||||
/* link_create.netfilter.flags used in LINK_CREATE command for
|
||||
* BPF_PROG_TYPE_NETFILTER to enable IP packet defragmentation.
|
||||
*/
|
||||
#define BPF_F_NETFILTER_IP_DEFRAG (1U << 0)
|
||||
|
||||
/* When BPF ldimm64's insn[0].src_reg != 0 then this can have
|
||||
* the following extensions:
|
||||
@ -1215,6 +1341,10 @@ enum bpf_link_type {
|
||||
*/
|
||||
#define BPF_PSEUDO_KFUNC_CALL 2
|
||||
|
||||
enum bpf_addr_space_cast {
|
||||
BPF_ADDR_SPACE_CAST = 1,
|
||||
};
|
||||
|
||||
/* flags for BPF_MAP_UPDATE_ELEM command */
|
||||
enum {
|
||||
BPF_ANY = 0, /* create new element or update existing */
|
||||
@ -1261,6 +1391,24 @@ enum {
|
||||
|
||||
/* Create a map that is suitable to be an inner map with dynamic max entries */
|
||||
BPF_F_INNER_MAP = (1U << 12),
|
||||
|
||||
/* Create a map that will be registered/unregesitered by the backed bpf_link */
|
||||
BPF_F_LINK = (1U << 13),
|
||||
|
||||
/* Get path from provided FD in BPF_OBJ_PIN/BPF_OBJ_GET commands */
|
||||
BPF_F_PATH_FD = (1U << 14),
|
||||
|
||||
/* Flag for value_type_btf_obj_fd, the fd is available */
|
||||
BPF_F_VTYPE_BTF_OBJ_FD = (1U << 15),
|
||||
|
||||
/* BPF token FD is passed in a corresponding command's token_fd field */
|
||||
BPF_F_TOKEN_FD = (1U << 16),
|
||||
|
||||
/* When user space page faults in bpf_arena send SIGSEGV instead of inserting new page */
|
||||
BPF_F_SEGV_ON_FAULT = (1U << 17),
|
||||
|
||||
/* Do not translate kernel bpf_arena pointers to user pointers */
|
||||
BPF_F_NO_USER_CONV = (1U << 18),
|
||||
};
|
||||
|
||||
/* Flags for BPF_PROG_QUERY. */
|
||||
@ -1332,8 +1480,20 @@ union bpf_attr {
|
||||
* BPF_MAP_TYPE_BLOOM_FILTER - the lowest 4 bits indicate the
|
||||
* number of hash functions (if 0, the bloom filter will default
|
||||
* to using 5 hash functions).
|
||||
*
|
||||
* BPF_MAP_TYPE_ARENA - contains the address where user space
|
||||
* is going to mmap() the arena. It has to be page aligned.
|
||||
*/
|
||||
__u64 map_extra;
|
||||
|
||||
__s32 value_type_btf_obj_fd; /* fd pointing to a BTF
|
||||
* type data for
|
||||
* btf_vmlinux_value_type_id.
|
||||
*/
|
||||
/* BPF token FD to use with BPF_MAP_CREATE operation.
|
||||
* If provided, map_flags should have BPF_F_TOKEN_FD flag set.
|
||||
*/
|
||||
__s32 map_token_fd;
|
||||
};
|
||||
|
||||
struct { /* anonymous struct used by BPF_MAP_*_ELEM commands */
|
||||
@ -1398,23 +1558,44 @@ union bpf_attr {
|
||||
__aligned_u64 fd_array; /* array of FDs */
|
||||
__aligned_u64 core_relos;
|
||||
__u32 core_relo_rec_size; /* sizeof(struct bpf_core_relo) */
|
||||
/* output: actual total log contents size (including termintaing zero).
|
||||
* It could be both larger than original log_size (if log was
|
||||
* truncated), or smaller (if log buffer wasn't filled completely).
|
||||
*/
|
||||
__u32 log_true_size;
|
||||
/* BPF token FD to use with BPF_PROG_LOAD operation.
|
||||
* If provided, prog_flags should have BPF_F_TOKEN_FD flag set.
|
||||
*/
|
||||
__s32 prog_token_fd;
|
||||
};
|
||||
|
||||
struct { /* anonymous struct used by BPF_OBJ_* commands */
|
||||
__aligned_u64 pathname;
|
||||
__u32 bpf_fd;
|
||||
__u32 file_flags;
|
||||
/* Same as dirfd in openat() syscall; see openat(2)
|
||||
* manpage for details of path FD and pathname semantics;
|
||||
* path_fd should accompanied by BPF_F_PATH_FD flag set in
|
||||
* file_flags field, otherwise it should be set to zero;
|
||||
* if BPF_F_PATH_FD flag is not set, AT_FDCWD is assumed.
|
||||
*/
|
||||
__s32 path_fd;
|
||||
};
|
||||
|
||||
struct { /* anonymous struct used by BPF_PROG_ATTACH/DETACH commands */
|
||||
__u32 target_fd; /* container object to attach to */
|
||||
__u32 attach_bpf_fd; /* eBPF program to attach */
|
||||
union {
|
||||
__u32 target_fd; /* target object to attach to or ... */
|
||||
__u32 target_ifindex; /* target ifindex */
|
||||
};
|
||||
__u32 attach_bpf_fd;
|
||||
__u32 attach_type;
|
||||
__u32 attach_flags;
|
||||
__u32 replace_bpf_fd; /* previously attached eBPF
|
||||
* program to replace if
|
||||
* BPF_F_REPLACE is used
|
||||
*/
|
||||
__u32 replace_bpf_fd;
|
||||
union {
|
||||
__u32 relative_fd;
|
||||
__u32 relative_id;
|
||||
};
|
||||
__u64 expected_revision;
|
||||
};
|
||||
|
||||
struct { /* anonymous struct used by BPF_PROG_TEST_RUN command */
|
||||
@ -1460,21 +1641,33 @@ union bpf_attr {
|
||||
} info;
|
||||
|
||||
struct { /* anonymous struct used by BPF_PROG_QUERY command */
|
||||
__u32 target_fd; /* container object to query */
|
||||
union {
|
||||
__u32 target_fd; /* target object to query or ... */
|
||||
__u32 target_ifindex; /* target ifindex */
|
||||
};
|
||||
__u32 attach_type;
|
||||
__u32 query_flags;
|
||||
__u32 attach_flags;
|
||||
__aligned_u64 prog_ids;
|
||||
__u32 prog_cnt;
|
||||
union {
|
||||
__u32 prog_cnt;
|
||||
__u32 count;
|
||||
};
|
||||
__u32 :32;
|
||||
/* output: per-program attach_flags.
|
||||
* not allowed to be set during effective query.
|
||||
*/
|
||||
__aligned_u64 prog_attach_flags;
|
||||
__aligned_u64 link_ids;
|
||||
__aligned_u64 link_attach_flags;
|
||||
__u64 revision;
|
||||
} query;
|
||||
|
||||
struct { /* anonymous struct used by BPF_RAW_TRACEPOINT_OPEN command */
|
||||
__u64 name;
|
||||
__u32 prog_fd;
|
||||
__u64 name;
|
||||
__u32 prog_fd;
|
||||
__u32 :32;
|
||||
__aligned_u64 cookie;
|
||||
} raw_tracepoint;
|
||||
|
||||
struct { /* anonymous struct for BPF_BTF_LOAD */
|
||||
@ -1483,6 +1676,16 @@ union bpf_attr {
|
||||
__u32 btf_size;
|
||||
__u32 btf_log_size;
|
||||
__u32 btf_log_level;
|
||||
/* output: actual total log contents size (including termintaing zero).
|
||||
* It could be both larger than original log_size (if log was
|
||||
* truncated), or smaller (if log buffer wasn't filled completely).
|
||||
*/
|
||||
__u32 btf_log_true_size;
|
||||
__u32 btf_flags;
|
||||
/* BPF token FD to use with BPF_BTF_LOAD operation.
|
||||
* If provided, btf_flags should have BPF_F_TOKEN_FD flag set.
|
||||
*/
|
||||
__s32 btf_token_fd;
|
||||
};
|
||||
|
||||
struct {
|
||||
@ -1502,15 +1705,18 @@ union bpf_attr {
|
||||
} task_fd_query;
|
||||
|
||||
struct { /* struct used by BPF_LINK_CREATE command */
|
||||
__u32 prog_fd; /* eBPF program to attach */
|
||||
union {
|
||||
__u32 target_fd; /* object to attach to */
|
||||
__u32 target_ifindex; /* target ifindex */
|
||||
__u32 prog_fd; /* eBPF program to attach */
|
||||
__u32 map_fd; /* struct_ops to attach */
|
||||
};
|
||||
union {
|
||||
__u32 target_fd; /* target object to attach to or ... */
|
||||
__u32 target_ifindex; /* target ifindex */
|
||||
};
|
||||
__u32 attach_type; /* attach type */
|
||||
__u32 flags; /* extra flags */
|
||||
union {
|
||||
__u32 target_btf_id; /* btf_id of target to attach to */
|
||||
__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 */
|
||||
@ -1538,17 +1744,57 @@ union bpf_attr {
|
||||
*/
|
||||
__u64 cookie;
|
||||
} tracing;
|
||||
struct {
|
||||
__u32 pf;
|
||||
__u32 hooknum;
|
||||
__s32 priority;
|
||||
__u32 flags;
|
||||
} netfilter;
|
||||
struct {
|
||||
union {
|
||||
__u32 relative_fd;
|
||||
__u32 relative_id;
|
||||
};
|
||||
__u64 expected_revision;
|
||||
} tcx;
|
||||
struct {
|
||||
__aligned_u64 path;
|
||||
__aligned_u64 offsets;
|
||||
__aligned_u64 ref_ctr_offsets;
|
||||
__aligned_u64 cookies;
|
||||
__u32 cnt;
|
||||
__u32 flags;
|
||||
__u32 pid;
|
||||
} uprobe_multi;
|
||||
struct {
|
||||
union {
|
||||
__u32 relative_fd;
|
||||
__u32 relative_id;
|
||||
};
|
||||
__u64 expected_revision;
|
||||
} netkit;
|
||||
};
|
||||
} link_create;
|
||||
|
||||
struct { /* struct used by BPF_LINK_UPDATE command */
|
||||
__u32 link_fd; /* link fd */
|
||||
/* new program fd to update link with */
|
||||
__u32 new_prog_fd;
|
||||
union {
|
||||
/* new program fd to update link with */
|
||||
__u32 new_prog_fd;
|
||||
/* new struct_ops map fd to update link with */
|
||||
__u32 new_map_fd;
|
||||
};
|
||||
__u32 flags; /* extra flags */
|
||||
/* expected link's program fd; is specified only if
|
||||
* BPF_F_REPLACE flag is set in flags */
|
||||
__u32 old_prog_fd;
|
||||
union {
|
||||
/* expected link's program fd; is specified only if
|
||||
* BPF_F_REPLACE flag is set in flags.
|
||||
*/
|
||||
__u32 old_prog_fd;
|
||||
/* expected link's map fd; is specified only
|
||||
* if BPF_F_REPLACE flag is set.
|
||||
*/
|
||||
__u32 old_map_fd;
|
||||
};
|
||||
} link_update;
|
||||
|
||||
struct {
|
||||
@ -1570,6 +1816,11 @@ union bpf_attr {
|
||||
__u32 flags; /* extra flags */
|
||||
} prog_bind_map;
|
||||
|
||||
struct { /* struct used by BPF_TOKEN_CREATE command */
|
||||
__u32 flags;
|
||||
__u32 bpffs_fd;
|
||||
} token_create;
|
||||
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
/* The description below is an attempt at providing documentation to eBPF
|
||||
@ -1642,17 +1893,17 @@ union bpf_attr {
|
||||
* Description
|
||||
* This helper is a "printk()-like" facility for debugging. It
|
||||
* prints a message defined by format *fmt* (of size *fmt_size*)
|
||||
* to file *\/sys/kernel/debug/tracing/trace* from DebugFS, if
|
||||
* to file *\/sys/kernel/tracing/trace* from TraceFS, if
|
||||
* available. It can take up to three additional **u64**
|
||||
* arguments (as an eBPF helpers, the total number of arguments is
|
||||
* limited to five).
|
||||
*
|
||||
* Each time the helper is called, it appends a line to the trace.
|
||||
* Lines are discarded while *\/sys/kernel/debug/tracing/trace* is
|
||||
* open, use *\/sys/kernel/debug/tracing/trace_pipe* to avoid this.
|
||||
* Lines are discarded while *\/sys/kernel/tracing/trace* is
|
||||
* open, use *\/sys/kernel/tracing/trace_pipe* to avoid this.
|
||||
* The format of the trace is customizable, and the exact output
|
||||
* one will get depends on the options set in
|
||||
* *\/sys/kernel/debug/tracing/trace_options* (see also the
|
||||
* *\/sys/kernel/tracing/trace_options* (see also the
|
||||
* *README* file under the same directory). However, it usually
|
||||
* defaults to something like:
|
||||
*
|
||||
@ -1845,7 +2096,9 @@ union bpf_attr {
|
||||
* performed again, if the helper is used in combination with
|
||||
* direct packet access.
|
||||
* Return
|
||||
* 0 on success, or a negative error in case of failure.
|
||||
* 0 on success, or a negative error in case of failure. Positive
|
||||
* error indicates a potential drop or congestion in the target
|
||||
* device. The particular positive error codes are not defined.
|
||||
*
|
||||
* u64 bpf_get_current_pid_tgid(void)
|
||||
* Description
|
||||
@ -2001,6 +2254,9 @@ union bpf_attr {
|
||||
* sending the packet. This flag was added for GRE
|
||||
* encapsulation, but might be used with other protocols
|
||||
* as well in the future.
|
||||
* **BPF_F_NO_TUNNEL_KEY**
|
||||
* Add a flag to tunnel metadata indicating that no tunnel
|
||||
* key should be set in the resulting tunnel header.
|
||||
*
|
||||
* Here is a typical usage on the transmit path:
|
||||
*
|
||||
@ -2575,8 +2831,8 @@ union bpf_attr {
|
||||
* *bpf_socket* should be one of the following:
|
||||
*
|
||||
* * **struct bpf_sock_ops** for **BPF_PROG_TYPE_SOCK_OPS**.
|
||||
* * **struct bpf_sock_addr** for **BPF_CGROUP_INET4_CONNECT**
|
||||
* and **BPF_CGROUP_INET6_CONNECT**.
|
||||
* * **struct bpf_sock_addr** for **BPF_CGROUP_INET4_CONNECT**,
|
||||
* **BPF_CGROUP_INET6_CONNECT** and **BPF_CGROUP_UNIX_CONNECT**.
|
||||
*
|
||||
* This helper actually implements a subset of **setsockopt()**.
|
||||
* It supports the following *level*\ s:
|
||||
@ -2644,6 +2900,11 @@ union bpf_attr {
|
||||
* Use with BPF_F_ADJ_ROOM_ENCAP_L2 flag to further specify the
|
||||
* L2 type as Ethernet.
|
||||
*
|
||||
* * **BPF_F_ADJ_ROOM_DECAP_L3_IPV4**,
|
||||
* **BPF_F_ADJ_ROOM_DECAP_L3_IPV6**:
|
||||
* Indicate the new IP header version after decapsulating the outer
|
||||
* IP header. Used when the inner and outer IP versions are different.
|
||||
*
|
||||
* A call to this helper is susceptible to change the underlying
|
||||
* packet buffer. Therefore, at load time, all checks on pointers
|
||||
* previously done by the verifier are invalidated and must be
|
||||
@ -2788,7 +3049,7 @@ union bpf_attr {
|
||||
*
|
||||
* long bpf_perf_prog_read_value(struct bpf_perf_event_data *ctx, struct bpf_perf_event_value *buf, u32 buf_size)
|
||||
* Description
|
||||
* For en eBPF program attached to a perf event, retrieve the
|
||||
* For an eBPF program attached to a perf event, retrieve the
|
||||
* value of the event counter associated to *ctx* and store it in
|
||||
* the structure pointed by *buf* and of size *buf_size*. Enabled
|
||||
* and running times are also stored in the structure (see
|
||||
@ -2809,8 +3070,8 @@ union bpf_attr {
|
||||
* *bpf_socket* should be one of the following:
|
||||
*
|
||||
* * **struct bpf_sock_ops** for **BPF_PROG_TYPE_SOCK_OPS**.
|
||||
* * **struct bpf_sock_addr** for **BPF_CGROUP_INET4_CONNECT**
|
||||
* and **BPF_CGROUP_INET6_CONNECT**.
|
||||
* * **struct bpf_sock_addr** for **BPF_CGROUP_INET4_CONNECT**,
|
||||
* **BPF_CGROUP_INET6_CONNECT** and **BPF_CGROUP_UNIX_CONNECT**.
|
||||
*
|
||||
* This helper actually implements a subset of **getsockopt()**.
|
||||
* It supports the same set of *optname*\ s that is supported by
|
||||
@ -3118,9 +3379,27 @@ union bpf_attr {
|
||||
* **BPF_FIB_LOOKUP_DIRECT**
|
||||
* Do a direct table lookup vs full lookup using FIB
|
||||
* rules.
|
||||
* **BPF_FIB_LOOKUP_TBID**
|
||||
* Used with BPF_FIB_LOOKUP_DIRECT.
|
||||
* Use the routing table ID present in *params*->tbid
|
||||
* for the fib lookup.
|
||||
* **BPF_FIB_LOOKUP_OUTPUT**
|
||||
* Perform lookup from an egress perspective (default is
|
||||
* ingress).
|
||||
* **BPF_FIB_LOOKUP_SKIP_NEIGH**
|
||||
* Skip the neighbour table lookup. *params*->dmac
|
||||
* and *params*->smac will not be set as output. A common
|
||||
* use case is to call **bpf_redirect_neigh**\ () after
|
||||
* doing **bpf_fib_lookup**\ ().
|
||||
* **BPF_FIB_LOOKUP_SRC**
|
||||
* Derive and set source IP addr in *params*->ipv{4,6}_src
|
||||
* for the nexthop. If the src addr cannot be derived,
|
||||
* **BPF_FIB_LKUP_RET_NO_SRC_ADDR** is returned. In this
|
||||
* case, *params*->dmac and *params*->smac are not set either.
|
||||
* **BPF_FIB_LOOKUP_MARK**
|
||||
* Use the mark present in *params*->mark for the fib lookup.
|
||||
* This option should not be used with BPF_FIB_LOOKUP_DIRECT,
|
||||
* as it only has meaning for full lookups.
|
||||
*
|
||||
* *ctx* is either **struct xdp_md** for XDP programs or
|
||||
* **struct sk_buff** tc cls_act programs.
|
||||
@ -3972,7 +4251,7 @@ union bpf_attr {
|
||||
*
|
||||
* u64 bpf_jiffies64(void)
|
||||
* Description
|
||||
* Obtain the 64-bit jiffies
|
||||
* Obtain the 64bit jiffies
|
||||
* Return
|
||||
* The 64 bit jiffies
|
||||
*
|
||||
@ -4090,9 +4369,6 @@ union bpf_attr {
|
||||
* **-EOPNOTSUPP** if the operation is not supported, for example
|
||||
* a call from outside of TC ingress.
|
||||
*
|
||||
* **-ESOCKTNOSUPPORT** if the socket type is not supported
|
||||
* (reuseport).
|
||||
*
|
||||
* long bpf_sk_assign(struct bpf_sk_lookup *ctx, struct bpf_sock *sk, u64 flags)
|
||||
* Description
|
||||
* Helper is overloaded depending on BPF program type. This
|
||||
@ -4357,6 +4633,8 @@ union bpf_attr {
|
||||
* long bpf_get_task_stack(struct task_struct *task, void *buf, u32 size, u64 flags)
|
||||
* Description
|
||||
* Return a user or a kernel stack in bpf program provided buffer.
|
||||
* Note: the user stack will only be populated if the *task* is
|
||||
* the current task; all other tasks will return -EOPNOTSUPP.
|
||||
* To achieve this, the helper needs *task*, which is a valid
|
||||
* pointer to **struct task_struct**. To store the stacktrace, the
|
||||
* bpf program provides *buf* with a nonnegative *size*.
|
||||
@ -4368,6 +4646,7 @@ union bpf_attr {
|
||||
*
|
||||
* **BPF_F_USER_STACK**
|
||||
* Collect a user space stack instead of a kernel stack.
|
||||
* The *task* must be the current task.
|
||||
* **BPF_F_USER_BUILD_ID**
|
||||
* Collect buildid+offset instead of ips for user stack,
|
||||
* only valid if **BPF_F_USER_STACK** is also specified.
|
||||
@ -4671,9 +4950,9 @@ union bpf_attr {
|
||||
* going through the CPU's backlog queue.
|
||||
*
|
||||
* The *flags* argument is reserved and must be 0. The helper is
|
||||
* currently only supported for tc BPF program types at the ingress
|
||||
* hook and for veth device types. The peer device must reside in a
|
||||
* different network namespace.
|
||||
* currently only supported for tc BPF program types at the
|
||||
* ingress hook and for veth and netkit target device types. The
|
||||
* peer device must reside in a different network namespace.
|
||||
* Return
|
||||
* The helper returns **TC_ACT_REDIRECT** on success or
|
||||
* **TC_ACT_SHOT** on error.
|
||||
@ -4749,7 +5028,7 @@ union bpf_attr {
|
||||
* bytes will be copied to *dst*
|
||||
* Return
|
||||
* The **hash_algo** is returned on success,
|
||||
* **-EOPNOTSUP** if IMA is disabled or **-EINVAL** if
|
||||
* **-EOPNOTSUPP** if IMA is disabled or **-EINVAL** if
|
||||
* invalid arguments are passed.
|
||||
*
|
||||
* struct socket *bpf_sock_from_file(struct file *file)
|
||||
@ -4951,6 +5230,14 @@ union bpf_attr {
|
||||
* different maps if key/value layout matches across maps.
|
||||
* Every bpf_timer_set_callback() can have different callback_fn.
|
||||
*
|
||||
* *flags* can be one of:
|
||||
*
|
||||
* **BPF_F_TIMER_ABS**
|
||||
* Start the timer in absolute expire value instead of the
|
||||
* default relative one.
|
||||
* **BPF_F_TIMER_CPU_PIN**
|
||||
* Timer will be pinned to the CPU of the caller.
|
||||
*
|
||||
* Return
|
||||
* 0 on success.
|
||||
* **-EINVAL** if *timer* was not initialized with bpf_timer_init() earlier
|
||||
@ -4969,9 +5256,14 @@ union bpf_attr {
|
||||
* u64 bpf_get_func_ip(void *ctx)
|
||||
* Description
|
||||
* Get address of the traced function (for tracing and kprobe programs).
|
||||
*
|
||||
* When called for kprobe program attached as uprobe it returns
|
||||
* probe address for both entry and return uprobe.
|
||||
*
|
||||
* Return
|
||||
* Address of the traced function.
|
||||
* Address of the traced function for kprobe.
|
||||
* 0 for kprobes placed within the function (not at the entry).
|
||||
* Address of the probe for uprobe and return uprobe.
|
||||
*
|
||||
* u64 bpf_get_attach_cookie(void *ctx)
|
||||
* Description
|
||||
@ -5222,7 +5514,7 @@ union bpf_attr {
|
||||
* bytes will be copied to *dst*
|
||||
* Return
|
||||
* The **hash_algo** is returned on success,
|
||||
* **-EOPNOTSUP** if the hash calculation failed or **-EINVAL** if
|
||||
* **-EOPNOTSUPP** if the hash calculation failed or **-EINVAL** if
|
||||
* invalid arguments are passed.
|
||||
*
|
||||
* void *bpf_kptr_xchg(void *map_value, void *ptr)
|
||||
@ -5307,11 +5599,22 @@ union bpf_attr {
|
||||
* Description
|
||||
* Write *len* bytes from *src* into *dst*, starting from *offset*
|
||||
* into *dst*.
|
||||
* *flags* is currently unused.
|
||||
*
|
||||
* *flags* must be 0 except for skb-type dynptrs.
|
||||
*
|
||||
* For skb-type dynptrs:
|
||||
* * All data slices of the dynptr are automatically
|
||||
* invalidated after **bpf_dynptr_write**\ (). This is
|
||||
* because writing may pull the skb and change the
|
||||
* underlying packet buffer.
|
||||
*
|
||||
* * For *flags*, please see the flags accepted by
|
||||
* **bpf_skb_store_bytes**\ ().
|
||||
* Return
|
||||
* 0 on success, -E2BIG if *offset* + *len* exceeds the length
|
||||
* of *dst*'s data, -EINVAL if *dst* is an invalid dynptr or if *dst*
|
||||
* is a read-only dynptr or if *flags* is not 0.
|
||||
* is a read-only dynptr or if *flags* is not correct. For skb-type dynptrs,
|
||||
* other errors correspond to errors returned by **bpf_skb_store_bytes**\ ().
|
||||
*
|
||||
* void *bpf_dynptr_data(const struct bpf_dynptr *ptr, u32 offset, u32 len)
|
||||
* Description
|
||||
@ -5319,6 +5622,9 @@ union bpf_attr {
|
||||
*
|
||||
* *len* must be a statically known value. The returned data slice
|
||||
* is invalidated whenever the dynptr is invalidated.
|
||||
*
|
||||
* skb and xdp type dynptrs may not use bpf_dynptr_data. They should
|
||||
* instead use bpf_dynptr_slice and bpf_dynptr_slice_rdwr.
|
||||
* Return
|
||||
* Pointer to the underlying dynptr data, NULL if the dynptr is
|
||||
* read-only, if the dynptr is invalid, or if the offset and length
|
||||
@ -5764,6 +6070,7 @@ enum {
|
||||
BPF_F_ZERO_CSUM_TX = (1ULL << 1),
|
||||
BPF_F_DONT_FRAGMENT = (1ULL << 2),
|
||||
BPF_F_SEQ_NUMBER = (1ULL << 3),
|
||||
BPF_F_NO_TUNNEL_KEY = (1ULL << 4),
|
||||
};
|
||||
|
||||
/* BPF_FUNC_skb_get_tunnel_key flags. */
|
||||
@ -5803,6 +6110,8 @@ enum {
|
||||
BPF_F_ADJ_ROOM_ENCAP_L4_UDP = (1ULL << 4),
|
||||
BPF_F_ADJ_ROOM_NO_CSUM_RESET = (1ULL << 5),
|
||||
BPF_F_ADJ_ROOM_ENCAP_L2_ETH = (1ULL << 6),
|
||||
BPF_F_ADJ_ROOM_DECAP_L3_IPV4 = (1ULL << 7),
|
||||
BPF_F_ADJ_ROOM_DECAP_L3_IPV6 = (1ULL << 8),
|
||||
};
|
||||
|
||||
enum {
|
||||
@ -6095,6 +6404,19 @@ struct bpf_sock_tuple {
|
||||
};
|
||||
};
|
||||
|
||||
/* (Simplified) user return codes for tcx prog type.
|
||||
* A valid tcx program must return one of these defined values. All other
|
||||
* return codes are reserved for future use. Must remain compatible with
|
||||
* their TC_ACT_* counter-parts. For compatibility in behavior, unknown
|
||||
* return codes are mapped to TCX_NEXT.
|
||||
*/
|
||||
enum tcx_action_base {
|
||||
TCX_NEXT = -1,
|
||||
TCX_PASS = 0,
|
||||
TCX_DROP = 2,
|
||||
TCX_REDIRECT = 7,
|
||||
};
|
||||
|
||||
struct bpf_xdp_sock {
|
||||
__u32 queue_id;
|
||||
};
|
||||
@ -6276,7 +6598,7 @@ struct bpf_map_info {
|
||||
__u32 btf_id;
|
||||
__u32 btf_key_type_id;
|
||||
__u32 btf_value_type_id;
|
||||
__u32 :32; /* alignment pad */
|
||||
__u32 btf_vmlinux_id;
|
||||
__u64 map_extra;
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
@ -6338,6 +6660,76 @@ struct bpf_link_info {
|
||||
struct {
|
||||
__u32 ifindex;
|
||||
} xdp;
|
||||
struct {
|
||||
__u32 map_id;
|
||||
} struct_ops;
|
||||
struct {
|
||||
__u32 pf;
|
||||
__u32 hooknum;
|
||||
__s32 priority;
|
||||
__u32 flags;
|
||||
} netfilter;
|
||||
struct {
|
||||
__aligned_u64 addrs;
|
||||
__u32 count; /* in/out: kprobe_multi function count */
|
||||
__u32 flags;
|
||||
__u64 missed;
|
||||
__aligned_u64 cookies;
|
||||
} kprobe_multi;
|
||||
struct {
|
||||
__aligned_u64 path;
|
||||
__aligned_u64 offsets;
|
||||
__aligned_u64 ref_ctr_offsets;
|
||||
__aligned_u64 cookies;
|
||||
__u32 path_size; /* in/out: real path size on success, including zero byte */
|
||||
__u32 count; /* in/out: uprobe_multi offsets/ref_ctr_offsets/cookies count */
|
||||
__u32 flags;
|
||||
__u32 pid;
|
||||
} uprobe_multi;
|
||||
struct {
|
||||
__u32 type; /* enum bpf_perf_event_type */
|
||||
__u32 :32;
|
||||
union {
|
||||
struct {
|
||||
__aligned_u64 file_name; /* in/out */
|
||||
__u32 name_len;
|
||||
__u32 offset; /* offset from file_name */
|
||||
__u64 cookie;
|
||||
} uprobe; /* BPF_PERF_EVENT_UPROBE, BPF_PERF_EVENT_URETPROBE */
|
||||
struct {
|
||||
__aligned_u64 func_name; /* in/out */
|
||||
__u32 name_len;
|
||||
__u32 offset; /* offset from func_name */
|
||||
__u64 addr;
|
||||
__u64 missed;
|
||||
__u64 cookie;
|
||||
} kprobe; /* BPF_PERF_EVENT_KPROBE, BPF_PERF_EVENT_KRETPROBE */
|
||||
struct {
|
||||
__aligned_u64 tp_name; /* in/out */
|
||||
__u32 name_len;
|
||||
__u32 :32;
|
||||
__u64 cookie;
|
||||
} tracepoint; /* BPF_PERF_EVENT_TRACEPOINT */
|
||||
struct {
|
||||
__u64 config;
|
||||
__u32 type;
|
||||
__u32 :32;
|
||||
__u64 cookie;
|
||||
} event; /* BPF_PERF_EVENT_EVENT */
|
||||
};
|
||||
} perf_event;
|
||||
struct {
|
||||
__u32 ifindex;
|
||||
__u32 attach_type;
|
||||
} tcx;
|
||||
struct {
|
||||
__u32 ifindex;
|
||||
__u32 attach_type;
|
||||
} netkit;
|
||||
struct {
|
||||
__u32 map_id;
|
||||
__u32 attach_type;
|
||||
} sockmap;
|
||||
};
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
@ -6556,6 +6948,8 @@ enum {
|
||||
* socket transition to LISTEN state.
|
||||
*/
|
||||
BPF_SOCK_OPS_RTT_CB, /* Called on every RTT.
|
||||
* Arg1: measured RTT input (mrtt)
|
||||
* Arg2: updated srtt
|
||||
*/
|
||||
BPF_SOCK_OPS_PARSE_HDR_OPT_CB, /* Parse the header option.
|
||||
* It will be called to handle
|
||||
@ -6634,6 +7028,7 @@ enum {
|
||||
BPF_TCP_LISTEN,
|
||||
BPF_TCP_CLOSING, /* Now a valid state */
|
||||
BPF_TCP_NEW_SYN_RECV,
|
||||
BPF_TCP_BOUND_INACTIVE,
|
||||
|
||||
BPF_TCP_MAX_STATES /* Leave at the end! */
|
||||
};
|
||||
@ -6734,6 +7129,10 @@ struct bpf_raw_tracepoint_args {
|
||||
enum {
|
||||
BPF_FIB_LOOKUP_DIRECT = (1U << 0),
|
||||
BPF_FIB_LOOKUP_OUTPUT = (1U << 1),
|
||||
BPF_FIB_LOOKUP_SKIP_NEIGH = (1U << 2),
|
||||
BPF_FIB_LOOKUP_TBID = (1U << 3),
|
||||
BPF_FIB_LOOKUP_SRC = (1U << 4),
|
||||
BPF_FIB_LOOKUP_MARK = (1U << 5),
|
||||
};
|
||||
|
||||
enum {
|
||||
@ -6746,6 +7145,7 @@ enum {
|
||||
BPF_FIB_LKUP_RET_UNSUPP_LWT, /* fwd requires encapsulation */
|
||||
BPF_FIB_LKUP_RET_NO_NEIGH, /* no neighbor entry for nh */
|
||||
BPF_FIB_LKUP_RET_FRAG_NEEDED, /* fragmentation required to fwd */
|
||||
BPF_FIB_LKUP_RET_NO_SRC_ADDR, /* failed to derive IP src addr */
|
||||
};
|
||||
|
||||
struct bpf_fib_lookup {
|
||||
@ -6765,7 +7165,7 @@ struct bpf_fib_lookup {
|
||||
|
||||
/* output: MTU value */
|
||||
__u16 mtu_result;
|
||||
};
|
||||
} __attribute__((packed, aligned(2)));
|
||||
/* input: L3 device index for lookup
|
||||
* output: device index from FIB lookup
|
||||
*/
|
||||
@ -6780,6 +7180,9 @@ struct bpf_fib_lookup {
|
||||
__u32 rt_metric;
|
||||
};
|
||||
|
||||
/* input: source address to consider for lookup
|
||||
* output: source address result from lookup
|
||||
*/
|
||||
union {
|
||||
__be32 ipv4_src;
|
||||
__u32 ipv6_src[4]; /* in6_addr; network order */
|
||||
@ -6794,11 +7197,32 @@ struct bpf_fib_lookup {
|
||||
__u32 ipv6_dst[4]; /* in6_addr; network order */
|
||||
};
|
||||
|
||||
/* output */
|
||||
__be16 h_vlan_proto;
|
||||
__be16 h_vlan_TCI;
|
||||
__u8 smac[6]; /* ETH_ALEN */
|
||||
__u8 dmac[6]; /* ETH_ALEN */
|
||||
union {
|
||||
struct {
|
||||
/* output */
|
||||
__be16 h_vlan_proto;
|
||||
__be16 h_vlan_TCI;
|
||||
};
|
||||
/* input: when accompanied with the
|
||||
* 'BPF_FIB_LOOKUP_DIRECT | BPF_FIB_LOOKUP_TBID` flags, a
|
||||
* specific routing table to use for the fib lookup.
|
||||
*/
|
||||
__u32 tbid;
|
||||
};
|
||||
|
||||
union {
|
||||
/* input */
|
||||
struct {
|
||||
__u32 mark; /* policy routing */
|
||||
/* 2 4-byte holes for input */
|
||||
};
|
||||
|
||||
/* output: source and dest mac */
|
||||
struct {
|
||||
__u8 smac[6]; /* ETH_ALEN */
|
||||
__u8 dmac[6]; /* ETH_ALEN */
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
struct bpf_redir_neigh {
|
||||
@ -6882,25 +7306,37 @@ struct bpf_spin_lock {
|
||||
};
|
||||
|
||||
struct bpf_timer {
|
||||
__u64 :64;
|
||||
__u64 :64;
|
||||
__u64 __opaque[2];
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
struct bpf_wq {
|
||||
__u64 __opaque[2];
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
struct bpf_dynptr {
|
||||
__u64 :64;
|
||||
__u64 :64;
|
||||
__u64 __opaque[2];
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
struct bpf_list_head {
|
||||
__u64 :64;
|
||||
__u64 :64;
|
||||
__u64 __opaque[2];
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
struct bpf_list_node {
|
||||
__u64 :64;
|
||||
__u64 :64;
|
||||
__u64 __opaque[3];
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
struct bpf_rb_root {
|
||||
__u64 __opaque[2];
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
struct bpf_rb_node {
|
||||
__u64 __opaque[4];
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
struct bpf_refcount {
|
||||
__u32 __opaque[1];
|
||||
} __attribute__((aligned(4)));
|
||||
|
||||
struct bpf_sysctl {
|
||||
__u32 write; /* Sysctl is being read (= 0) or written (= 1).
|
||||
* Allows 1,2,4-byte read, but no write.
|
||||
@ -7050,4 +7486,23 @@ struct bpf_core_relo {
|
||||
enum bpf_core_relo_kind kind;
|
||||
};
|
||||
|
||||
/*
|
||||
* Flags to control bpf_timer_start() behaviour.
|
||||
* - BPF_F_TIMER_ABS: Timeout passed is absolute time, by default it is
|
||||
* relative to current time.
|
||||
* - BPF_F_TIMER_CPU_PIN: Timer will be pinned to the CPU of the caller.
|
||||
*/
|
||||
enum {
|
||||
BPF_F_TIMER_ABS = (1ULL << 0),
|
||||
BPF_F_TIMER_CPU_PIN = (1ULL << 1),
|
||||
};
|
||||
|
||||
/* BPF numbers iterator state */
|
||||
struct bpf_iter_num {
|
||||
/* opaque iterator state; having __u64 here allows to preserve correct
|
||||
* alignment requirements in vmlinux.h, generated from BTF
|
||||
*/
|
||||
__u64 __opaque[1];
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
#endif /* __LINUX_BPF_H__ */
|
@ -210,14 +210,6 @@ struct bpf_insn;
|
||||
.off = OFF, \
|
||||
.imm = IMM })
|
||||
|
||||
#define BPF_JMP_A(OFF) \
|
||||
((struct bpf_insn) { \
|
||||
.code = BPF_JMP | BPF_JA, \
|
||||
.dst_reg = 0, \
|
||||
.src_reg = 0, \
|
||||
.off = OFF, \
|
||||
.imm = 0 })
|
||||
|
||||
/* Raw code statement block */
|
||||
|
||||
#define BPF_RAW_INSN(CODE, DST, SRC, OFF, IMM) \
|
@ -17,8 +17,8 @@
|
||||
* Boston, MA 021110-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef _UAPI_LINUX_BTRFS_H
|
||||
#define _UAPI_LINUX_BTRFS_H
|
||||
#ifndef _LINUX_BTRFS_H
|
||||
#define _LINUX_BTRFS_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@ -44,10 +44,8 @@ struct btrfs_ioctl_vol_args {
|
||||
#define BTRFS_DEVICE_PATH_NAME_MAX 1024
|
||||
#define BTRFS_SUBVOL_NAME_MAX 4039
|
||||
|
||||
#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)
|
||||
|
||||
@ -1188,4 +1186,4 @@ enum btrfs_err_code {
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _UAPI_LINUX_BTRFS_H */
|
||||
#endif /* _LINUX_BTRFS_H */
|
||||
|
@ -4,11 +4,7 @@
|
||||
|
||||
#include <linux/btrfs.h>
|
||||
#include <linux/types.h>
|
||||
#ifdef __KERNEL__
|
||||
#include <linux/stddef.h>
|
||||
#else
|
||||
#include <stddef.h>
|
||||
#endif
|
||||
|
||||
/* ASCII for _BHRfS_M, no terminating nul */
|
||||
#define BTRFS_MAGIC 0x4D5F53665248425FULL
|
||||
@ -220,18 +216,18 @@
|
||||
#define BTRFS_METADATA_ITEM_KEY 169
|
||||
|
||||
/*
|
||||
* Special inline ref key which stores the id of the subvolume which originally
|
||||
* Special __inline__ ref key which stores the id of the subvolume which originally
|
||||
* created the extent. This subvolume owns the extent permanently from the
|
||||
* perspective of simple quotas. Needed to know which subvolume to free quota
|
||||
* usage from when the extent is deleted.
|
||||
*
|
||||
* Stored as an inline ref rather to avoid wasting space on a separate item on
|
||||
* top of the existing extent item. However, unlike the other inline refs,
|
||||
* Stored as an __inline__ ref rather to avoid wasting space on a separate item on
|
||||
* top of the existing extent item. However, unlike the other __inline__ refs,
|
||||
* there is one one owner ref per extent rather than one per extent.
|
||||
*
|
||||
* Because of this, it goes at the front of the list of inline refs, and thus
|
||||
* must have a lower type value than any other inline ref type (to satisfy the
|
||||
* disk format rule that inline refs have non-decreasing type).
|
||||
* Because of this, it goes at the front of the list of __inline__ refs, and thus
|
||||
* must have a lower type value than any other __inline__ ref type (to satisfy the
|
||||
* disk format rule that __inline__ refs have non-decreasing type).
|
||||
*/
|
||||
#define BTRFS_EXTENT_OWNER_REF_KEY 172
|
||||
|
||||
@ -404,7 +400,7 @@ enum btrfs_csum_type {
|
||||
/* Directory contains encrypted data */
|
||||
#define BTRFS_FT_ENCRYPTED 0x80
|
||||
|
||||
static inline __u8 btrfs_dir_flags_to_ftype(__u8 flags)
|
||||
static __inline__ __u8 btrfs_dir_flags_to_ftype(__u8 flags)
|
||||
{
|
||||
return flags & ~BTRFS_FT_ENCRYPTED;
|
||||
}
|
||||
@ -970,7 +966,7 @@ struct btrfs_root_item {
|
||||
* Btrfs root item used to be smaller than current size. The old format ends
|
||||
* at where member generation_v2 is.
|
||||
*/
|
||||
static inline __u32 btrfs_legacy_root_item_size(void)
|
||||
static __inline__ __u32 btrfs_legacy_root_item_size(void)
|
||||
{
|
||||
return offsetof(struct btrfs_root_item, generation_v2);
|
||||
}
|
||||
@ -1094,14 +1090,14 @@ struct btrfs_file_extent_item {
|
||||
__u8 encryption;
|
||||
__le16 other_encoding; /* spare for later use */
|
||||
|
||||
/* are we inline data or a real extent? */
|
||||
/* are we __inline__ data or a real extent? */
|
||||
__u8 type;
|
||||
|
||||
/*
|
||||
* disk space consumed by the extent, checksum blocks are included
|
||||
* in these numbers
|
||||
*
|
||||
* At this offset in the structure, the inline extent data start.
|
||||
* At this offset in the structure, the __inline__ extent data start.
|
||||
*/
|
||||
__le64 disk_bytenr;
|
||||
__le64 disk_num_bytes;
|
||||
@ -1205,14 +1201,14 @@ struct btrfs_dev_replace_item {
|
||||
#define BTRFS_EXTENDED_PROFILE_MASK (BTRFS_BLOCK_GROUP_PROFILE_MASK | \
|
||||
BTRFS_AVAIL_ALLOC_BIT_SINGLE)
|
||||
|
||||
static inline __u64 chunk_to_extended(__u64 flags)
|
||||
static __inline__ __u64 chunk_to_extended(__u64 flags)
|
||||
{
|
||||
if ((flags & BTRFS_BLOCK_GROUP_PROFILE_MASK) == 0)
|
||||
flags |= BTRFS_AVAIL_ALLOC_BIT_SINGLE;
|
||||
|
||||
return flags;
|
||||
}
|
||||
static inline __u64 extended_to_chunk(__u64 flags)
|
||||
static __inline__ __u64 extended_to_chunk(__u64 flags)
|
||||
{
|
||||
return flags & ~BTRFS_AVAIL_ALLOC_BIT_SINGLE;
|
||||
}
|
||||
@ -1231,7 +1227,7 @@ struct btrfs_free_space_info {
|
||||
#define BTRFS_FREE_SPACE_USING_BITMAPS (1ULL << 0)
|
||||
|
||||
#define BTRFS_QGROUP_LEVEL_SHIFT 48
|
||||
static inline __u16 btrfs_qgroup_level(__u64 qgroupid)
|
||||
static __inline__ __u16 btrfs_qgroup_level(__u64 qgroupid)
|
||||
{
|
||||
return (__u16)(qgroupid >> BTRFS_QGROUP_LEVEL_SHIFT);
|
||||
}
|
||||
|
@ -16,8 +16,8 @@
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#ifndef _UAPI_CAN_NETLINK_H
|
||||
#define _UAPI_CAN_NETLINK_H
|
||||
#ifndef _CAN_NETLINK_H
|
||||
#define _CAN_NETLINK_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
|
||||
#ifndef _UAPI_CAN_VXCAN_H
|
||||
#define _UAPI_CAN_VXCAN_H
|
||||
#ifndef _CAN_VXCAN_H
|
||||
#define _CAN_VXCAN_H
|
||||
|
||||
enum {
|
||||
VXCAN_INFO_UNSPEC,
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
|
||||
|
||||
#ifndef _UAPI_LINUX_CFM_BRIDGE_H_
|
||||
#define _UAPI_LINUX_CFM_BRIDGE_H_
|
||||
#ifndef _LINUX_CFM_BRIDGE_H_
|
||||
#define _LINUX_CFM_BRIDGE_H_
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/if_ether.h>
|
||||
|
36
src/basic/linux/const.h
Normal file
36
src/basic/linux/const.h
Normal file
@ -0,0 +1,36 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/* const.h: Macros for dealing with constants. */
|
||||
|
||||
#ifndef _LINUX_CONST_H
|
||||
#define _LINUX_CONST_H
|
||||
|
||||
/* Some constant macros are used in both assembler and
|
||||
* C code. Therefore we cannot annotate them always with
|
||||
* 'UL' and other type specifiers unilaterally. We
|
||||
* use the following macros to deal with this.
|
||||
*
|
||||
* Similarly, _AT() will cast an expression with a type in C, but
|
||||
* leave it unchanged in asm.
|
||||
*/
|
||||
|
||||
#ifdef __ASSEMBLY__
|
||||
#define _AC(X,Y) X
|
||||
#define _AT(T,X) X
|
||||
#else
|
||||
#define __AC(X,Y) (X##Y)
|
||||
#define _AC(X,Y) __AC(X,Y)
|
||||
#define _AT(T,X) ((T)(X))
|
||||
#endif
|
||||
|
||||
#define _UL(x) (_AC(x, UL))
|
||||
#define _ULL(x) (_AC(x, ULL))
|
||||
|
||||
#define _BITUL(x) (_UL(1) << (x))
|
||||
#define _BITULL(x) (_ULL(1) << (x))
|
||||
|
||||
#define __ALIGN_KERNEL(x, a) __ALIGN_KERNEL_MASK(x, (__typeof__(x))(a) - 1)
|
||||
#define __ALIGN_KERNEL_MASK(x, mask) (((x) + (mask)) & ~(mask))
|
||||
|
||||
#define __KERNEL_DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d))
|
||||
|
||||
#endif /* _LINUX_CONST_H */
|
@ -288,7 +288,7 @@ enum {
|
||||
#define DM_VERSION_MAJOR 4
|
||||
#define DM_VERSION_MINOR 27
|
||||
#define DM_VERSION_PATCHLEVEL 0
|
||||
#define DM_VERSION_EXTRA "-ioctl (2022-02-22)"
|
||||
#define DM_VERSION_EXTRA "-ioctl (2023-03-01)"
|
||||
|
||||
/* Status bits */
|
||||
#define DM_READONLY_FLAG (1 << 0) /* In/Out */
|
@ -20,10 +20,6 @@
|
||||
|
||||
#include <limits.h> /* for INT_MAX */
|
||||
|
||||
#ifndef __KERNEL_DIV_ROUND_UP
|
||||
#define __KERNEL_DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d))
|
||||
#endif
|
||||
|
||||
/* All structures exposed to userland should be defined such that they
|
||||
* have the same layout for 32-bit and 64-bit userland.
|
||||
*/
|
||||
@ -713,6 +709,24 @@ enum ethtool_stringset {
|
||||
ETH_SS_COUNT
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ethtool_mac_stats_src - source of ethtool MAC statistics
|
||||
* @ETHTOOL_MAC_STATS_SRC_AGGREGATE:
|
||||
* if device supports a MAC merge layer, this retrieves the aggregate
|
||||
* statistics of the eMAC and pMAC. Otherwise, it retrieves just the
|
||||
* statistics of the single (express) MAC.
|
||||
* @ETHTOOL_MAC_STATS_SRC_EMAC:
|
||||
* if device supports a MM layer, this retrieves the eMAC statistics.
|
||||
* Otherwise, it retrieves the statistics of the single (express) MAC.
|
||||
* @ETHTOOL_MAC_STATS_SRC_PMAC:
|
||||
* if device supports a MM layer, this retrieves the pMAC statistics.
|
||||
*/
|
||||
enum ethtool_mac_stats_src {
|
||||
ETHTOOL_MAC_STATS_SRC_AGGREGATE,
|
||||
ETHTOOL_MAC_STATS_SRC_EMAC,
|
||||
ETHTOOL_MAC_STATS_SRC_PMAC,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ethtool_module_power_mode_policy - plug-in module power mode policy
|
||||
* @ETHTOOL_MODULE_POWER_MODE_POLICY_HIGH: Module is always in high power mode.
|
||||
@ -736,6 +750,61 @@ enum ethtool_module_power_mode {
|
||||
ETHTOOL_MODULE_POWER_MODE_HIGH,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ethtool_pse_types - Types of PSE controller.
|
||||
* @ETHTOOL_PSE_UNKNOWN: Type of PSE controller is unknown
|
||||
* @ETHTOOL_PSE_PODL: PSE controller which support PoDL
|
||||
* @ETHTOOL_PSE_C33: PSE controller which support Clause 33 (PoE)
|
||||
*/
|
||||
enum ethtool_pse_types {
|
||||
ETHTOOL_PSE_UNKNOWN = 1 << 0,
|
||||
ETHTOOL_PSE_PODL = 1 << 1,
|
||||
ETHTOOL_PSE_C33 = 1 << 2,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ethtool_c33_pse_admin_state - operational state of the PoDL PSE
|
||||
* functions. IEEE 802.3-2022 30.9.1.1.2 aPSEAdminState
|
||||
* @ETHTOOL_C33_PSE_ADMIN_STATE_UNKNOWN: state of PSE functions is unknown
|
||||
* @ETHTOOL_C33_PSE_ADMIN_STATE_DISABLED: PSE functions are disabled
|
||||
* @ETHTOOL_C33_PSE_ADMIN_STATE_ENABLED: PSE functions are enabled
|
||||
*/
|
||||
enum ethtool_c33_pse_admin_state {
|
||||
ETHTOOL_C33_PSE_ADMIN_STATE_UNKNOWN = 1,
|
||||
ETHTOOL_C33_PSE_ADMIN_STATE_DISABLED,
|
||||
ETHTOOL_C33_PSE_ADMIN_STATE_ENABLED,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ethtool_c33_pse_pw_d_status - power detection status of the PSE.
|
||||
* IEEE 802.3-2022 30.9.1.1.3 aPoDLPSEPowerDetectionStatus:
|
||||
* @ETHTOOL_C33_PSE_PW_D_STATUS_UNKNOWN: PSE status is unknown
|
||||
* @ETHTOOL_C33_PSE_PW_D_STATUS_DISABLED: The enumeration "disabled"
|
||||
* indicates that the PSE State diagram is in the state DISABLED.
|
||||
* @ETHTOOL_C33_PSE_PW_D_STATUS_SEARCHING: The enumeration "searching"
|
||||
* indicates the PSE State diagram is in a state other than those
|
||||
* listed.
|
||||
* @ETHTOOL_C33_PSE_PW_D_STATUS_DELIVERING: The enumeration
|
||||
* "deliveringPower" indicates that the PSE State diagram is in the
|
||||
* state POWER_ON.
|
||||
* @ETHTOOL_C33_PSE_PW_D_STATUS_TEST: The enumeration "test" indicates that
|
||||
* the PSE State diagram is in the state TEST_MODE.
|
||||
* @ETHTOOL_C33_PSE_PW_D_STATUS_FAULT: The enumeration "fault" indicates that
|
||||
* the PSE State diagram is in the state TEST_ERROR.
|
||||
* @ETHTOOL_C33_PSE_PW_D_STATUS_OTHERFAULT: The enumeration "otherFault"
|
||||
* indicates that the PSE State diagram is in the state IDLE due to
|
||||
* the variable error_condition = true.
|
||||
*/
|
||||
enum ethtool_c33_pse_pw_d_status {
|
||||
ETHTOOL_C33_PSE_PW_D_STATUS_UNKNOWN = 1,
|
||||
ETHTOOL_C33_PSE_PW_D_STATUS_DISABLED,
|
||||
ETHTOOL_C33_PSE_PW_D_STATUS_SEARCHING,
|
||||
ETHTOOL_C33_PSE_PW_D_STATUS_DELIVERING,
|
||||
ETHTOOL_C33_PSE_PW_D_STATUS_TEST,
|
||||
ETHTOOL_C33_PSE_PW_D_STATUS_FAULT,
|
||||
ETHTOOL_C33_PSE_PW_D_STATUS_OTHERFAULT,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ethtool_podl_pse_admin_state - operational state of the PoDL PSE
|
||||
* functions. IEEE 802.3-2018 30.15.1.1.2 aPoDLPSEAdminState
|
||||
@ -781,6 +850,31 @@ enum ethtool_podl_pse_pw_d_status {
|
||||
ETHTOOL_PODL_PSE_PW_D_STATUS_ERROR,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ethtool_mm_verify_status - status of MAC Merge Verify function
|
||||
* @ETHTOOL_MM_VERIFY_STATUS_UNKNOWN:
|
||||
* verification status is unknown
|
||||
* @ETHTOOL_MM_VERIFY_STATUS_INITIAL:
|
||||
* the 802.3 Verify State diagram is in the state INIT_VERIFICATION
|
||||
* @ETHTOOL_MM_VERIFY_STATUS_VERIFYING:
|
||||
* the Verify State diagram is in the state VERIFICATION_IDLE,
|
||||
* SEND_VERIFY or WAIT_FOR_RESPONSE
|
||||
* @ETHTOOL_MM_VERIFY_STATUS_SUCCEEDED:
|
||||
* indicates that the Verify State diagram is in the state VERIFIED
|
||||
* @ETHTOOL_MM_VERIFY_STATUS_FAILED:
|
||||
* the Verify State diagram is in the state VERIFY_FAIL
|
||||
* @ETHTOOL_MM_VERIFY_STATUS_DISABLED:
|
||||
* verification of preemption operation is disabled
|
||||
*/
|
||||
enum ethtool_mm_verify_status {
|
||||
ETHTOOL_MM_VERIFY_STATUS_UNKNOWN,
|
||||
ETHTOOL_MM_VERIFY_STATUS_INITIAL,
|
||||
ETHTOOL_MM_VERIFY_STATUS_VERIFYING,
|
||||
ETHTOOL_MM_VERIFY_STATUS_SUCCEEDED,
|
||||
ETHTOOL_MM_VERIFY_STATUS_FAILED,
|
||||
ETHTOOL_MM_VERIFY_STATUS_DISABLED,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct ethtool_gstrings - string set for data tagging
|
||||
* @cmd: Command number = %ETHTOOL_GSTRINGS
|
||||
@ -1093,7 +1187,7 @@ struct ethtool_rx_flow_spec {
|
||||
/* How rings are laid out when accessing virtual functions or
|
||||
* offloaded queues is device specific. To allow users to do flow
|
||||
* steering and specify these queues the ring cookie is partitioned
|
||||
* into a 32-bit queue index with an 8 bit virtual function id.
|
||||
* into a 32bit queue index with an 8 bit virtual function id.
|
||||
* This also leaves the 3bytes for further specifiers. It is possible
|
||||
* future devices may support more than 256 virtual functions if
|
||||
* devices start supporting PCIe w/ARI. However at the moment I
|
||||
@ -1185,7 +1279,7 @@ struct ethtool_rxnfc {
|
||||
__u32 rule_cnt;
|
||||
__u32 rss_context;
|
||||
};
|
||||
__u32 rule_locs[0];
|
||||
__u32 rule_locs[];
|
||||
};
|
||||
|
||||
|
||||
@ -1225,6 +1319,8 @@ struct ethtool_rxfh_indir {
|
||||
* hardware hash key.
|
||||
* @hfunc: Defines the current RSS hash function used by HW (or to be set to).
|
||||
* Valid values are one of the %ETH_RSS_HASH_*.
|
||||
* @input_xfrm: Defines how the input data is transformed. Valid values are one
|
||||
* of %RXH_XFRM_*.
|
||||
* @rsvd8: Reserved for future use; see the note on reserved space.
|
||||
* @rsvd32: Reserved for future use; see the note on reserved space.
|
||||
* @rss_config: RX ring/queue index for each hash value i.e., indirection table
|
||||
@ -1244,7 +1340,8 @@ struct ethtool_rxfh {
|
||||
__u32 indir_size;
|
||||
__u32 key_size;
|
||||
__u8 hfunc;
|
||||
__u8 rsvd8[3];
|
||||
__u8 input_xfrm;
|
||||
__u8 rsvd8[2];
|
||||
__u32 rsvd32;
|
||||
__u32 rss_config[];
|
||||
};
|
||||
@ -1743,6 +1840,9 @@ enum ethtool_link_mode_bit_indices {
|
||||
ETHTOOL_LINK_MODE_800000baseDR8_2_Full_BIT = 96,
|
||||
ETHTOOL_LINK_MODE_800000baseSR8_Full_BIT = 97,
|
||||
ETHTOOL_LINK_MODE_800000baseVR8_Full_BIT = 98,
|
||||
ETHTOOL_LINK_MODE_10baseT1S_Full_BIT = 99,
|
||||
ETHTOOL_LINK_MODE_10baseT1S_Half_BIT = 100,
|
||||
ETHTOOL_LINK_MODE_10baseT1S_P2MP_Half_BIT = 101,
|
||||
|
||||
/* must be last entry */
|
||||
__ETHTOOL_LINK_MODE_MASK_NBITS
|
||||
@ -1948,6 +2048,15 @@ static __inline__ int ethtool_validate_duplex(__u8 duplex)
|
||||
|
||||
#define WOL_MODE_COUNT 8
|
||||
|
||||
/* RSS hash function data
|
||||
* XOR the corresponding source and destination fields of each specified
|
||||
* protocol. Both copies of the XOR'ed fields are fed into the RSS and RXHASH
|
||||
* calculation. Note that this XORing reduces the input set entropy and could
|
||||
* be exploited to reduce the RSS queue spread.
|
||||
*/
|
||||
#define RXH_XFRM_SYM_XOR (1 << 0)
|
||||
#define RXH_XFRM_NO_CHANGE 0xff
|
||||
|
||||
/* L2-L4 network traffic flow types */
|
||||
#define TCP_V4_FLOW 0x01 /* hash or spec (tcp_ip4_spec) */
|
||||
#define UDP_V4_FLOW 0x02 /* hash or spec (udp_ip4_spec) */
|
||||
@ -1967,6 +2076,53 @@ static __inline__ int ethtool_validate_duplex(__u8 duplex)
|
||||
#define IPV4_FLOW 0x10 /* hash only */
|
||||
#define IPV6_FLOW 0x11 /* hash only */
|
||||
#define ETHER_FLOW 0x12 /* spec only (ether_spec) */
|
||||
|
||||
/* Used for GTP-U IPv4 and IPv6.
|
||||
* The format of GTP packets only includes
|
||||
* elements such as TEID and GTP version.
|
||||
* It is primarily intended for data communication of the UE.
|
||||
*/
|
||||
#define GTPU_V4_FLOW 0x13 /* hash only */
|
||||
#define GTPU_V6_FLOW 0x14 /* hash only */
|
||||
|
||||
/* Use for GTP-C IPv4 and v6.
|
||||
* The format of these GTP packets does not include TEID.
|
||||
* Primarily expected to be used for communication
|
||||
* to create sessions for UE data communication,
|
||||
* commonly referred to as CSR (Create Session Request).
|
||||
*/
|
||||
#define GTPC_V4_FLOW 0x15 /* hash only */
|
||||
#define GTPC_V6_FLOW 0x16 /* hash only */
|
||||
|
||||
/* Use for GTP-C IPv4 and v6.
|
||||
* Unlike GTPC_V4_FLOW, the format of these GTP packets includes TEID.
|
||||
* After session creation, it becomes this packet.
|
||||
* This is mainly used for requests to realize UE handover.
|
||||
*/
|
||||
#define GTPC_TEID_V4_FLOW 0x17 /* hash only */
|
||||
#define GTPC_TEID_V6_FLOW 0x18 /* hash only */
|
||||
|
||||
/* Use for GTP-U and extended headers for the PSC (PDU Session Container).
|
||||
* The format of these GTP packets includes TEID and QFI.
|
||||
* In 5G communication using UPF (User Plane Function),
|
||||
* data communication with this extended header is performed.
|
||||
*/
|
||||
#define GTPU_EH_V4_FLOW 0x19 /* hash only */
|
||||
#define GTPU_EH_V6_FLOW 0x1a /* hash only */
|
||||
|
||||
/* Use for GTP-U IPv4 and v6 PSC (PDU Session Container) extended headers.
|
||||
* This differs from GTPU_EH_V(4|6)_FLOW in that it is distinguished by
|
||||
* UL/DL included in the PSC.
|
||||
* There are differences in the data included based on Downlink/Uplink,
|
||||
* and can be used to distinguish packets.
|
||||
* The functions described so far are useful when you want to
|
||||
* handle communication from the mobile network in UPF, PGW, etc.
|
||||
*/
|
||||
#define GTPU_UL_V4_FLOW 0x1b /* hash only */
|
||||
#define GTPU_UL_V6_FLOW 0x1c /* hash only */
|
||||
#define GTPU_DL_V4_FLOW 0x1d /* hash only */
|
||||
#define GTPU_DL_V6_FLOW 0x1e /* hash only */
|
||||
|
||||
/* Flag to enable additional fields in struct ethtool_rx_flow_spec */
|
||||
#define FLOW_EXT 0x80000000
|
||||
#define FLOW_MAC_EXT 0x40000000
|
||||
@ -1981,6 +2137,7 @@ static __inline__ int ethtool_validate_duplex(__u8 duplex)
|
||||
#define RXH_IP_DST (1 << 5)
|
||||
#define RXH_L4_B_0_1 (1 << 6) /* src port in case of TCP/UDP/SCTP */
|
||||
#define RXH_L4_B_2_3 (1 << 7) /* dst port in case of TCP/UDP/SCTP */
|
||||
#define RXH_GTP_TEID (1 << 8) /* teid in case of GTP */
|
||||
#define RXH_DISCARD (1 << 31)
|
||||
|
||||
#define RX_CLS_FLOW_DISC 0xffffffffffffffffULL
|
||||
@ -2084,18 +2241,6 @@ enum ethtool_reset_flags {
|
||||
* refused. For drivers: ignore this field (use kernel's
|
||||
* __ETHTOOL_LINK_MODE_MASK_NBITS instead), any change to it will
|
||||
* be overwritten by kernel.
|
||||
* @supported: Bitmap with each bit meaning given by
|
||||
* %ethtool_link_mode_bit_indices for the link modes, physical
|
||||
* connectors and other link features for which the interface
|
||||
* supports autonegotiation or auto-detection. Read-only.
|
||||
* @advertising: Bitmap with each bit meaning given by
|
||||
* %ethtool_link_mode_bit_indices for the link modes, physical
|
||||
* connectors and other link features that are advertised through
|
||||
* autonegotiation or enabled for auto-detection.
|
||||
* @lp_advertising: Bitmap with each bit meaning given by
|
||||
* %ethtool_link_mode_bit_indices for the link modes, and other
|
||||
* link features that the link partner advertised through
|
||||
* autonegotiation; 0 if unknown or not applicable. Read-only.
|
||||
* @transceiver: Used to distinguish different possible PHY types,
|
||||
* reported consistently by PHYLIB. Read-only.
|
||||
* @master_slave_cfg: Master/slave port mode.
|
||||
@ -2137,6 +2282,21 @@ enum ethtool_reset_flags {
|
||||
* %set_link_ksettings() should validate all fields other than @cmd
|
||||
* and @link_mode_masks_nwords that are not described as read-only or
|
||||
* deprecated, and must ignore all fields described as read-only.
|
||||
*
|
||||
* @link_mode_masks is divided into three bitfields, each of length
|
||||
* @link_mode_masks_nwords:
|
||||
* - supported: Bitmap with each bit meaning given by
|
||||
* %ethtool_link_mode_bit_indices for the link modes, physical
|
||||
* connectors and other link features for which the interface
|
||||
* supports autonegotiation or auto-detection. Read-only.
|
||||
* - advertising: Bitmap with each bit meaning given by
|
||||
* %ethtool_link_mode_bit_indices for the link modes, physical
|
||||
* connectors and other link features that are advertised through
|
||||
* autonegotiation or enabled for auto-detection.
|
||||
* - lp_advertising: Bitmap with each bit meaning given by
|
||||
* %ethtool_link_mode_bit_indices for the link modes, and other
|
||||
* link features that the link partner advertised through
|
||||
* autonegotiation; 0 if unknown or not applicable. Read-only.
|
||||
*/
|
||||
struct ethtool_link_settings {
|
||||
__u32 cmd;
|
@ -3,8 +3,8 @@
|
||||
/* Documentation/netlink/specs/fou.yaml */
|
||||
/* YNL-GEN uapi header */
|
||||
|
||||
#ifndef _UAPI_LINUX_FOU_H
|
||||
#define _UAPI_LINUX_FOU_H
|
||||
#ifndef _LINUX_FOU_H
|
||||
#define _LINUX_FOU_H
|
||||
|
||||
#define FOU_GENL_NAME "fou"
|
||||
#define FOU_GENL_VERSION 1
|
||||
@ -43,4 +43,4 @@ enum {
|
||||
};
|
||||
#define FOU_CMD_MAX (__FOU_CMD_MAX - 1)
|
||||
|
||||
#endif /* _UAPI_LINUX_FOU_H */
|
||||
#endif /* _LINUX_FOU_H */
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _UAPI__LINUX_GENERIC_NETLINK_H
|
||||
#define _UAPI__LINUX_GENERIC_NETLINK_H
|
||||
#ifndef __LINUX_GENERIC_NETLINK_H
|
||||
#define __LINUX_GENERIC_NETLINK_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/netlink.h>
|
||||
@ -100,4 +100,4 @@ enum {
|
||||
|
||||
#define CTRL_ATTR_POLICY_MAX (__CTRL_ATTR_POLICY_DUMP_MAX - 1)
|
||||
|
||||
#endif /* _UAPI__LINUX_GENERIC_NETLINK_H */
|
||||
#endif /* __LINUX_GENERIC_NETLINK_H */
|
||||
|
@ -23,10 +23,9 @@
|
||||
#include <linux/libc-compat.h> /* for compatibility with glibc */
|
||||
#include <linux/types.h> /* for "__kernel_caddr_t" et al */
|
||||
#include <linux/socket.h> /* for "struct sockaddr" et al */
|
||||
/* for "__user" et al */
|
||||
|
||||
#ifndef __KERNEL__
|
||||
#include <sys/socket.h> /* for struct sockaddr. */
|
||||
#endif
|
||||
|
||||
#if __UAPI_DEF_IF_IFNAMSIZ
|
||||
#define IFNAMSIZ 16
|
||||
@ -50,7 +49,7 @@
|
||||
* are annotated below, note that only a few flags can be toggled and some
|
||||
* other flags are always preserved from the original net_device flags
|
||||
* even if you try to set them via sysfs. Flags which are always preserved
|
||||
* are kept under the flag grouping @IFF_VOLATILE. Flags which are volatile
|
||||
* are kept under the flag grouping @IFF_VOLATILE. Flags which are __volatile__
|
||||
* are annotated below as such.
|
||||
*
|
||||
* You should have a pretty good reason to be extending these flags.
|
||||
@ -82,26 +81,26 @@ enum net_device_flags {
|
||||
/* for compatibility with glibc net/if.h */
|
||||
#if __UAPI_DEF_IF_NET_DEVICE_FLAGS
|
||||
IFF_UP = 1<<0, /* sysfs */
|
||||
IFF_BROADCAST = 1<<1, /* volatile */
|
||||
IFF_BROADCAST = 1<<1, /* __volatile__ */
|
||||
IFF_DEBUG = 1<<2, /* sysfs */
|
||||
IFF_LOOPBACK = 1<<3, /* volatile */
|
||||
IFF_POINTOPOINT = 1<<4, /* volatile */
|
||||
IFF_LOOPBACK = 1<<3, /* __volatile__ */
|
||||
IFF_POINTOPOINT = 1<<4, /* __volatile__ */
|
||||
IFF_NOTRAILERS = 1<<5, /* sysfs */
|
||||
IFF_RUNNING = 1<<6, /* volatile */
|
||||
IFF_RUNNING = 1<<6, /* __volatile__ */
|
||||
IFF_NOARP = 1<<7, /* sysfs */
|
||||
IFF_PROMISC = 1<<8, /* sysfs */
|
||||
IFF_ALLMULTI = 1<<9, /* sysfs */
|
||||
IFF_MASTER = 1<<10, /* volatile */
|
||||
IFF_SLAVE = 1<<11, /* volatile */
|
||||
IFF_MASTER = 1<<10, /* __volatile__ */
|
||||
IFF_SLAVE = 1<<11, /* __volatile__ */
|
||||
IFF_MULTICAST = 1<<12, /* sysfs */
|
||||
IFF_PORTSEL = 1<<13, /* sysfs */
|
||||
IFF_AUTOMEDIA = 1<<14, /* sysfs */
|
||||
IFF_DYNAMIC = 1<<15, /* sysfs */
|
||||
#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS */
|
||||
#if __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO
|
||||
IFF_LOWER_UP = 1<<16, /* volatile */
|
||||
IFF_DORMANT = 1<<17, /* volatile */
|
||||
IFF_ECHO = 1<<18, /* volatile */
|
||||
IFF_LOWER_UP = 1<<16, /* __volatile__ */
|
||||
IFF_DORMANT = 1<<17, /* __volatile__ */
|
||||
IFF_ECHO = 1<<18, /* __volatile__ */
|
||||
#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO */
|
||||
};
|
||||
#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO != 0 || __UAPI_DEF_IF_NET_DEVICE_FLAGS != 0 */
|
||||
|
@ -65,10 +65,8 @@ struct ifa_cacheinfo {
|
||||
};
|
||||
|
||||
/* backwards compatibility for userspace */
|
||||
#ifndef __KERNEL__
|
||||
#define IFA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifaddrmsg))))
|
||||
#define IFA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifaddrmsg))
|
||||
#endif
|
||||
|
||||
/* ifa_proto */
|
||||
#define IFAPROT_UNSPEC 0
|
||||
|
@ -11,8 +11,8 @@
|
||||
* 2 of the License, or (at your option) any later version.
|
||||
*/
|
||||
|
||||
#ifndef _UAPI_LINUX_IF_BRIDGE_H
|
||||
#define _UAPI_LINUX_IF_BRIDGE_H
|
||||
#ifndef _LINUX_IF_BRIDGE_H
|
||||
#define _LINUX_IF_BRIDGE_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/if_ether.h>
|
||||
@ -855,4 +855,4 @@ enum {
|
||||
__BRIDGE_QUERIER_MAX
|
||||
};
|
||||
#define BRIDGE_QUERIER_MAX (__BRIDGE_QUERIER_MAX - 1)
|
||||
#endif /* _UAPI_LINUX_IF_BRIDGE_H */
|
||||
#endif /* _LINUX_IF_BRIDGE_H */
|
||||
|
@ -19,8 +19,8 @@
|
||||
* 2 of the License, or (at your option) any later version.
|
||||
*/
|
||||
|
||||
#ifndef _UAPI_LINUX_IF_ETHER_H
|
||||
#define _UAPI_LINUX_IF_ETHER_H
|
||||
#ifndef _LINUX_IF_ETHER_H
|
||||
#define _LINUX_IF_ETHER_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
@ -178,4 +178,4 @@ struct ethhdr {
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* _UAPI_LINUX_IF_ETHER_H */
|
||||
#endif /* _LINUX_IF_ETHER_H */
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _UAPI_LINUX_IF_LINK_H
|
||||
#define _UAPI_LINUX_IF_LINK_H
|
||||
#ifndef _LINUX_IF_LINK_H
|
||||
#define _LINUX_IF_LINK_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/netlink.h>
|
||||
@ -393,10 +393,8 @@ enum {
|
||||
};
|
||||
|
||||
/* backwards compatibility for userspace */
|
||||
#ifndef __KERNEL__
|
||||
#define IFLA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifinfomsg))))
|
||||
#define IFLA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifinfomsg))
|
||||
#endif
|
||||
|
||||
enum {
|
||||
IFLA_INET_UNSPEC,
|
||||
@ -1466,6 +1464,8 @@ enum {
|
||||
IFLA_GTP_ROLE,
|
||||
IFLA_GTP_CREATE_SOCKETS,
|
||||
IFLA_GTP_RESTART_COUNT,
|
||||
IFLA_GTP_LOCAL,
|
||||
IFLA_GTP_LOCAL6,
|
||||
__IFLA_GTP_MAX,
|
||||
};
|
||||
#define IFLA_GTP_MAX (__IFLA_GTP_MAX - 1)
|
||||
@ -1771,6 +1771,7 @@ enum {
|
||||
IFLA_HSR_PROTOCOL, /* Indicate different protocol than
|
||||
* HSR. For example PRP.
|
||||
*/
|
||||
IFLA_HSR_INTERLINK, /* HSR interlink network device */
|
||||
__IFLA_HSR_MAX,
|
||||
};
|
||||
|
||||
@ -1956,4 +1957,4 @@ enum {
|
||||
|
||||
#define IFLA_DSA_MAX (__IFLA_DSA_MAX - 1)
|
||||
|
||||
#endif /* _UAPI_LINUX_IF_LINK_H */
|
||||
#endif /* _LINUX_IF_LINK_H */
|
||||
|
@ -10,8 +10,8 @@
|
||||
* (at your option) any later version.
|
||||
*/
|
||||
|
||||
#ifndef _UAPI_MACSEC_H
|
||||
#define _UAPI_MACSEC_H
|
||||
#ifndef _MACSEC_H
|
||||
#define _MACSEC_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
@ -191,4 +191,4 @@ enum macsec_secy_stats_attr {
|
||||
MACSEC_SECY_STATS_ATTR_MAX = __MACSEC_SECY_STATS_ATTR_END - 1,
|
||||
};
|
||||
|
||||
#endif /* _UAPI_MACSEC_H */
|
||||
#endif /* _MACSEC_H */
|
||||
|
@ -14,8 +14,8 @@
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#ifndef _UAPI__IF_TUN_H
|
||||
#define _UAPI__IF_TUN_H
|
||||
#ifndef __IF_TUN_H
|
||||
#define __IF_TUN_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/if_ether.h>
|
||||
@ -115,4 +115,4 @@ struct tun_filter {
|
||||
__u8 addr[][ETH_ALEN];
|
||||
};
|
||||
|
||||
#endif /* _UAPI__IF_TUN_H */
|
||||
#endif /* __IF_TUN_H */
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _UAPI_IF_TUNNEL_H_
|
||||
#define _UAPI_IF_TUNNEL_H_
|
||||
#ifndef _IF_TUNNEL_H_
|
||||
#define _IF_TUNNEL_H_
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/if.h>
|
||||
@ -146,7 +146,7 @@ enum {
|
||||
#define IFLA_GRE_MAX (__IFLA_GRE_MAX - 1)
|
||||
|
||||
/* VTI-mode i_flags */
|
||||
#define VTI_ISVTI ((__force __be16)0x0001)
|
||||
#define VTI_ISVTI ((__be16)0x0001)
|
||||
|
||||
enum {
|
||||
IFLA_VTI_UNSPEC,
|
||||
@ -161,6 +161,13 @@ enum {
|
||||
|
||||
#define IFLA_VTI_MAX (__IFLA_VTI_MAX - 1)
|
||||
|
||||
/* Historically, tunnel flags have been defined as __be16 and now there are
|
||||
* no free bits left. It is strongly advised to switch the already existing
|
||||
* userspace code to the new *_BIT definitions from down below, as __be16
|
||||
* can't be simply cast to a wider type on LE systems. All new flags and
|
||||
* code must use *_BIT only.
|
||||
*/
|
||||
|
||||
#define TUNNEL_CSUM __cpu_to_be16(0x01)
|
||||
#define TUNNEL_ROUTING __cpu_to_be16(0x02)
|
||||
#define TUNNEL_KEY __cpu_to_be16(0x04)
|
||||
@ -182,4 +189,31 @@ enum {
|
||||
(TUNNEL_GENEVE_OPT | TUNNEL_VXLAN_OPT | TUNNEL_ERSPAN_OPT | \
|
||||
TUNNEL_GTP_OPT)
|
||||
|
||||
#endif /* _UAPI_IF_TUNNEL_H_ */
|
||||
enum {
|
||||
IP_TUNNEL_CSUM_BIT = 0U,
|
||||
IP_TUNNEL_ROUTING_BIT,
|
||||
IP_TUNNEL_KEY_BIT,
|
||||
IP_TUNNEL_SEQ_BIT,
|
||||
IP_TUNNEL_STRICT_BIT,
|
||||
IP_TUNNEL_REC_BIT,
|
||||
IP_TUNNEL_VERSION_BIT,
|
||||
IP_TUNNEL_NO_KEY_BIT,
|
||||
IP_TUNNEL_DONT_FRAGMENT_BIT,
|
||||
IP_TUNNEL_OAM_BIT,
|
||||
IP_TUNNEL_CRIT_OPT_BIT,
|
||||
IP_TUNNEL_GENEVE_OPT_BIT, /* OPTIONS_PRESENT */
|
||||
IP_TUNNEL_VXLAN_OPT_BIT, /* OPTIONS_PRESENT */
|
||||
IP_TUNNEL_NOCACHE_BIT,
|
||||
IP_TUNNEL_ERSPAN_OPT_BIT, /* OPTIONS_PRESENT */
|
||||
IP_TUNNEL_GTP_OPT_BIT, /* OPTIONS_PRESENT */
|
||||
|
||||
IP_TUNNEL_VTI_BIT,
|
||||
IP_TUNNEL_SIT_ISATAP_BIT = IP_TUNNEL_VTI_BIT,
|
||||
|
||||
/* Flags starting from here are not available via the old UAPI */
|
||||
IP_TUNNEL_PFCP_OPT_BIT, /* OPTIONS_PRESENT */
|
||||
|
||||
__IP_TUNNEL_FLAG_NUM,
|
||||
};
|
||||
|
||||
#endif /* _IF_TUNNEL_H_ */
|
||||
|
@ -16,8 +16,8 @@
|
||||
* as published by the Free Software Foundation; either version
|
||||
* 2 of the License, or (at your option) any later version.
|
||||
*/
|
||||
#ifndef _UAPI_LINUX_IN_H
|
||||
#define _UAPI_LINUX_IN_H
|
||||
#ifndef _LINUX_IN_H
|
||||
#define _LINUX_IN_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/stddef.h>
|
||||
@ -330,4 +330,4 @@ struct sockaddr_in {
|
||||
#include <asm/byteorder.h>
|
||||
|
||||
|
||||
#endif /* _UAPI_LINUX_IN_H */
|
||||
#endif /* _LINUX_IN_H */
|
||||
|
@ -19,8 +19,8 @@
|
||||
* 2 of the License, or (at your option) any later version.
|
||||
*/
|
||||
|
||||
#ifndef _UAPI_LINUX_IN6_H
|
||||
#define _UAPI_LINUX_IN6_H
|
||||
#ifndef _LINUX_IN6_H
|
||||
#define _LINUX_IN6_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/libc-compat.h>
|
||||
@ -299,4 +299,4 @@ struct in6_flowlabel_req {
|
||||
* ...
|
||||
* MRT6_MAX
|
||||
*/
|
||||
#endif /* _UAPI_LINUX_IN6_H */
|
||||
#endif /* _LINUX_IN6_H */
|
||||
|
@ -11,8 +11,8 @@
|
||||
* 2 of the License, or (at your option) any later version.
|
||||
*/
|
||||
|
||||
#ifndef _UAPI_LINUX_IPV6_ROUTE_H
|
||||
#define _UAPI_LINUX_IPV6_ROUTE_H
|
||||
#ifndef _LINUX_IPV6_ROUTE_H
|
||||
#define _LINUX_IPV6_ROUTE_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/in6.h> /* For struct in6_addr. */
|
||||
@ -61,4 +61,4 @@ struct in6_rtmsg {
|
||||
#define IP6_RT_PRIO_USER 1024
|
||||
#define IP6_RT_PRIO_ADDRCONF 256
|
||||
|
||||
#endif /* _UAPI_LINUX_IPV6_ROUTE_H */
|
||||
#endif /* _LINUX_IPV6_ROUTE_H */
|
||||
|
@ -5,8 +5,8 @@
|
||||
* Author: James Chapman <jchapman@katalix.com>
|
||||
*/
|
||||
|
||||
#ifndef _UAPI_LINUX_L2TP_H_
|
||||
#define _UAPI_LINUX_L2TP_H_
|
||||
#ifndef _LINUX_L2TP_H_
|
||||
#define _LINUX_L2TP_H_
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/socket.h>
|
||||
@ -200,4 +200,4 @@ enum l2tp_debug_flags {
|
||||
#define L2TP_GENL_VERSION 0x1
|
||||
#define L2TP_GENL_MCGROUP "l2tp"
|
||||
|
||||
#endif /* _UAPI_LINUX_L2TP_H_ */
|
||||
#endif /* _LINUX_L2TP_H_ */
|
||||
|
@ -46,8 +46,8 @@
|
||||
*
|
||||
* This prevents the redefinition of a construct already defined by the kernel.
|
||||
*/
|
||||
#ifndef _UAPI_LIBC_COMPAT_H
|
||||
#define _UAPI_LIBC_COMPAT_H
|
||||
#ifndef _LIBC_COMPAT_H
|
||||
#define _LIBC_COMPAT_H
|
||||
|
||||
/* We have included glibc headers... */
|
||||
#if defined(__GLIBC__)
|
||||
@ -264,4 +264,4 @@
|
||||
|
||||
#endif /* __GLIBC__ */
|
||||
|
||||
#endif /* _UAPI_LIBC_COMPAT_H */
|
||||
#endif /* _LIBC_COMPAT_H */
|
||||
|
@ -37,6 +37,7 @@
|
||||
#define HOSTFS_SUPER_MAGIC 0x00c0ffee
|
||||
#define OVERLAYFS_SUPER_MAGIC 0x794c7630
|
||||
#define FUSE_SUPER_MAGIC 0x65735546
|
||||
#define BCACHEFS_SUPER_MAGIC 0xca451a4e
|
||||
|
||||
#define MINIX_SUPER_MAGIC 0x137F /* minix v1 fs, 14 char names */
|
||||
#define MINIX_SUPER_MAGIC2 0x138F /* minix v1 fs, 30 char names */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
|
||||
|
||||
#ifndef _UAPI_LINUX_MRP_BRIDGE_H_
|
||||
#define _UAPI_LINUX_MRP_BRIDGE_H_
|
||||
#ifndef _LINUX_MRP_BRIDGE_H_
|
||||
#define _LINUX_MRP_BRIDGE_H_
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/if_ether.h>
|
||||
|
@ -23,8 +23,8 @@
|
||||
*
|
||||
* Moved to /usr/include/linux for NET3
|
||||
*/
|
||||
#ifndef _UAPI_LINUX_NETDEVICE_H
|
||||
#define _UAPI_LINUX_NETDEVICE_H
|
||||
#ifndef _LINUX_NETDEVICE_H
|
||||
#define _LINUX_NETDEVICE_H
|
||||
|
||||
#include <linux/if.h>
|
||||
#include <linux/if_ether.h>
|
||||
@ -63,4 +63,4 @@ enum {
|
||||
#define NET_ADDR_SET 3 /* address is set using
|
||||
* dev_set_mac_address() */
|
||||
|
||||
#endif /* _UAPI_LINUX_NETDEVICE_H */
|
||||
#endif /* _LINUX_NETDEVICE_H */
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _UAPI_NFNETLINK_H
|
||||
#define _UAPI_NFNETLINK_H
|
||||
#ifndef _NFNETLINK_H
|
||||
#define _NFNETLINK_H
|
||||
#include <linux/types.h>
|
||||
#include <linux/netfilter/nfnetlink_compat.h>
|
||||
|
||||
@ -79,4 +79,4 @@ enum nfnl_batch_attributes {
|
||||
};
|
||||
#define NFNL_BATCH_MAX (__NFNL_BATCH_MAX - 1)
|
||||
|
||||
#endif /* _UAPI_NFNETLINK_H */
|
||||
#endif /* _NFNETLINK_H */
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _UAPI__LINUX_NETLINK_H
|
||||
#define _UAPI__LINUX_NETLINK_H
|
||||
#ifndef __LINUX_NETLINK_H
|
||||
#define __LINUX_NETLINK_H
|
||||
|
||||
#include <linux/const.h>
|
||||
#include <linux/socket.h> /* for __kernel_sa_family_t */
|
||||
@ -165,10 +165,8 @@ enum nlmsgerr_attrs {
|
||||
#define NETLINK_PKTINFO 3
|
||||
#define NETLINK_BROADCAST_ERROR 4
|
||||
#define NETLINK_NO_ENOBUFS 5
|
||||
#ifndef __KERNEL__
|
||||
#define NETLINK_RX_RING 6
|
||||
#define NETLINK_TX_RING 7
|
||||
#endif
|
||||
#define NETLINK_LISTEN_ALL_NSID 8
|
||||
#define NETLINK_LIST_MEMBERSHIPS 9
|
||||
#define NETLINK_CAP_ACK 10
|
||||
@ -196,7 +194,6 @@ struct nl_mmap_hdr {
|
||||
__u32 nm_gid;
|
||||
};
|
||||
|
||||
#ifndef __KERNEL__
|
||||
enum nl_mmap_status {
|
||||
NL_MMAP_STATUS_UNUSED,
|
||||
NL_MMAP_STATUS_RESERVED,
|
||||
@ -208,7 +205,6 @@ enum nl_mmap_status {
|
||||
#define NL_MMAP_MSG_ALIGNMENT NLMSG_ALIGNTO
|
||||
#define NL_MMAP_MSG_ALIGN(sz) __ALIGN_KERNEL(sz, NL_MMAP_MSG_ALIGNMENT)
|
||||
#define NL_MMAP_HDRLEN NL_MMAP_MSG_ALIGN(sizeof(struct nl_mmap_hdr))
|
||||
#endif
|
||||
|
||||
#define NET_MAJOR 36 /* Major 36 is reserved for networking */
|
||||
|
||||
@ -380,4 +376,4 @@ enum netlink_policy_type_attr {
|
||||
NL_POLICY_TYPE_ATTR_MAX = __NL_POLICY_TYPE_ATTR_MAX - 1
|
||||
};
|
||||
|
||||
#endif /* _UAPI__LINUX_NETLINK_H */
|
||||
#endif /* __LINUX_NETLINK_H */
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _UAPI_LINUX_NEXTHOP_H
|
||||
#define _UAPI_LINUX_NEXTHOP_H
|
||||
#ifndef _LINUX_NEXTHOP_H
|
||||
#define _LINUX_NEXTHOP_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
|
@ -413,8 +413,8 @@
|
||||
* are like for %NL80211_CMD_SET_BEACON, and additionally parameters that
|
||||
* do not change are used, these include %NL80211_ATTR_BEACON_INTERVAL,
|
||||
* %NL80211_ATTR_DTIM_PERIOD, %NL80211_ATTR_SSID,
|
||||
* %NL80211_ATTR_HIDDEN_SSID, %NL80211_ATTR_CIPHERS_PAIRWISE,
|
||||
* %NL80211_ATTR_CIPHER_GROUP, %NL80211_ATTR_WPA_VERSIONS,
|
||||
* %NL80211_ATTR_HIDDEN_SSID, %NL80211_ATTR_CIPHER_SUITES_PAIRWISE,
|
||||
* %NL80211_ATTR_CIPHER_SUITE_GROUP, %NL80211_ATTR_WPA_VERSIONS,
|
||||
* %NL80211_ATTR_AKM_SUITES, %NL80211_ATTR_PRIVACY,
|
||||
* %NL80211_ATTR_AUTH_TYPE, %NL80211_ATTR_INACTIVITY_TIMEOUT,
|
||||
* %NL80211_ATTR_ACL_POLICY and %NL80211_ATTR_MAC_ADDRS.
|
||||
@ -442,20 +442,15 @@
|
||||
* stations connected and using at least that link as one of its links.
|
||||
*
|
||||
* @NL80211_CMD_GET_MPATH: Get mesh path attributes for mesh path to
|
||||
* destination %NL80211_ATTR_MAC on the interface identified by
|
||||
* %NL80211_ATTR_IFINDEX.
|
||||
* destination %NL80211_ATTR_MAC on the interface identified by
|
||||
* %NL80211_ATTR_IFINDEX.
|
||||
* @NL80211_CMD_SET_MPATH: Set mesh path attributes for mesh path to
|
||||
* destination %NL80211_ATTR_MAC on the interface identified by
|
||||
* %NL80211_ATTR_IFINDEX.
|
||||
* destination %NL80211_ATTR_MAC on the interface identified by
|
||||
* %NL80211_ATTR_IFINDEX.
|
||||
* @NL80211_CMD_NEW_MPATH: Create a new mesh path for the destination given by
|
||||
* %NL80211_ATTR_MAC via %NL80211_ATTR_MPATH_NEXT_HOP.
|
||||
* @NL80211_CMD_DEL_MPATH: Delete a mesh path to the destination given by
|
||||
* %NL80211_ATTR_MAC.
|
||||
* @NL80211_CMD_NEW_PATH: Add a mesh path with given attributes to the
|
||||
* interface identified by %NL80211_ATTR_IFINDEX.
|
||||
* @NL80211_CMD_DEL_PATH: Remove a mesh path identified by %NL80211_ATTR_MAC
|
||||
* or, if no MAC address given, all mesh paths, on the interface identified
|
||||
* by %NL80211_ATTR_IFINDEX.
|
||||
* @NL80211_CMD_SET_BSS: Set BSS attributes for BSS identified by
|
||||
* %NL80211_ATTR_IFINDEX.
|
||||
*
|
||||
@ -476,15 +471,15 @@
|
||||
* after being queried by the kernel. CRDA replies by sending a regulatory
|
||||
* domain structure which consists of %NL80211_ATTR_REG_ALPHA set to our
|
||||
* current alpha2 if it found a match. It also provides
|
||||
* NL80211_ATTR_REG_RULE_FLAGS, and a set of regulatory rules. Each
|
||||
* regulatory rule is a nested set of attributes given by
|
||||
* %NL80211_ATTR_REG_RULE_FREQ_[START|END] and
|
||||
* %NL80211_ATTR_FREQ_RANGE_MAX_BW with an attached power rule given by
|
||||
* %NL80211_ATTR_REG_RULE_POWER_MAX_ANT_GAIN and
|
||||
* %NL80211_ATTR_REG_RULE_POWER_MAX_EIRP.
|
||||
* NL80211_ATTR_REG_RULE_FLAGS, and a set of regulatory rules. Each
|
||||
* regulatory rule is a nested set of attributes given by
|
||||
* %NL80211_ATTR_REG_RULE_FREQ_[START|END] and
|
||||
* %NL80211_ATTR_FREQ_RANGE_MAX_BW with an attached power rule given by
|
||||
* %NL80211_ATTR_REG_RULE_POWER_MAX_ANT_GAIN and
|
||||
* %NL80211_ATTR_REG_RULE_POWER_MAX_EIRP.
|
||||
* @NL80211_CMD_REQ_SET_REG: ask the wireless core to set the regulatory domain
|
||||
* to the specified ISO/IEC 3166-1 alpha2 country code. The core will
|
||||
* store this as a valid request and then query userspace for it.
|
||||
* to the specified ISO/IEC 3166-1 alpha2 country code. The core will
|
||||
* store this as a valid request and then query userspace for it.
|
||||
*
|
||||
* @NL80211_CMD_GET_MESH_CONFIG: Get mesh networking properties for the
|
||||
* interface identified by %NL80211_ATTR_IFINDEX
|
||||
@ -574,31 +569,31 @@
|
||||
* @NL80211_CMD_FLUSH_PMKSA: Flush all PMKSA cache entries.
|
||||
*
|
||||
* @NL80211_CMD_REG_CHANGE: indicates to userspace the regulatory domain
|
||||
* has been changed and provides details of the request information
|
||||
* that caused the change such as who initiated the regulatory request
|
||||
* (%NL80211_ATTR_REG_INITIATOR), the wiphy_idx
|
||||
* (%NL80211_ATTR_REG_ALPHA2) on which the request was made from if
|
||||
* the initiator was %NL80211_REGDOM_SET_BY_COUNTRY_IE or
|
||||
* %NL80211_REGDOM_SET_BY_DRIVER, the type of regulatory domain
|
||||
* set (%NL80211_ATTR_REG_TYPE), if the type of regulatory domain is
|
||||
* %NL80211_REG_TYPE_COUNTRY the alpha2 to which we have moved on
|
||||
* to (%NL80211_ATTR_REG_ALPHA2).
|
||||
* has been changed and provides details of the request information
|
||||
* that caused the change such as who initiated the regulatory request
|
||||
* (%NL80211_ATTR_REG_INITIATOR), the wiphy_idx
|
||||
* (%NL80211_ATTR_REG_ALPHA2) on which the request was made from if
|
||||
* the initiator was %NL80211_REGDOM_SET_BY_COUNTRY_IE or
|
||||
* %NL80211_REGDOM_SET_BY_DRIVER, the type of regulatory domain
|
||||
* set (%NL80211_ATTR_REG_TYPE), if the type of regulatory domain is
|
||||
* %NL80211_REG_TYPE_COUNTRY the alpha2 to which we have moved on
|
||||
* to (%NL80211_ATTR_REG_ALPHA2).
|
||||
* @NL80211_CMD_REG_BEACON_HINT: indicates to userspace that an AP beacon
|
||||
* has been found while world roaming thus enabling active scan or
|
||||
* any mode of operation that initiates TX (beacons) on a channel
|
||||
* where we would not have been able to do either before. As an example
|
||||
* if you are world roaming (regulatory domain set to world or if your
|
||||
* driver is using a custom world roaming regulatory domain) and while
|
||||
* doing a passive scan on the 5 GHz band you find an AP there (if not
|
||||
* on a DFS channel) you will now be able to actively scan for that AP
|
||||
* or use AP mode on your card on that same channel. Note that this will
|
||||
* never be used for channels 1-11 on the 2 GHz band as they are always
|
||||
* enabled world wide. This beacon hint is only sent if your device had
|
||||
* either disabled active scanning or beaconing on a channel. We send to
|
||||
* userspace the wiphy on which we removed a restriction from
|
||||
* (%NL80211_ATTR_WIPHY) and the channel on which this occurred
|
||||
* before (%NL80211_ATTR_FREQ_BEFORE) and after (%NL80211_ATTR_FREQ_AFTER)
|
||||
* the beacon hint was processed.
|
||||
* has been found while world roaming thus enabling active scan or
|
||||
* any mode of operation that initiates TX (beacons) on a channel
|
||||
* where we would not have been able to do either before. As an example
|
||||
* if you are world roaming (regulatory domain set to world or if your
|
||||
* driver is using a custom world roaming regulatory domain) and while
|
||||
* doing a passive scan on the 5 GHz band you find an AP there (if not
|
||||
* on a DFS channel) you will now be able to actively scan for that AP
|
||||
* or use AP mode on your card on that same channel. Note that this will
|
||||
* never be used for channels 1-11 on the 2 GHz band as they are always
|
||||
* enabled world wide. This beacon hint is only sent if your device had
|
||||
* either disabled active scanning or beaconing on a channel. We send to
|
||||
* userspace the wiphy on which we removed a restriction from
|
||||
* (%NL80211_ATTR_WIPHY) and the channel on which this occurred
|
||||
* before (%NL80211_ATTR_FREQ_BEFORE) and after (%NL80211_ATTR_FREQ_AFTER)
|
||||
* the beacon hint was processed.
|
||||
*
|
||||
* @NL80211_CMD_AUTHENTICATE: authentication request and notification.
|
||||
* This command is used both as a command (request to authenticate) and
|
||||
@ -1120,7 +1115,7 @@
|
||||
* current configuration is not changed. If it is present but
|
||||
* set to zero, the configuration is changed to don't-care
|
||||
* (i.e. the device can decide what to do).
|
||||
* @NL80211_CMD_NAN_FUNC_MATCH: Notification sent when a match is reported.
|
||||
* @NL80211_CMD_NAN_MATCH: Notification sent when a match is reported.
|
||||
* This will contain a %NL80211_ATTR_NAN_MATCH nested attribute and
|
||||
* %NL80211_ATTR_COOKIE.
|
||||
*
|
||||
@ -1715,21 +1710,21 @@ enum nl80211_commands {
|
||||
* (see &enum nl80211_plink_action).
|
||||
* @NL80211_ATTR_MPATH_NEXT_HOP: MAC address of the next hop for a mesh path.
|
||||
* @NL80211_ATTR_MPATH_INFO: information about a mesh_path, part of mesh path
|
||||
* info given for %NL80211_CMD_GET_MPATH, nested attribute described at
|
||||
* info given for %NL80211_CMD_GET_MPATH, nested attribute described at
|
||||
* &enum nl80211_mpath_info.
|
||||
*
|
||||
* @NL80211_ATTR_MNTR_FLAGS: flags, nested element with NLA_FLAG attributes of
|
||||
* &enum nl80211_mntr_flags.
|
||||
*
|
||||
* @NL80211_ATTR_REG_ALPHA2: an ISO-3166-alpha2 country code for which the
|
||||
* current regulatory domain should be set to or is already set to.
|
||||
* For example, 'CR', for Costa Rica. This attribute is used by the kernel
|
||||
* to query the CRDA to retrieve one regulatory domain. This attribute can
|
||||
* also be used by userspace to query the kernel for the currently set
|
||||
* regulatory domain. We chose an alpha2 as that is also used by the
|
||||
* IEEE-802.11 country information element to identify a country.
|
||||
* Users can also simply ask the wireless core to set regulatory domain
|
||||
* to a specific alpha2.
|
||||
* current regulatory domain should be set to or is already set to.
|
||||
* For example, 'CR', for Costa Rica. This attribute is used by the kernel
|
||||
* to query the CRDA to retrieve one regulatory domain. This attribute can
|
||||
* also be used by userspace to query the kernel for the currently set
|
||||
* regulatory domain. We chose an alpha2 as that is also used by the
|
||||
* IEEE-802.11 country information element to identify a country.
|
||||
* Users can also simply ask the wireless core to set regulatory domain
|
||||
* to a specific alpha2.
|
||||
* @NL80211_ATTR_REG_RULES: a nested array of regulatory domain regulatory
|
||||
* rules.
|
||||
*
|
||||
@ -1772,9 +1767,9 @@ enum nl80211_commands {
|
||||
* @NL80211_ATTR_BSS: scan result BSS
|
||||
*
|
||||
* @NL80211_ATTR_REG_INITIATOR: indicates who requested the regulatory domain
|
||||
* currently in effect. This could be any of the %NL80211_REGDOM_SET_BY_*
|
||||
* currently in effect. This could be any of the %NL80211_REGDOM_SET_BY_*
|
||||
* @NL80211_ATTR_REG_TYPE: indicates the type of the regulatory domain currently
|
||||
* set. This can be one of the nl80211_reg_type (%NL80211_REGDOM_TYPE_*)
|
||||
* set. This can be one of the nl80211_reg_type (%NL80211_REGDOM_TYPE_*)
|
||||
*
|
||||
* @NL80211_ATTR_SUPPORTED_COMMANDS: wiphy attribute that specifies
|
||||
* an array of command numbers (i.e. a mapping index to command number)
|
||||
@ -1793,15 +1788,15 @@ enum nl80211_commands {
|
||||
* a u32
|
||||
*
|
||||
* @NL80211_ATTR_FREQ_BEFORE: A channel which has suffered a regulatory change
|
||||
* due to considerations from a beacon hint. This attribute reflects
|
||||
* the state of the channel _before_ the beacon hint processing. This
|
||||
* attributes consists of a nested attribute containing
|
||||
* NL80211_FREQUENCY_ATTR_*
|
||||
* due to considerations from a beacon hint. This attribute reflects
|
||||
* the state of the channel _before_ the beacon hint processing. This
|
||||
* attributes consists of a nested attribute containing
|
||||
* NL80211_FREQUENCY_ATTR_*
|
||||
* @NL80211_ATTR_FREQ_AFTER: A channel which has suffered a regulatory change
|
||||
* due to considerations from a beacon hint. This attribute reflects
|
||||
* the state of the channel _after_ the beacon hint processing. This
|
||||
* attributes consists of a nested attribute containing
|
||||
* NL80211_FREQUENCY_ATTR_*
|
||||
* due to considerations from a beacon hint. This attribute reflects
|
||||
* the state of the channel _after_ the beacon hint processing. This
|
||||
* attributes consists of a nested attribute containing
|
||||
* NL80211_FREQUENCY_ATTR_*
|
||||
*
|
||||
* @NL80211_ATTR_CIPHER_SUITES: a set of u32 values indicating the supported
|
||||
* cipher suites
|
||||
@ -1862,12 +1857,6 @@ enum nl80211_commands {
|
||||
* that protected APs should be used. This is also used with NEW_BEACON to
|
||||
* indicate that the BSS is to use protection.
|
||||
*
|
||||
* @NL80211_ATTR_CIPHERS_PAIRWISE: Used with CONNECT, ASSOCIATE, and NEW_BEACON
|
||||
* to indicate which unicast key ciphers will be used with the connection
|
||||
* (an array of u32).
|
||||
* @NL80211_ATTR_CIPHER_GROUP: Used with CONNECT, ASSOCIATE, and NEW_BEACON to
|
||||
* indicate which group key cipher will be used with the connection (a
|
||||
* u32).
|
||||
* @NL80211_ATTR_WPA_VERSIONS: Used with CONNECT, ASSOCIATE, and NEW_BEACON to
|
||||
* indicate which WPA version(s) the AP we want to associate with is using
|
||||
* (a u32 with flags from &enum nl80211_wpa_versions).
|
||||
@ -1898,6 +1887,7 @@ enum nl80211_commands {
|
||||
* with %NL80211_KEY_* sub-attributes
|
||||
*
|
||||
* @NL80211_ATTR_PID: Process ID of a network namespace.
|
||||
* @NL80211_ATTR_NETNS_FD: File descriptor of a network namespace.
|
||||
*
|
||||
* @NL80211_ATTR_GENERATION: Used to indicate consistent snapshots for
|
||||
* dumps. This number increases whenever the object list being
|
||||
@ -1952,6 +1942,7 @@ enum nl80211_commands {
|
||||
*
|
||||
* @NL80211_ATTR_ACK: Flag attribute indicating that the frame was
|
||||
* acknowledged by the recipient.
|
||||
* @NL80211_ATTR_ACK_SIGNAL: Station's ack signal strength (s32)
|
||||
*
|
||||
* @NL80211_ATTR_PS_STATE: powersave state, using &enum nl80211_ps_state values.
|
||||
*
|
||||
@ -2149,6 +2140,9 @@ enum nl80211_commands {
|
||||
* @NL80211_ATTR_DISABLE_HE: Force HE capable interfaces to disable
|
||||
* this feature during association. This is a flag attribute.
|
||||
* Currently only supported in mac80211 drivers.
|
||||
* @NL80211_ATTR_DISABLE_EHT: Force EHT capable interfaces to disable
|
||||
* this feature during association. This is a flag attribute.
|
||||
* Currently only supported in mac80211 drivers.
|
||||
* @NL80211_ATTR_HT_CAPABILITY_MASK: Specify which bits of the
|
||||
* ATTR_HT_CAPABILITY to which attention should be paid.
|
||||
* Currently, only mac80211 NICs support this feature.
|
||||
@ -2158,6 +2152,12 @@ enum nl80211_commands {
|
||||
* All values are treated as suggestions and may be ignored
|
||||
* by the driver as required. The actual values may be seen in
|
||||
* the station debugfs ht_caps file.
|
||||
* @NL80211_ATTR_VHT_CAPABILITY_MASK: Specify which bits of the
|
||||
* ATTR_VHT_CAPABILITY to which attention should be paid.
|
||||
* Currently, only mac80211 NICs support this feature.
|
||||
* All values are treated as suggestions and may be ignored
|
||||
* by the driver as required. The actual values may be seen in
|
||||
* the station debugfs vht_caps file.
|
||||
*
|
||||
* @NL80211_ATTR_DFS_REGION: region for regulatory rules which this country
|
||||
* abides to when initiating radiation on DFS channels. A country maps
|
||||
@ -2416,7 +2416,7 @@ enum nl80211_commands {
|
||||
* scheduled scan is started. Or the delay before a WoWLAN
|
||||
* net-detect scan is started, counting from the moment the
|
||||
* system is suspended. This value is a u32, in seconds.
|
||||
|
||||
*
|
||||
* @NL80211_ATTR_REG_INDOOR: flag attribute, if set indicates that the device
|
||||
* is operating in an indoor environment.
|
||||
*
|
||||
@ -3565,7 +3565,7 @@ enum nl80211_sta_flags {
|
||||
* enum nl80211_sta_p2p_ps_status - station support of P2P PS
|
||||
*
|
||||
* @NL80211_P2P_PS_UNSUPPORTED: station doesn't support P2P PS mechanism
|
||||
* @@NL80211_P2P_PS_SUPPORTED: station supports P2P PS mechanism
|
||||
* @NL80211_P2P_PS_SUPPORTED: station supports P2P PS mechanism
|
||||
* @NUM_NL80211_P2P_PS_STATUS: number of values
|
||||
*/
|
||||
enum nl80211_sta_p2p_ps_status {
|
||||
@ -3603,9 +3603,9 @@ enum nl80211_he_gi {
|
||||
|
||||
/**
|
||||
* enum nl80211_he_ltf - HE long training field
|
||||
* @NL80211_RATE_INFO_HE_1xLTF: 3.2 usec
|
||||
* @NL80211_RATE_INFO_HE_2xLTF: 6.4 usec
|
||||
* @NL80211_RATE_INFO_HE_4xLTF: 12.8 usec
|
||||
* @NL80211_RATE_INFO_HE_1XLTF: 3.2 usec
|
||||
* @NL80211_RATE_INFO_HE_2XLTF: 6.4 usec
|
||||
* @NL80211_RATE_INFO_HE_4XLTF: 12.8 usec
|
||||
*/
|
||||
enum nl80211_he_ltf {
|
||||
NL80211_RATE_INFO_HE_1XLTF,
|
||||
@ -3720,7 +3720,7 @@ enum nl80211_eht_ru_alloc {
|
||||
* @NL80211_RATE_INFO_HE_GI: HE guard interval identifier
|
||||
* (u8, see &enum nl80211_he_gi)
|
||||
* @NL80211_RATE_INFO_HE_DCM: HE DCM value (u8, 0/1)
|
||||
* @NL80211_RATE_INFO_RU_ALLOC: HE RU allocation, if not present then
|
||||
* @NL80211_RATE_INFO_HE_RU_ALLOC: HE RU allocation, if not present then
|
||||
* non-OFDMA was used (u8, see &enum nl80211_he_ru_alloc)
|
||||
* @NL80211_RATE_INFO_320_MHZ_WIDTH: 320 MHz bitrate
|
||||
* @NL80211_RATE_INFO_EHT_MCS: EHT MCS index (u8, 0-15)
|
||||
@ -3823,7 +3823,7 @@ enum nl80211_sta_bss_param {
|
||||
* (u64, to this station)
|
||||
* @NL80211_STA_INFO_SIGNAL: signal strength of last received PPDU (u8, dBm)
|
||||
* @NL80211_STA_INFO_TX_BITRATE: current unicast tx rate, nested attribute
|
||||
* containing info as possible, see &enum nl80211_rate_info
|
||||
* containing info as possible, see &enum nl80211_rate_info
|
||||
* @NL80211_STA_INFO_RX_PACKETS: total received packet (MSDUs and MMPDUs)
|
||||
* (u32, from this station)
|
||||
* @NL80211_STA_INFO_TX_PACKETS: total transmitted packets (MSDUs and MMPDUs)
|
||||
@ -3852,8 +3852,8 @@ enum nl80211_sta_bss_param {
|
||||
* Contains a nested array of signal strength attributes (u8, dBm)
|
||||
* @NL80211_STA_INFO_CHAIN_SIGNAL_AVG: per-chain signal strength average
|
||||
* Same format as NL80211_STA_INFO_CHAIN_SIGNAL.
|
||||
* @NL80211_STA_EXPECTED_THROUGHPUT: expected throughput considering also the
|
||||
* 802.11 header (u32, kbps)
|
||||
* @NL80211_STA_INFO_EXPECTED_THROUGHPUT: expected throughput considering also
|
||||
* the 802.11 header (u32, kbps)
|
||||
* @NL80211_STA_INFO_RX_DROP_MISC: RX packets dropped for unspecified reasons
|
||||
* (u64)
|
||||
* @NL80211_STA_INFO_BEACON_RX: number of beacons received from this peer (u64)
|
||||
@ -4039,7 +4039,7 @@ enum nl80211_mpath_flags {
|
||||
* @NL80211_MPATH_INFO_METRIC: metric (cost) of this mesh path
|
||||
* @NL80211_MPATH_INFO_EXPTIME: expiration time for the path, in msec from now
|
||||
* @NL80211_MPATH_INFO_FLAGS: mesh path flags, enumerated in
|
||||
* &enum nl80211_mpath_flags;
|
||||
* &enum nl80211_mpath_flags;
|
||||
* @NL80211_MPATH_INFO_DISCOVERY_TIMEOUT: total path discovery timeout, in msec
|
||||
* @NL80211_MPATH_INFO_DISCOVERY_RETRIES: mesh path discovery retries
|
||||
* @NL80211_MPATH_INFO_HOP_COUNT: hop count to destination
|
||||
@ -4179,7 +4179,7 @@ enum nl80211_band_attr {
|
||||
* @NL80211_WMMR_CW_MAX: Maximum contention window slot.
|
||||
* @NL80211_WMMR_AIFSN: Arbitration Inter Frame Space.
|
||||
* @NL80211_WMMR_TXOP: Maximum allowed tx operation time.
|
||||
* @nl80211_WMMR_MAX: highest possible wmm rule.
|
||||
* @NL80211_WMMR_MAX: highest possible wmm rule.
|
||||
* @__NL80211_WMMR_LAST: Internal use.
|
||||
*/
|
||||
enum nl80211_wmm_rule {
|
||||
@ -4201,8 +4201,9 @@ enum nl80211_wmm_rule {
|
||||
* @NL80211_FREQUENCY_ATTR_DISABLED: Channel is disabled in current
|
||||
* regulatory domain.
|
||||
* @NL80211_FREQUENCY_ATTR_NO_IR: no mechanisms that initiate radiation
|
||||
* are permitted on this channel, this includes sending probe
|
||||
* requests, or modes of operation that require beaconing.
|
||||
* are permitted on this channel, this includes sending probe
|
||||
* requests, or modes of operation that require beaconing.
|
||||
* @__NL80211_FREQUENCY_ATTR_NO_IBSS: obsolete, same as _NO_IR
|
||||
* @NL80211_FREQUENCY_ATTR_RADAR: Radar detection is mandatory
|
||||
* on this channel in current regulatory domain.
|
||||
* @NL80211_FREQUENCY_ATTR_MAX_TX_POWER: Maximum transmission power in mBm
|
||||
@ -4357,16 +4358,16 @@ enum nl80211_bitrate_attr {
|
||||
};
|
||||
|
||||
/**
|
||||
* enum nl80211_initiator - Indicates the initiator of a reg domain request
|
||||
* enum nl80211_reg_initiator - Indicates the initiator of a reg domain request
|
||||
* @NL80211_REGDOM_SET_BY_CORE: Core queried CRDA for a dynamic world
|
||||
* regulatory domain.
|
||||
* regulatory domain.
|
||||
* @NL80211_REGDOM_SET_BY_USER: User asked the wireless core to set the
|
||||
* regulatory domain.
|
||||
* regulatory domain.
|
||||
* @NL80211_REGDOM_SET_BY_DRIVER: a wireless drivers has hinted to the
|
||||
* wireless core it thinks its knows the regulatory domain we should be in.
|
||||
* wireless core it thinks its knows the regulatory domain we should be in.
|
||||
* @NL80211_REGDOM_SET_BY_COUNTRY_IE: the wireless core has received an
|
||||
* 802.11 country information element with regulatory information it
|
||||
* thinks we should consider. cfg80211 only processes the country
|
||||
* 802.11 country information element with regulatory information it
|
||||
* thinks we should consider. cfg80211 only processes the country
|
||||
* code from the IE, and relies on the regulatory domain information
|
||||
* structure passed by userspace (CRDA) from our wireless-regdb.
|
||||
* If a channel is enabled but the country code indicates it should
|
||||
@ -4385,11 +4386,11 @@ enum nl80211_reg_initiator {
|
||||
* to a specific country. When this is set you can count on the
|
||||
* ISO / IEC 3166 alpha2 country code being valid.
|
||||
* @NL80211_REGDOM_TYPE_WORLD: the regulatory set domain is the world regulatory
|
||||
* domain.
|
||||
* domain.
|
||||
* @NL80211_REGDOM_TYPE_CUSTOM_WORLD: the regulatory domain set is a custom
|
||||
* driver specific world regulatory domain. These do not apply system-wide
|
||||
* and are only applicable to the individual devices which have requested
|
||||
* them to be applied.
|
||||
* driver specific world regulatory domain. These do not apply system-wide
|
||||
* and are only applicable to the individual devices which have requested
|
||||
* them to be applied.
|
||||
* @NL80211_REGDOM_TYPE_INTERSECTION: the regulatory domain set is the product
|
||||
* of an intersection between two regulatory domains -- the previously
|
||||
* set regulatory domain on the system and the last accepted regulatory
|
||||
@ -4406,21 +4407,21 @@ enum nl80211_reg_type {
|
||||
* enum nl80211_reg_rule_attr - regulatory rule attributes
|
||||
* @__NL80211_REG_RULE_ATTR_INVALID: attribute number 0 is reserved
|
||||
* @NL80211_ATTR_REG_RULE_FLAGS: a set of flags which specify additional
|
||||
* considerations for a given frequency range. These are the
|
||||
* &enum nl80211_reg_rule_flags.
|
||||
* considerations for a given frequency range. These are the
|
||||
* &enum nl80211_reg_rule_flags.
|
||||
* @NL80211_ATTR_FREQ_RANGE_START: starting frequencry for the regulatory
|
||||
* rule in KHz. This is not a center of frequency but an actual regulatory
|
||||
* band edge.
|
||||
* rule in KHz. This is not a center of frequency but an actual regulatory
|
||||
* band edge.
|
||||
* @NL80211_ATTR_FREQ_RANGE_END: ending frequency for the regulatory rule
|
||||
* in KHz. This is not a center a frequency but an actual regulatory
|
||||
* band edge.
|
||||
* in KHz. This is not a center a frequency but an actual regulatory
|
||||
* band edge.
|
||||
* @NL80211_ATTR_FREQ_RANGE_MAX_BW: maximum allowed bandwidth for this
|
||||
* frequency range, in KHz.
|
||||
* @NL80211_ATTR_POWER_RULE_MAX_ANT_GAIN: the maximum allowed antenna gain
|
||||
* for a given frequency range. The value is in mBi (100 * dBi).
|
||||
* If you don't have one then don't send this.
|
||||
* for a given frequency range. The value is in mBi (100 * dBi).
|
||||
* If you don't have one then don't send this.
|
||||
* @NL80211_ATTR_POWER_RULE_MAX_EIRP: the maximum allowed EIRP for
|
||||
* a given frequency range. The value is in mBm (100 * dBm).
|
||||
* a given frequency range. The value is in mBm (100 * dBm).
|
||||
* @NL80211_ATTR_DFS_CAC_TIME: DFS CAC time in milliseconds.
|
||||
* If not present or 0 default CAC time will be used.
|
||||
* @NL80211_ATTR_POWER_RULE_PSD: power spectral density (in dBm).
|
||||
@ -4507,8 +4508,9 @@ enum nl80211_sched_scan_match_attr {
|
||||
* @NL80211_RRF_PTP_ONLY: this is only for Point To Point links
|
||||
* @NL80211_RRF_PTMP_ONLY: this is only for Point To Multi Point links
|
||||
* @NL80211_RRF_NO_IR: no mechanisms that initiate radiation are allowed,
|
||||
* this includes probe requests or modes of operation that require
|
||||
* beaconing.
|
||||
* this includes probe requests or modes of operation that require
|
||||
* beaconing.
|
||||
* @__NL80211_RRF_NO_IBSS: obsolete, same as NO_IR
|
||||
* @NL80211_RRF_AUTO_BW: maximum available bandwidth should be calculated
|
||||
* base on contiguous rules and wider channels will be allowed to cross
|
||||
* multiple contiguous/overlapping frequency ranges.
|
||||
@ -4522,9 +4524,9 @@ enum nl80211_sched_scan_match_attr {
|
||||
* @NL80211_RRF_NO_EHT: EHT operation not allowed
|
||||
* @NL80211_RRF_PSD: Ruleset has power spectral density value
|
||||
* @NL80211_RRF_DFS_CONCURRENT: Operation on this channel is allowed for
|
||||
peer-to-peer or adhoc communication under the control of a DFS master
|
||||
which operates on the same channel (FCC-594280 D01 Section B.3).
|
||||
Should be used together with %NL80211_RRF_DFS only.
|
||||
* peer-to-peer or adhoc communication under the control of a DFS master
|
||||
* which operates on the same channel (FCC-594280 D01 Section B.3).
|
||||
* Should be used together with %NL80211_RRF_DFS only.
|
||||
* @NL80211_RRF_NO_6GHZ_VLP_CLIENT: Client connection to VLP AP not allowed
|
||||
* @NL80211_RRF_NO_6GHZ_AFC_CLIENT: Client connection to AFC AP not allowed
|
||||
*/
|
||||
@ -4707,8 +4709,8 @@ enum nl80211_mntr_flags {
|
||||
* alternate between Active and Doze states, but may not wake up
|
||||
* for neighbor's beacons.
|
||||
*
|
||||
* @__NL80211_MESH_POWER_AFTER_LAST - internal use
|
||||
* @NL80211_MESH_POWER_MAX - highest possible power save level
|
||||
* @__NL80211_MESH_POWER_AFTER_LAST: internal use
|
||||
* @NL80211_MESH_POWER_MAX: highest possible power save level
|
||||
*/
|
||||
|
||||
enum nl80211_mesh_power_mode {
|
||||
@ -5728,7 +5730,7 @@ struct nl80211_pattern_support {
|
||||
* "TCP connection wakeup" for more details. This is a nested attribute
|
||||
* containing the exact information for establishing and keeping alive
|
||||
* the TCP connection.
|
||||
* @NL80211_WOWLAN_TRIG_TCP_WAKEUP_MATCH: For wakeup reporting only, the
|
||||
* @NL80211_WOWLAN_TRIG_WAKEUP_TCP_MATCH: For wakeup reporting only, the
|
||||
* wakeup packet was received on the TCP connection
|
||||
* @NL80211_WOWLAN_TRIG_WAKEUP_TCP_CONNLOST: For wakeup reporting only, the
|
||||
* TCP connection was lost or failed to be established
|
||||
@ -6077,7 +6079,7 @@ enum nl80211_plink_state {
|
||||
* @NL80211_PLINK_ACTION_BLOCK: block traffic from this mesh peer
|
||||
* @NUM_NL80211_PLINK_ACTIONS: number of possible actions
|
||||
*/
|
||||
enum plink_actions {
|
||||
enum nl80211_plink_action {
|
||||
NL80211_PLINK_ACTION_NO_ACTION,
|
||||
NL80211_PLINK_ACTION_OPEN,
|
||||
NL80211_PLINK_ACTION_BLOCK,
|
||||
@ -6404,6 +6406,7 @@ enum nl80211_feature_flags {
|
||||
* receiving control port frames over nl80211 instead of the netdevice.
|
||||
* @NL80211_EXT_FEATURE_ACK_SIGNAL_SUPPORT: This driver/device supports
|
||||
* (average) ACK signal strength reporting.
|
||||
* @NL80211_EXT_FEATURE_DATA_ACK_SIGNAL_SUPPORT: Backward-compatible ID
|
||||
* @NL80211_EXT_FEATURE_TXQS: Driver supports FQ-CoDel-enabled intermediate
|
||||
* TXQs.
|
||||
* @NL80211_EXT_FEATURE_SCAN_RANDOM_SN: Driver/device supports randomizing the
|
||||
@ -6787,6 +6790,8 @@ enum nl80211_acl_policy {
|
||||
* @NL80211_SMPS_STATIC: static SMPS (use a single antenna)
|
||||
* @NL80211_SMPS_DYNAMIC: dynamic smps (start with a single antenna and
|
||||
* turn on other antennas after CTS/RTS).
|
||||
* @__NL80211_SMPS_AFTER_LAST: internal
|
||||
* @NL80211_SMPS_MAX: highest used enumeration
|
||||
*/
|
||||
enum nl80211_smps_mode {
|
||||
NL80211_SMPS_OFF,
|
||||
@ -7008,6 +7013,8 @@ enum nl80211_bss_select_attr {
|
||||
* @NL80211_NAN_FUNC_PUBLISH: function is publish
|
||||
* @NL80211_NAN_FUNC_SUBSCRIBE: function is subscribe
|
||||
* @NL80211_NAN_FUNC_FOLLOW_UP: function is follow-up
|
||||
* @__NL80211_NAN_FUNC_TYPE_AFTER_LAST: internal use
|
||||
* @NL80211_NAN_FUNC_MAX_TYPE: internal use
|
||||
*/
|
||||
enum nl80211_nan_function_type {
|
||||
NL80211_NAN_FUNC_PUBLISH,
|
||||
@ -7168,7 +7175,7 @@ enum nl80211_nan_match_attributes {
|
||||
};
|
||||
|
||||
/**
|
||||
* nl80211_external_auth_action - Action to perform with external
|
||||
* enum nl80211_external_auth_action - Action to perform with external
|
||||
* authentication request. Used by NL80211_ATTR_EXTERNAL_AUTH_ACTION.
|
||||
* @NL80211_EXTERNAL_AUTH_START: Start the authentication.
|
||||
* @NL80211_EXTERNAL_AUTH_ABORT: Abort the ongoing authentication.
|
||||
@ -7186,7 +7193,7 @@ enum nl80211_external_auth_action {
|
||||
* @NL80211_FTM_RESP_ATTR_LCI: The content of Measurement Report Element
|
||||
* (9.4.2.22 in 802.11-2016) with type 8 - LCI (9.4.2.22.10),
|
||||
* i.e. starting with the measurement token
|
||||
* @NL80211_FTM_RESP_ATTR_CIVIC: The content of Measurement Report Element
|
||||
* @NL80211_FTM_RESP_ATTR_CIVICLOC: The content of Measurement Report Element
|
||||
* (9.4.2.22 in 802.11-2016) with type 11 - Civic (Section 9.4.2.22.13),
|
||||
* i.e. starting with the measurement token
|
||||
* @__NL80211_FTM_RESP_ATTR_LAST: Internal
|
||||
@ -7829,6 +7836,7 @@ enum nl80211_sae_pwe_mechanism {
|
||||
*
|
||||
* @NL80211_SAR_TYPE_POWER: power limitation specified in 0.25dBm unit
|
||||
*
|
||||
* @NUM_NL80211_SAR_TYPE: internal
|
||||
*/
|
||||
enum nl80211_sar_type {
|
||||
NL80211_SAR_TYPE_POWER,
|
||||
@ -7842,6 +7850,8 @@ enum nl80211_sar_type {
|
||||
/**
|
||||
* enum nl80211_sar_attrs - Attributes for SAR spec
|
||||
*
|
||||
* @__NL80211_SAR_ATTR_INVALID: Invalid
|
||||
*
|
||||
* @NL80211_SAR_ATTR_TYPE: the SAR type as defined in &enum nl80211_sar_type.
|
||||
*
|
||||
* @NL80211_SAR_ATTR_SPECS: Nested array of SAR power
|
||||
@ -7873,6 +7883,8 @@ enum nl80211_sar_attrs {
|
||||
/**
|
||||
* enum nl80211_sar_specs_attrs - Attributes for SAR power limit specs
|
||||
*
|
||||
* @__NL80211_SAR_ATTR_SPECS_INVALID: Invalid
|
||||
*
|
||||
* @NL80211_SAR_ATTR_SPECS_POWER: Required (s32)value to specify the actual
|
||||
* power limit value in units of 0.25 dBm if type is
|
||||
* NL80211_SAR_TYPE_POWER. (i.e., a value of 44 represents 11 dBm).
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _UAPI__LINUX_RTNETLINK_H
|
||||
#define _UAPI__LINUX_RTNETLINK_H
|
||||
#ifndef __LINUX_RTNETLINK_H
|
||||
#define __LINUX_RTNETLINK_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/netlink.h>
|
||||
@ -677,7 +677,6 @@ enum {
|
||||
|
||||
#define NDUSEROPT_MAX (__NDUSEROPT_MAX - 1)
|
||||
|
||||
#ifndef __KERNEL__
|
||||
/* RTnetlink multicast groups - backwards compatibility for userspace */
|
||||
#define RTMGRP_LINK 1
|
||||
#define RTMGRP_NOTIFY 2
|
||||
@ -698,7 +697,6 @@ enum {
|
||||
#define RTMGRP_DECnet_ROUTE 0x4000
|
||||
|
||||
#define RTMGRP_IPV6_PREFIX 0x20000
|
||||
#endif
|
||||
|
||||
/* RTnetlink multicast groups */
|
||||
enum rtnetlink_groups {
|
||||
@ -829,4 +827,4 @@ enum {
|
||||
|
||||
|
||||
|
||||
#endif /* _UAPI__LINUX_RTNETLINK_H */
|
||||
#endif /* __LINUX_RTNETLINK_H */
|
||||
|
@ -1,10 +1,11 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _UAPI_LINUX_STDDEF_H
|
||||
#define _UAPI_LINUX_STDDEF_H
|
||||
#ifndef _LINUX_STDDEF_H
|
||||
#define _LINUX_STDDEF_H
|
||||
|
||||
|
||||
|
||||
#ifndef __always_inline
|
||||
#define __always_inline inline
|
||||
#define __always_inline __inline__
|
||||
#endif
|
||||
|
||||
/**
|
||||
@ -54,4 +55,12 @@
|
||||
#define __counted_by(m)
|
||||
#endif
|
||||
|
||||
#endif /* _UAPI_LINUX_STDDEF_H */
|
||||
#ifndef __counted_by_le
|
||||
#define __counted_by_le(m)
|
||||
#endif
|
||||
|
||||
#ifndef __counted_by_be
|
||||
#define __counted_by_be(m)
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_STDDEF_H */
|
||||
|
@ -3,9 +3,31 @@
|
||||
set -eu
|
||||
set -o pipefail
|
||||
|
||||
for i in *.h */*.h; do
|
||||
curl --fail "https://raw.githubusercontent.com/torvalds/linux/master/include/uapi/linux/$i" -o "$i"
|
||||
# The directory must be userspace kernel header directory:
|
||||
# git clone git@github.com:torvalds/linux.git
|
||||
# make -C linux headers
|
||||
# ./update.sh linux
|
||||
SRCDIR=${1?}
|
||||
|
||||
sed -r -i -e 's/__user //g' -e '/^#include <linux\/compiler(_types)?.h>/ d' "$i"
|
||||
sed -r -i 's/^(#include <linux\/fs\.h>)/#if WANT_LINUX_FS_H\n\1\n#endif/' "$i"
|
||||
for i in *.h */*.h; do
|
||||
if [[ "$i" == bpf_insn.h ]]; then
|
||||
cp "$SRCDIR/samples/bpf/$i" "$i"
|
||||
else
|
||||
cp "$SRCDIR/usr/include/linux/$i" "$i"
|
||||
fi
|
||||
|
||||
case "$i" in
|
||||
auto_dev-ioctl.h)
|
||||
sed -r -i '/^#define[[:space:]]+AUTOFS_DEV_IOCTL_VERSION_MINOR/ s/[0-9]+/0/' "$i"
|
||||
;;
|
||||
btrfs.h)
|
||||
sed -r -i 's/^(#include <linux\/fs\.h>)/#if WANT_LINUX_FS_H\n\1\n#endif/' "$i"
|
||||
;;
|
||||
ethtool.h)
|
||||
sed -r -i '/return (ep->speed_hi << 16) | ep->speed;/ s/return .*;/return ((__u32) ep->speed_hi << 16) | (__u32) ep->speed;/' "$i"
|
||||
;;
|
||||
dm-ioctl.h)
|
||||
sed -r -i '/^#define[[:space:]]+DM_VERSION_MINOR/ s/[0-9]+/27/' "$i"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
14
src/basic/missing_bpf.h
Normal file
14
src/basic/missing_bpf.h
Normal file
@ -0,0 +1,14 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
#pragma once
|
||||
|
||||
#include <linux/bpf.h>
|
||||
|
||||
/* defined in linux/filter.h */
|
||||
/* Unconditional jumps, goto pc + off16 */
|
||||
#define BPF_JMP_A(OFF) \
|
||||
((struct bpf_insn) { \
|
||||
.code = BPF_JMP | BPF_JA, \
|
||||
.dst_reg = 0, \
|
||||
.src_reg = 0, \
|
||||
.off = OFF, \
|
||||
.imm = 0 })
|
@ -8,6 +8,7 @@
|
||||
#include "devnum-util.h"
|
||||
#include "fd-util.h"
|
||||
#include "fileio.h"
|
||||
#include "missing_bpf.h"
|
||||
#include "nulstr-util.h"
|
||||
#include "parse-util.h"
|
||||
#include "path-util.h"
|
||||
|
@ -1,9 +0,0 @@
|
||||
The files in this directory are copied from kernel-6.2, and the following modifications are applied:
|
||||
- auto_dev-ioctl.h: set AUTOFS_DEV_IOCTL_VERSION_MINOR to 0
|
||||
- auto_dev-ioctl.h: define AUTOFS_IOCTL if not defined
|
||||
- auto_dev-ioctl.h: use of fake flexible array is fixed
|
||||
- bpf_insn.h: This is imported from samples/bpf/bpf_insn.h
|
||||
- bpf_insn.h: BPF_JMP_A() macro is also imported from include/linux/filter.h
|
||||
- dm-ioctl.h: set DM_VERSION_MINOR to 27
|
||||
- ethtool.h: define __KERNEL_DIV_ROUND_UP if not defined
|
||||
- ethtool.h: add casts in ethtool_cmd_speed()
|
@ -300,7 +300,7 @@ shared_sources += shared_generated_gperf_headers
|
||||
fname = 'ethtool-link-mode.h'
|
||||
ethtool_link_mode_h = custom_target(
|
||||
fname,
|
||||
input : ['ethtool-link-mode.py', 'linux/ethtool.h'],
|
||||
input : ['ethtool-link-mode.py', '../basic/linux/ethtool.h'],
|
||||
output : fname,
|
||||
command : [python, '@INPUT0@', '--header', cpp, '@INPUT1@'],
|
||||
capture : true)
|
||||
@ -309,7 +309,7 @@ shared_sources += ethtool_link_mode_h
|
||||
fname = 'ethtool-link-mode.xml'
|
||||
ethtool_link_mode_xml = custom_target(
|
||||
fname,
|
||||
input : ['ethtool-link-mode.py', 'linux/ethtool.h'],
|
||||
input : ['ethtool-link-mode.py', '../basic/linux/ethtool.h'],
|
||||
output : fname,
|
||||
command : [python, '@INPUT0@', '--xml', cpp, '@INPUT1@'],
|
||||
capture : true)
|
||||
|
Loading…
x
Reference in New Issue
Block a user