Update kernel headers
Update kernel headers to commit:
4349abdb409b ("net: dsa: don't print non-fatal MTU error if not supported")
Signed-off-by: David Ahern <dsahern@gmail.com>
This commit is contained in:
parent
abee772ff1
commit
c8eb4b52c1
|
|
@ -155,6 +155,7 @@ enum bpf_map_type {
|
|||
BPF_MAP_TYPE_DEVMAP_HASH,
|
||||
BPF_MAP_TYPE_STRUCT_OPS,
|
||||
BPF_MAP_TYPE_RINGBUF,
|
||||
BPF_MAP_TYPE_INODE_STORAGE,
|
||||
};
|
||||
|
||||
/* Note that tracing related programs such as
|
||||
|
|
@ -345,6 +346,14 @@ enum bpf_link_type {
|
|||
/* The verifier internal test flag. Behavior is undefined */
|
||||
#define BPF_F_TEST_STATE_FREQ (1U << 3)
|
||||
|
||||
/* If BPF_F_SLEEPABLE is used in BPF_PROG_LOAD command, the verifier will
|
||||
* restrict map and helper usage for such programs. Sleepable BPF programs can
|
||||
* only be attached to hooks where kernel execution context allows sleeping.
|
||||
* Such programs are allowed to use helpers that may sleep like
|
||||
* bpf_copy_from_user().
|
||||
*/
|
||||
#define BPF_F_SLEEPABLE (1U << 4)
|
||||
|
||||
/* When BPF ldimm64's insn[0].src_reg != 0 then this can have
|
||||
* two extensions:
|
||||
*
|
||||
|
|
@ -767,7 +776,7 @@ union bpf_attr {
|
|||
*
|
||||
* Also, note that **bpf_trace_printk**\ () is slow, and should
|
||||
* only be used for debugging purposes. For this reason, a notice
|
||||
* bloc (spanning several lines) is printed to kernel logs and
|
||||
* block (spanning several lines) is printed to kernel logs and
|
||||
* states that the helper should not be used "for production use"
|
||||
* the first time this helper is used (or more precisely, when
|
||||
* **trace_printk**\ () buffers are allocated). For passing values
|
||||
|
|
@ -1033,14 +1042,14 @@ union bpf_attr {
|
|||
*
|
||||
* int ret;
|
||||
* struct bpf_tunnel_key key = {};
|
||||
*
|
||||
*
|
||||
* ret = bpf_skb_get_tunnel_key(skb, &key, sizeof(key), 0);
|
||||
* if (ret < 0)
|
||||
* return TC_ACT_SHOT; // drop packet
|
||||
*
|
||||
*
|
||||
* if (key.remote_ipv4 != 0x0a000001)
|
||||
* return TC_ACT_SHOT; // drop packet
|
||||
*
|
||||
*
|
||||
* return TC_ACT_OK; // accept packet
|
||||
*
|
||||
* This interface can also be used with all encapsulation devices
|
||||
|
|
@ -1147,7 +1156,7 @@ union bpf_attr {
|
|||
* Description
|
||||
* Retrieve the realm or the route, that is to say the
|
||||
* **tclassid** field of the destination for the *skb*. The
|
||||
* indentifier retrieved is a user-provided tag, similar to the
|
||||
* identifier retrieved is a user-provided tag, similar to the
|
||||
* one used with the net_cls cgroup (see description for
|
||||
* **bpf_get_cgroup_classid**\ () helper), but here this tag is
|
||||
* held by a route (a destination entry), not by a task.
|
||||
|
|
@ -2807,7 +2816,7 @@ union bpf_attr {
|
|||
*
|
||||
* **-ERANGE** if resulting value was out of range.
|
||||
*
|
||||
* void *bpf_sk_storage_get(struct bpf_map *map, struct bpf_sock *sk, void *value, u64 flags)
|
||||
* void *bpf_sk_storage_get(struct bpf_map *map, void *sk, void *value, u64 flags)
|
||||
* Description
|
||||
* Get a bpf-local-storage from a *sk*.
|
||||
*
|
||||
|
|
@ -2823,6 +2832,9 @@ union bpf_attr {
|
|||
* "type". The bpf-local-storage "type" (i.e. the *map*) is
|
||||
* searched against all bpf-local-storages residing at *sk*.
|
||||
*
|
||||
* *sk* is a kernel **struct sock** pointer for LSM program.
|
||||
* *sk* is a **struct bpf_sock** pointer for other program types.
|
||||
*
|
||||
* An optional *flags* (**BPF_SK_STORAGE_GET_F_CREATE**) can be
|
||||
* used such that a new bpf-local-storage will be
|
||||
* created if one does not exist. *value* can be used
|
||||
|
|
@ -2835,7 +2847,7 @@ union bpf_attr {
|
|||
* **NULL** if not found or there was an error in adding
|
||||
* a new bpf-local-storage.
|
||||
*
|
||||
* long bpf_sk_storage_delete(struct bpf_map *map, struct bpf_sock *sk)
|
||||
* long bpf_sk_storage_delete(struct bpf_map *map, void *sk)
|
||||
* Description
|
||||
* Delete a bpf-local-storage from a *sk*.
|
||||
* Return
|
||||
|
|
@ -3395,6 +3407,175 @@ union bpf_attr {
|
|||
* A non-negative value equal to or less than *size* on success,
|
||||
* or a negative error in case of failure.
|
||||
*
|
||||
* long bpf_load_hdr_opt(struct bpf_sock_ops *skops, void *searchby_res, u32 len, u64 flags)
|
||||
* Description
|
||||
* Load header option. Support reading a particular TCP header
|
||||
* option for bpf program (BPF_PROG_TYPE_SOCK_OPS).
|
||||
*
|
||||
* If *flags* is 0, it will search the option from the
|
||||
* sock_ops->skb_data. The comment in "struct bpf_sock_ops"
|
||||
* has details on what skb_data contains under different
|
||||
* sock_ops->op.
|
||||
*
|
||||
* The first byte of the *searchby_res* specifies the
|
||||
* kind that it wants to search.
|
||||
*
|
||||
* If the searching kind is an experimental kind
|
||||
* (i.e. 253 or 254 according to RFC6994). It also
|
||||
* needs to specify the "magic" which is either
|
||||
* 2 bytes or 4 bytes. It then also needs to
|
||||
* specify the size of the magic by using
|
||||
* the 2nd byte which is "kind-length" of a TCP
|
||||
* header option and the "kind-length" also
|
||||
* includes the first 2 bytes "kind" and "kind-length"
|
||||
* itself as a normal TCP header option also does.
|
||||
*
|
||||
* For example, to search experimental kind 254 with
|
||||
* 2 byte magic 0xeB9F, the searchby_res should be
|
||||
* [ 254, 4, 0xeB, 0x9F, 0, 0, .... 0 ].
|
||||
*
|
||||
* To search for the standard window scale option (3),
|
||||
* the searchby_res should be [ 3, 0, 0, .... 0 ].
|
||||
* Note, kind-length must be 0 for regular option.
|
||||
*
|
||||
* Searching for No-Op (0) and End-of-Option-List (1) are
|
||||
* not supported.
|
||||
*
|
||||
* *len* must be at least 2 bytes which is the minimal size
|
||||
* of a header option.
|
||||
*
|
||||
* Supported flags:
|
||||
* * **BPF_LOAD_HDR_OPT_TCP_SYN** to search from the
|
||||
* saved_syn packet or the just-received syn packet.
|
||||
*
|
||||
* Return
|
||||
* >0 when found, the header option is copied to *searchby_res*.
|
||||
* The return value is the total length copied.
|
||||
*
|
||||
* **-EINVAL** If param is invalid
|
||||
*
|
||||
* **-ENOMSG** The option is not found
|
||||
*
|
||||
* **-ENOENT** No syn packet available when
|
||||
* **BPF_LOAD_HDR_OPT_TCP_SYN** is used
|
||||
*
|
||||
* **-ENOSPC** Not enough space. Only *len* number of
|
||||
* bytes are copied.
|
||||
*
|
||||
* **-EFAULT** Cannot parse the header options in the packet
|
||||
*
|
||||
* **-EPERM** This helper cannot be used under the
|
||||
* current sock_ops->op.
|
||||
*
|
||||
* long bpf_store_hdr_opt(struct bpf_sock_ops *skops, const void *from, u32 len, u64 flags)
|
||||
* Description
|
||||
* Store header option. The data will be copied
|
||||
* from buffer *from* with length *len* to the TCP header.
|
||||
*
|
||||
* The buffer *from* should have the whole option that
|
||||
* includes the kind, kind-length, and the actual
|
||||
* option data. The *len* must be at least kind-length
|
||||
* long. The kind-length does not have to be 4 byte
|
||||
* aligned. The kernel will take care of the padding
|
||||
* and setting the 4 bytes aligned value to th->doff.
|
||||
*
|
||||
* This helper will check for duplicated option
|
||||
* by searching the same option in the outgoing skb.
|
||||
*
|
||||
* This helper can only be called during
|
||||
* BPF_SOCK_OPS_WRITE_HDR_OPT_CB.
|
||||
*
|
||||
* Return
|
||||
* 0 on success, or negative error in case of failure:
|
||||
*
|
||||
* **-EINVAL** If param is invalid
|
||||
*
|
||||
* **-ENOSPC** Not enough space in the header.
|
||||
* Nothing has been written
|
||||
*
|
||||
* **-EEXIST** The option has already existed
|
||||
*
|
||||
* **-EFAULT** Cannot parse the existing header options
|
||||
*
|
||||
* **-EPERM** This helper cannot be used under the
|
||||
* current sock_ops->op.
|
||||
*
|
||||
* long bpf_reserve_hdr_opt(struct bpf_sock_ops *skops, u32 len, u64 flags)
|
||||
* Description
|
||||
* Reserve *len* bytes for the bpf header option. The
|
||||
* space will be used by bpf_store_hdr_opt() later in
|
||||
* BPF_SOCK_OPS_WRITE_HDR_OPT_CB.
|
||||
*
|
||||
* If bpf_reserve_hdr_opt() is called multiple times,
|
||||
* the total number of bytes will be reserved.
|
||||
*
|
||||
* This helper can only be called during
|
||||
* BPF_SOCK_OPS_HDR_OPT_LEN_CB.
|
||||
*
|
||||
* Return
|
||||
* 0 on success, or negative error in case of failure:
|
||||
*
|
||||
* **-EINVAL** if param is invalid
|
||||
*
|
||||
* **-ENOSPC** Not enough space in the header.
|
||||
*
|
||||
* **-EPERM** This helper cannot be used under the
|
||||
* current sock_ops->op.
|
||||
*
|
||||
* void *bpf_inode_storage_get(struct bpf_map *map, void *inode, void *value, u64 flags)
|
||||
* Description
|
||||
* Get a bpf_local_storage from an *inode*.
|
||||
*
|
||||
* Logically, it could be thought of as getting the value from
|
||||
* a *map* with *inode* as the **key**. From this
|
||||
* perspective, the usage is not much different from
|
||||
* **bpf_map_lookup_elem**\ (*map*, **&**\ *inode*) except this
|
||||
* helper enforces the key must be an inode and the map must also
|
||||
* be a **BPF_MAP_TYPE_INODE_STORAGE**.
|
||||
*
|
||||
* Underneath, the value is stored locally at *inode* instead of
|
||||
* the *map*. The *map* is used as the bpf-local-storage
|
||||
* "type". The bpf-local-storage "type" (i.e. the *map*) is
|
||||
* searched against all bpf_local_storage residing at *inode*.
|
||||
*
|
||||
* An optional *flags* (**BPF_LOCAL_STORAGE_GET_F_CREATE**) can be
|
||||
* used such that a new bpf_local_storage will be
|
||||
* created if one does not exist. *value* can be used
|
||||
* together with **BPF_LOCAL_STORAGE_GET_F_CREATE** to specify
|
||||
* the initial value of a bpf_local_storage. If *value* is
|
||||
* **NULL**, the new bpf_local_storage will be zero initialized.
|
||||
* Return
|
||||
* A bpf_local_storage pointer is returned on success.
|
||||
*
|
||||
* **NULL** if not found or there was an error in adding
|
||||
* a new bpf_local_storage.
|
||||
*
|
||||
* int bpf_inode_storage_delete(struct bpf_map *map, void *inode)
|
||||
* Description
|
||||
* Delete a bpf_local_storage from an *inode*.
|
||||
* Return
|
||||
* 0 on success.
|
||||
*
|
||||
* **-ENOENT** if the bpf_local_storage cannot be found.
|
||||
*
|
||||
* long bpf_d_path(struct path *path, char *buf, u32 sz)
|
||||
* Description
|
||||
* Return full path for given 'struct path' object, which
|
||||
* needs to be the kernel BTF 'path' object. The path is
|
||||
* returned in the provided buffer 'buf' of size 'sz' and
|
||||
* is zero terminated.
|
||||
*
|
||||
* Return
|
||||
* On success, the strictly positive length of the string,
|
||||
* including the trailing NUL character. On error, a negative
|
||||
* value.
|
||||
*
|
||||
* long bpf_copy_from_user(void *dst, u32 size, const void *user_ptr)
|
||||
* Description
|
||||
* Read *size* bytes from user space address *user_ptr* and store
|
||||
* the data in *dst*. This is a wrapper of copy_from_user().
|
||||
* Return
|
||||
* 0 on success, or a negative error in case of failure.
|
||||
*/
|
||||
#define __BPF_FUNC_MAPPER(FN) \
|
||||
FN(unspec), \
|
||||
|
|
@ -3539,6 +3720,13 @@ union bpf_attr {
|
|||
FN(skc_to_tcp_request_sock), \
|
||||
FN(skc_to_udp6_sock), \
|
||||
FN(get_task_stack), \
|
||||
FN(load_hdr_opt), \
|
||||
FN(store_hdr_opt), \
|
||||
FN(reserve_hdr_opt), \
|
||||
FN(inode_storage_get), \
|
||||
FN(inode_storage_delete), \
|
||||
FN(d_path), \
|
||||
FN(copy_from_user), \
|
||||
/* */
|
||||
|
||||
/* integer value in 'imm' field of BPF_CALL instruction selects which helper
|
||||
|
|
@ -3648,9 +3836,13 @@ enum {
|
|||
BPF_F_SYSCTL_BASE_NAME = (1ULL << 0),
|
||||
};
|
||||
|
||||
/* BPF_FUNC_sk_storage_get flags */
|
||||
/* BPF_FUNC_<kernel_obj>_storage_get flags */
|
||||
enum {
|
||||
BPF_SK_STORAGE_GET_F_CREATE = (1ULL << 0),
|
||||
BPF_LOCAL_STORAGE_GET_F_CREATE = (1ULL << 0),
|
||||
/* BPF_SK_STORAGE_GET_F_CREATE is only kept for backward compatibility
|
||||
* and BPF_LOCAL_STORAGE_GET_F_CREATE must be used instead.
|
||||
*/
|
||||
BPF_SK_STORAGE_GET_F_CREATE = BPF_LOCAL_STORAGE_GET_F_CREATE,
|
||||
};
|
||||
|
||||
/* BPF_FUNC_read_branch_records flags. */
|
||||
|
|
@ -4071,6 +4263,15 @@ struct bpf_link_info {
|
|||
__u64 cgroup_id;
|
||||
__u32 attach_type;
|
||||
} cgroup;
|
||||
struct {
|
||||
__aligned_u64 target_name; /* in/out: target_name buffer ptr */
|
||||
__u32 target_name_len; /* in/out: target_name buffer len */
|
||||
union {
|
||||
struct {
|
||||
__u32 map_id;
|
||||
} map;
|
||||
};
|
||||
} iter;
|
||||
struct {
|
||||
__u32 netns_ino;
|
||||
__u32 attach_type;
|
||||
|
|
@ -4158,6 +4359,36 @@ struct bpf_sock_ops {
|
|||
__u64 bytes_received;
|
||||
__u64 bytes_acked;
|
||||
__bpf_md_ptr(struct bpf_sock *, sk);
|
||||
/* [skb_data, skb_data_end) covers the whole TCP header.
|
||||
*
|
||||
* BPF_SOCK_OPS_PARSE_HDR_OPT_CB: The packet received
|
||||
* BPF_SOCK_OPS_HDR_OPT_LEN_CB: Not useful because the
|
||||
* header has not been written.
|
||||
* BPF_SOCK_OPS_WRITE_HDR_OPT_CB: The header and options have
|
||||
* been written so far.
|
||||
* BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB: The SYNACK that concludes
|
||||
* the 3WHS.
|
||||
* BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB: The ACK that concludes
|
||||
* the 3WHS.
|
||||
*
|
||||
* bpf_load_hdr_opt() can also be used to read a particular option.
|
||||
*/
|
||||
__bpf_md_ptr(void *, skb_data);
|
||||
__bpf_md_ptr(void *, skb_data_end);
|
||||
__u32 skb_len; /* The total length of a packet.
|
||||
* It includes the header, options,
|
||||
* and payload.
|
||||
*/
|
||||
__u32 skb_tcp_flags; /* tcp_flags of the header. It provides
|
||||
* an easy way to check for tcp_flags
|
||||
* without parsing skb_data.
|
||||
*
|
||||
* In particular, the skb_tcp_flags
|
||||
* will still be available in
|
||||
* BPF_SOCK_OPS_HDR_OPT_LEN even though
|
||||
* the outgoing header has not
|
||||
* been written yet.
|
||||
*/
|
||||
};
|
||||
|
||||
/* Definitions for bpf_sock_ops_cb_flags */
|
||||
|
|
@ -4166,8 +4397,51 @@ enum {
|
|||
BPF_SOCK_OPS_RETRANS_CB_FLAG = (1<<1),
|
||||
BPF_SOCK_OPS_STATE_CB_FLAG = (1<<2),
|
||||
BPF_SOCK_OPS_RTT_CB_FLAG = (1<<3),
|
||||
/* Call bpf for all received TCP headers. The bpf prog will be
|
||||
* called under sock_ops->op == BPF_SOCK_OPS_PARSE_HDR_OPT_CB
|
||||
*
|
||||
* Please refer to the comment in BPF_SOCK_OPS_PARSE_HDR_OPT_CB
|
||||
* for the header option related helpers that will be useful
|
||||
* to the bpf programs.
|
||||
*
|
||||
* It could be used at the client/active side (i.e. connect() side)
|
||||
* when the server told it that the server was in syncookie
|
||||
* mode and required the active side to resend the bpf-written
|
||||
* options. The active side can keep writing the bpf-options until
|
||||
* it received a valid packet from the server side to confirm
|
||||
* the earlier packet (and options) has been received. The later
|
||||
* example patch is using it like this at the active side when the
|
||||
* server is in syncookie mode.
|
||||
*
|
||||
* The bpf prog will usually turn this off in the common cases.
|
||||
*/
|
||||
BPF_SOCK_OPS_PARSE_ALL_HDR_OPT_CB_FLAG = (1<<4),
|
||||
/* Call bpf when kernel has received a header option that
|
||||
* the kernel cannot handle. The bpf prog will be called under
|
||||
* sock_ops->op == BPF_SOCK_OPS_PARSE_HDR_OPT_CB.
|
||||
*
|
||||
* Please refer to the comment in BPF_SOCK_OPS_PARSE_HDR_OPT_CB
|
||||
* for the header option related helpers that will be useful
|
||||
* to the bpf programs.
|
||||
*/
|
||||
BPF_SOCK_OPS_PARSE_UNKNOWN_HDR_OPT_CB_FLAG = (1<<5),
|
||||
/* Call bpf when the kernel is writing header options for the
|
||||
* outgoing packet. The bpf prog will first be called
|
||||
* to reserve space in a skb under
|
||||
* sock_ops->op == BPF_SOCK_OPS_HDR_OPT_LEN_CB. Then
|
||||
* the bpf prog will be called to write the header option(s)
|
||||
* under sock_ops->op == BPF_SOCK_OPS_WRITE_HDR_OPT_CB.
|
||||
*
|
||||
* Please refer to the comment in BPF_SOCK_OPS_HDR_OPT_LEN_CB
|
||||
* and BPF_SOCK_OPS_WRITE_HDR_OPT_CB for the header option
|
||||
* related helpers that will be useful to the bpf programs.
|
||||
*
|
||||
* The kernel gets its chance to reserve space and write
|
||||
* options first before the BPF program does.
|
||||
*/
|
||||
BPF_SOCK_OPS_WRITE_HDR_OPT_CB_FLAG = (1<<6),
|
||||
/* Mask of all currently supported cb flags */
|
||||
BPF_SOCK_OPS_ALL_CB_FLAGS = 0xF,
|
||||
BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7F,
|
||||
};
|
||||
|
||||
/* List of known BPF sock_ops operators.
|
||||
|
|
@ -4223,6 +4497,63 @@ enum {
|
|||
*/
|
||||
BPF_SOCK_OPS_RTT_CB, /* Called on every RTT.
|
||||
*/
|
||||
BPF_SOCK_OPS_PARSE_HDR_OPT_CB, /* Parse the header option.
|
||||
* It will be called to handle
|
||||
* the packets received at
|
||||
* an already established
|
||||
* connection.
|
||||
*
|
||||
* sock_ops->skb_data:
|
||||
* Referring to the received skb.
|
||||
* It covers the TCP header only.
|
||||
*
|
||||
* bpf_load_hdr_opt() can also
|
||||
* be used to search for a
|
||||
* particular option.
|
||||
*/
|
||||
BPF_SOCK_OPS_HDR_OPT_LEN_CB, /* Reserve space for writing the
|
||||
* header option later in
|
||||
* BPF_SOCK_OPS_WRITE_HDR_OPT_CB.
|
||||
* Arg1: bool want_cookie. (in
|
||||
* writing SYNACK only)
|
||||
*
|
||||
* sock_ops->skb_data:
|
||||
* Not available because no header has
|
||||
* been written yet.
|
||||
*
|
||||
* sock_ops->skb_tcp_flags:
|
||||
* The tcp_flags of the
|
||||
* outgoing skb. (e.g. SYN, ACK, FIN).
|
||||
*
|
||||
* bpf_reserve_hdr_opt() should
|
||||
* be used to reserve space.
|
||||
*/
|
||||
BPF_SOCK_OPS_WRITE_HDR_OPT_CB, /* Write the header options
|
||||
* Arg1: bool want_cookie. (in
|
||||
* writing SYNACK only)
|
||||
*
|
||||
* sock_ops->skb_data:
|
||||
* Referring to the outgoing skb.
|
||||
* It covers the TCP header
|
||||
* that has already been written
|
||||
* by the kernel and the
|
||||
* earlier bpf-progs.
|
||||
*
|
||||
* sock_ops->skb_tcp_flags:
|
||||
* The tcp_flags of the outgoing
|
||||
* skb. (e.g. SYN, ACK, FIN).
|
||||
*
|
||||
* bpf_store_hdr_opt() should
|
||||
* be used to write the
|
||||
* option.
|
||||
*
|
||||
* bpf_load_hdr_opt() can also
|
||||
* be used to search for a
|
||||
* particular option that
|
||||
* has already been written
|
||||
* by the kernel or the
|
||||
* earlier bpf-progs.
|
||||
*/
|
||||
};
|
||||
|
||||
/* List of TCP states. There is a build check in net/ipv4/tcp.c to detect
|
||||
|
|
@ -4250,6 +4581,63 @@ enum {
|
|||
enum {
|
||||
TCP_BPF_IW = 1001, /* Set TCP initial congestion window */
|
||||
TCP_BPF_SNDCWND_CLAMP = 1002, /* Set sndcwnd_clamp */
|
||||
TCP_BPF_DELACK_MAX = 1003, /* Max delay ack in usecs */
|
||||
TCP_BPF_RTO_MIN = 1004, /* Min delay ack in usecs */
|
||||
/* Copy the SYN pkt to optval
|
||||
*
|
||||
* BPF_PROG_TYPE_SOCK_OPS only. It is similar to the
|
||||
* bpf_getsockopt(TCP_SAVED_SYN) but it does not limit
|
||||
* to only getting from the saved_syn. It can either get the
|
||||
* syn packet from:
|
||||
*
|
||||
* 1. the just-received SYN packet (only available when writing the
|
||||
* SYNACK). It will be useful when it is not necessary to
|
||||
* save the SYN packet for latter use. It is also the only way
|
||||
* to get the SYN during syncookie mode because the syn
|
||||
* packet cannot be saved during syncookie.
|
||||
*
|
||||
* OR
|
||||
*
|
||||
* 2. the earlier saved syn which was done by
|
||||
* bpf_setsockopt(TCP_SAVE_SYN).
|
||||
*
|
||||
* The bpf_getsockopt(TCP_BPF_SYN*) option will hide where the
|
||||
* SYN packet is obtained.
|
||||
*
|
||||
* If the bpf-prog does not need the IP[46] header, the
|
||||
* bpf-prog can avoid parsing the IP header by using
|
||||
* TCP_BPF_SYN. Otherwise, the bpf-prog can get both
|
||||
* IP[46] and TCP header by using TCP_BPF_SYN_IP.
|
||||
*
|
||||
* >0: Total number of bytes copied
|
||||
* -ENOSPC: Not enough space in optval. Only optlen number of
|
||||
* bytes is copied.
|
||||
* -ENOENT: The SYN skb is not available now and the earlier SYN pkt
|
||||
* is not saved by setsockopt(TCP_SAVE_SYN).
|
||||
*/
|
||||
TCP_BPF_SYN = 1005, /* Copy the TCP header */
|
||||
TCP_BPF_SYN_IP = 1006, /* Copy the IP[46] and TCP header */
|
||||
TCP_BPF_SYN_MAC = 1007, /* Copy the MAC, IP[46], and TCP header */
|
||||
};
|
||||
|
||||
enum {
|
||||
BPF_LOAD_HDR_OPT_TCP_SYN = (1ULL << 0),
|
||||
};
|
||||
|
||||
/* args[0] value during BPF_SOCK_OPS_HDR_OPT_LEN_CB and
|
||||
* BPF_SOCK_OPS_WRITE_HDR_OPT_CB.
|
||||
*/
|
||||
enum {
|
||||
BPF_WRITE_HDR_TCP_CURRENT_MSS = 1, /* Kernel is finding the
|
||||
* total option spaces
|
||||
* required for an established
|
||||
* sk in order to calculate the
|
||||
* MSS. No skb is actually
|
||||
* sent.
|
||||
*/
|
||||
BPF_WRITE_HDR_TCP_SYNACK_COOKIE = 2, /* Kernel is in syncookie mode
|
||||
* when sending a SYN.
|
||||
*/
|
||||
};
|
||||
|
||||
struct bpf_perf_event_value {
|
||||
|
|
|
|||
|
|
@ -455,10 +455,31 @@ enum {
|
|||
enum {
|
||||
MDBA_MDB_EATTR_UNSPEC,
|
||||
MDBA_MDB_EATTR_TIMER,
|
||||
MDBA_MDB_EATTR_SRC_LIST,
|
||||
MDBA_MDB_EATTR_GROUP_MODE,
|
||||
__MDBA_MDB_EATTR_MAX
|
||||
};
|
||||
#define MDBA_MDB_EATTR_MAX (__MDBA_MDB_EATTR_MAX - 1)
|
||||
|
||||
/* per mdb entry source */
|
||||
enum {
|
||||
MDBA_MDB_SRCLIST_UNSPEC,
|
||||
MDBA_MDB_SRCLIST_ENTRY,
|
||||
__MDBA_MDB_SRCLIST_MAX
|
||||
};
|
||||
#define MDBA_MDB_SRCLIST_MAX (__MDBA_MDB_SRCLIST_MAX - 1)
|
||||
|
||||
/* per mdb entry per source attributes
|
||||
* these are embedded in MDBA_MDB_SRCLIST_ENTRY
|
||||
*/
|
||||
enum {
|
||||
MDBA_MDB_SRCATTR_UNSPEC,
|
||||
MDBA_MDB_SRCATTR_ADDRESS,
|
||||
MDBA_MDB_SRCATTR_TIMER,
|
||||
__MDBA_MDB_SRCATTR_MAX
|
||||
};
|
||||
#define MDBA_MDB_SRCATTR_MAX (__MDBA_MDB_SRCATTR_MAX - 1)
|
||||
|
||||
/* multicast router types */
|
||||
enum {
|
||||
MDB_RTR_TYPE_DISABLED,
|
||||
|
|
|
|||
|
|
@ -40,26 +40,197 @@ struct rtnl_link_stats {
|
|||
__u32 rx_nohandler; /* dropped, no handler found */
|
||||
};
|
||||
|
||||
/* The main device statistics structure */
|
||||
/**
|
||||
* struct rtnl_link_stats64 - The main device statistics structure.
|
||||
*
|
||||
* @rx_packets: Number of good packets received by the interface.
|
||||
* For hardware interfaces counts all good packets received from the device
|
||||
* by the host, including packets which host had to drop at various stages
|
||||
* of processing (even in the driver).
|
||||
*
|
||||
* @tx_packets: Number of packets successfully transmitted.
|
||||
* For hardware interfaces counts packets which host was able to successfully
|
||||
* hand over to the device, which does not necessarily mean that packets
|
||||
* had been successfully transmitted out of the device, only that device
|
||||
* acknowledged it copied them out of host memory.
|
||||
*
|
||||
* @rx_bytes: Number of good received bytes, corresponding to @rx_packets.
|
||||
*
|
||||
* For IEEE 802.3 devices should count the length of Ethernet Frames
|
||||
* excluding the FCS.
|
||||
*
|
||||
* @tx_bytes: Number of good transmitted bytes, corresponding to @tx_packets.
|
||||
*
|
||||
* For IEEE 802.3 devices should count the length of Ethernet Frames
|
||||
* excluding the FCS.
|
||||
*
|
||||
* @rx_errors: Total number of bad packets received on this network device.
|
||||
* This counter must include events counted by @rx_length_errors,
|
||||
* @rx_crc_errors, @rx_frame_errors and other errors not otherwise
|
||||
* counted.
|
||||
*
|
||||
* @tx_errors: Total number of transmit problems.
|
||||
* This counter must include events counter by @tx_aborted_errors,
|
||||
* @tx_carrier_errors, @tx_fifo_errors, @tx_heartbeat_errors,
|
||||
* @tx_window_errors and other errors not otherwise counted.
|
||||
*
|
||||
* @rx_dropped: Number of packets received but not processed,
|
||||
* e.g. due to lack of resources or unsupported protocol.
|
||||
* For hardware interfaces this counter should not include packets
|
||||
* dropped by the device which are counted separately in
|
||||
* @rx_missed_errors (since procfs folds those two counters together).
|
||||
*
|
||||
* @tx_dropped: Number of packets dropped on their way to transmission,
|
||||
* e.g. due to lack of resources.
|
||||
*
|
||||
* @multicast: Multicast packets received.
|
||||
* For hardware interfaces this statistic is commonly calculated
|
||||
* at the device level (unlike @rx_packets) and therefore may include
|
||||
* packets which did not reach the host.
|
||||
*
|
||||
* For IEEE 802.3 devices this counter may be equivalent to:
|
||||
*
|
||||
* - 30.3.1.1.21 aMulticastFramesReceivedOK
|
||||
*
|
||||
* @collisions: Number of collisions during packet transmissions.
|
||||
*
|
||||
* @rx_length_errors: Number of packets dropped due to invalid length.
|
||||
* Part of aggregate "frame" errors in `/proc/net/dev`.
|
||||
*
|
||||
* For IEEE 802.3 devices this counter should be equivalent to a sum
|
||||
* of the following attributes:
|
||||
*
|
||||
* - 30.3.1.1.23 aInRangeLengthErrors
|
||||
* - 30.3.1.1.24 aOutOfRangeLengthField
|
||||
* - 30.3.1.1.25 aFrameTooLongErrors
|
||||
*
|
||||
* @rx_over_errors: Receiver FIFO overflow event counter.
|
||||
*
|
||||
* Historically the count of overflow events. Such events may be
|
||||
* reported in the receive descriptors or via interrupts, and may
|
||||
* not correspond one-to-one with dropped packets.
|
||||
*
|
||||
* The recommended interpretation for high speed interfaces is -
|
||||
* number of packets dropped because they did not fit into buffers
|
||||
* provided by the host, e.g. packets larger than MTU or next buffer
|
||||
* in the ring was not available for a scatter transfer.
|
||||
*
|
||||
* Part of aggregate "frame" errors in `/proc/net/dev`.
|
||||
*
|
||||
* This statistics was historically used interchangeably with
|
||||
* @rx_fifo_errors.
|
||||
*
|
||||
* This statistic corresponds to hardware events and is not commonly used
|
||||
* on software devices.
|
||||
*
|
||||
* @rx_crc_errors: Number of packets received with a CRC error.
|
||||
* Part of aggregate "frame" errors in `/proc/net/dev`.
|
||||
*
|
||||
* For IEEE 802.3 devices this counter must be equivalent to:
|
||||
*
|
||||
* - 30.3.1.1.6 aFrameCheckSequenceErrors
|
||||
*
|
||||
* @rx_frame_errors: Receiver frame alignment errors.
|
||||
* Part of aggregate "frame" errors in `/proc/net/dev`.
|
||||
*
|
||||
* For IEEE 802.3 devices this counter should be equivalent to:
|
||||
*
|
||||
* - 30.3.1.1.7 aAlignmentErrors
|
||||
*
|
||||
* @rx_fifo_errors: Receiver FIFO error counter.
|
||||
*
|
||||
* Historically the count of overflow events. Those events may be
|
||||
* reported in the receive descriptors or via interrupts, and may
|
||||
* not correspond one-to-one with dropped packets.
|
||||
*
|
||||
* This statistics was used interchangeably with @rx_over_errors.
|
||||
* Not recommended for use in drivers for high speed interfaces.
|
||||
*
|
||||
* This statistic is used on software devices, e.g. to count software
|
||||
* packet queue overflow (can) or sequencing errors (GRE).
|
||||
*
|
||||
* @rx_missed_errors: Count of packets missed by the host.
|
||||
* Folded into the "drop" counter in `/proc/net/dev`.
|
||||
*
|
||||
* Counts number of packets dropped by the device due to lack
|
||||
* of buffer space. This usually indicates that the host interface
|
||||
* is slower than the network interface, or host is not keeping up
|
||||
* with the receive packet rate.
|
||||
*
|
||||
* This statistic corresponds to hardware events and is not used
|
||||
* on software devices.
|
||||
*
|
||||
* @tx_aborted_errors:
|
||||
* Part of aggregate "carrier" errors in `/proc/net/dev`.
|
||||
* For IEEE 802.3 devices capable of half-duplex operation this counter
|
||||
* must be equivalent to:
|
||||
*
|
||||
* - 30.3.1.1.11 aFramesAbortedDueToXSColls
|
||||
*
|
||||
* High speed interfaces may use this counter as a general device
|
||||
* discard counter.
|
||||
*
|
||||
* @tx_carrier_errors: Number of frame transmission errors due to loss
|
||||
* of carrier during transmission.
|
||||
* Part of aggregate "carrier" errors in `/proc/net/dev`.
|
||||
*
|
||||
* For IEEE 802.3 devices this counter must be equivalent to:
|
||||
*
|
||||
* - 30.3.1.1.13 aCarrierSenseErrors
|
||||
*
|
||||
* @tx_fifo_errors: Number of frame transmission errors due to device
|
||||
* FIFO underrun / underflow. This condition occurs when the device
|
||||
* begins transmission of a frame but is unable to deliver the
|
||||
* entire frame to the transmitter in time for transmission.
|
||||
* Part of aggregate "carrier" errors in `/proc/net/dev`.
|
||||
*
|
||||
* @tx_heartbeat_errors: Number of Heartbeat / SQE Test errors for
|
||||
* old half-duplex Ethernet.
|
||||
* Part of aggregate "carrier" errors in `/proc/net/dev`.
|
||||
*
|
||||
* For IEEE 802.3 devices possibly equivalent to:
|
||||
*
|
||||
* - 30.3.2.1.4 aSQETestErrors
|
||||
*
|
||||
* @tx_window_errors: Number of frame transmission errors due
|
||||
* to late collisions (for Ethernet - after the first 64B of transmission).
|
||||
* Part of aggregate "carrier" errors in `/proc/net/dev`.
|
||||
*
|
||||
* For IEEE 802.3 devices this counter must be equivalent to:
|
||||
*
|
||||
* - 30.3.1.1.10 aLateCollisions
|
||||
*
|
||||
* @rx_compressed: Number of correctly received compressed packets.
|
||||
* This counters is only meaningful for interfaces which support
|
||||
* packet compression (e.g. CSLIP, PPP).
|
||||
*
|
||||
* @tx_compressed: Number of transmitted compressed packets.
|
||||
* This counters is only meaningful for interfaces which support
|
||||
* packet compression (e.g. CSLIP, PPP).
|
||||
*
|
||||
* @rx_nohandler: Number of packets received on the interface
|
||||
* but dropped by the networking stack because the device is
|
||||
* not designated to receive packets (e.g. backup link in a bond).
|
||||
*/
|
||||
struct rtnl_link_stats64 {
|
||||
__u64 rx_packets; /* total packets received */
|
||||
__u64 tx_packets; /* total packets transmitted */
|
||||
__u64 rx_bytes; /* total bytes received */
|
||||
__u64 tx_bytes; /* total bytes transmitted */
|
||||
__u64 rx_errors; /* bad packets received */
|
||||
__u64 tx_errors; /* packet transmit problems */
|
||||
__u64 rx_dropped; /* no space in linux buffers */
|
||||
__u64 tx_dropped; /* no space available in linux */
|
||||
__u64 multicast; /* multicast packets received */
|
||||
__u64 rx_packets;
|
||||
__u64 tx_packets;
|
||||
__u64 rx_bytes;
|
||||
__u64 tx_bytes;
|
||||
__u64 rx_errors;
|
||||
__u64 tx_errors;
|
||||
__u64 rx_dropped;
|
||||
__u64 tx_dropped;
|
||||
__u64 multicast;
|
||||
__u64 collisions;
|
||||
|
||||
/* detailed rx_errors: */
|
||||
__u64 rx_length_errors;
|
||||
__u64 rx_over_errors; /* receiver ring buff overflow */
|
||||
__u64 rx_crc_errors; /* recved pkt with crc error */
|
||||
__u64 rx_frame_errors; /* recv'd frame alignment error */
|
||||
__u64 rx_fifo_errors; /* recv'r fifo overrun */
|
||||
__u64 rx_missed_errors; /* receiver missed packet */
|
||||
__u64 rx_over_errors;
|
||||
__u64 rx_crc_errors;
|
||||
__u64 rx_frame_errors;
|
||||
__u64 rx_fifo_errors;
|
||||
__u64 rx_missed_errors;
|
||||
|
||||
/* detailed tx_errors */
|
||||
__u64 tx_aborted_errors;
|
||||
|
|
@ -71,8 +242,7 @@ struct rtnl_link_stats64 {
|
|||
/* for cslip etc */
|
||||
__u64 rx_compressed;
|
||||
__u64 tx_compressed;
|
||||
|
||||
__u64 rx_nohandler; /* dropped, no handler found */
|
||||
__u64 rx_nohandler;
|
||||
};
|
||||
|
||||
/* The struct should be in sync with struct ifmap */
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@ struct in_addr {
|
|||
* this socket to prevent accepting spoofed ones.
|
||||
*/
|
||||
#define IP_PMTUDISC_INTERFACE 4
|
||||
/* weaker version of IP_PMTUDISC_INTERFACE, which allos packets to get
|
||||
/* weaker version of IP_PMTUDISC_INTERFACE, which allows packets to get
|
||||
* fragmented if they exeed the interface mtu
|
||||
*/
|
||||
#define IP_PMTUDISC_OMIT 5
|
||||
|
|
|
|||
|
|
@ -160,6 +160,7 @@ enum {
|
|||
INET_DIAG_ULP_INFO,
|
||||
INET_DIAG_SK_BPF_STORAGES,
|
||||
INET_DIAG_CGROUP_ID,
|
||||
INET_DIAG_SOCKOPT,
|
||||
__INET_DIAG_MAX,
|
||||
};
|
||||
|
||||
|
|
@ -183,6 +184,23 @@ struct inet_diag_meminfo {
|
|||
__u32 idiag_tmem;
|
||||
};
|
||||
|
||||
/* INET_DIAG_SOCKOPT */
|
||||
|
||||
struct inet_diag_sockopt {
|
||||
__u8 recverr:1,
|
||||
is_icsk:1,
|
||||
freebind:1,
|
||||
hdrincl:1,
|
||||
mc_loop:1,
|
||||
transparent:1,
|
||||
mc_all:1,
|
||||
nodefrag:1;
|
||||
__u8 bind_address_no_port:1,
|
||||
recverr_rfc4884:1,
|
||||
defer_connect:1,
|
||||
unused:5;
|
||||
};
|
||||
|
||||
/* INET_DIAG_VEGASINFO */
|
||||
|
||||
struct tcpvegas_info {
|
||||
|
|
|
|||
|
|
@ -108,7 +108,7 @@ enum {
|
|||
L2TP_ATTR_VLAN_ID, /* u16 (not used) */
|
||||
L2TP_ATTR_COOKIE, /* 0, 4 or 8 bytes */
|
||||
L2TP_ATTR_PEER_COOKIE, /* 0, 4 or 8 bytes */
|
||||
L2TP_ATTR_DEBUG, /* u32, enum l2tp_debug_flags */
|
||||
L2TP_ATTR_DEBUG, /* u32, enum l2tp_debug_flags (not used) */
|
||||
L2TP_ATTR_RECV_SEQ, /* u8 */
|
||||
L2TP_ATTR_SEND_SEQ, /* u8 */
|
||||
L2TP_ATTR_LNS_MODE, /* u8 */
|
||||
|
|
@ -177,7 +177,9 @@ enum l2tp_seqmode {
|
|||
};
|
||||
|
||||
/**
|
||||
* enum l2tp_debug_flags - debug message categories for L2TP tunnels/sessions
|
||||
* enum l2tp_debug_flags - debug message categories for L2TP tunnels/sessions.
|
||||
*
|
||||
* Unused.
|
||||
*
|
||||
* @L2TP_MSG_DEBUG: verbose debug (if compiled in)
|
||||
* @L2TP_MSG_CONTROL: userspace - kernel interface
|
||||
|
|
|
|||
Loading…
Reference in New Issue