diff options
Diffstat (limited to 'include/uapi/linux/bpf.h')
| -rw-r--r-- | include/uapi/linux/bpf.h | 52 | 
1 files changed, 48 insertions, 4 deletions
diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h index a5aa7d3ac6a1..77c6be96d676 100644 --- a/include/uapi/linux/bpf.h +++ b/include/uapi/linux/bpf.h @@ -106,6 +106,7 @@ enum bpf_cmd {  	BPF_TASK_FD_QUERY,  	BPF_MAP_LOOKUP_AND_DELETE_ELEM,  	BPF_MAP_FREEZE, +	BPF_BTF_GET_NEXT_ID,  };  enum bpf_map_type { @@ -134,6 +135,7 @@ enum bpf_map_type {  	BPF_MAP_TYPE_QUEUE,  	BPF_MAP_TYPE_STACK,  	BPF_MAP_TYPE_SK_STORAGE, +	BPF_MAP_TYPE_DEVMAP_HASH,  };  /* Note that tracing related programs such as @@ -283,6 +285,9 @@ enum bpf_attach_type {   */  #define BPF_F_TEST_RND_HI32	(1U << 2) +/* The verifier internal test flag. Behavior is undefined */ +#define BPF_F_TEST_STATE_FREQ	(1U << 3) +  /* When BPF ldimm64's insn[0].src_reg != 0 then this can have   * two extensions:   * @@ -336,6 +341,9 @@ enum bpf_attach_type {  #define BPF_F_RDONLY_PROG	(1U << 7)  #define BPF_F_WRONLY_PROG	(1U << 8) +/* Clone map from listener for newly accepted socket */ +#define BPF_F_CLONE		(1U << 9) +  /* flags for BPF_PROG_QUERY */  #define BPF_F_QUERY_EFFECTIVE	(1U << 0) @@ -575,6 +583,8 @@ union bpf_attr {   * 		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.   * 		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 @@ -1013,7 +1023,7 @@ union bpf_attr {   * 		The realm of the route for the packet associated to *skb*, or 0   * 		if none was found.   * - * int bpf_perf_event_output(struct pt_reg *ctx, struct bpf_map *map, u64 flags, void *data, u64 size) + * int bpf_perf_event_output(struct pt_regs *ctx, struct bpf_map *map, u64 flags, void *data, u64 size)   * 	Description   * 		Write raw *data* blob into a special BPF perf event held by   * 		*map* of type **BPF_MAP_TYPE_PERF_EVENT_ARRAY**. This perf @@ -1075,7 +1085,7 @@ union bpf_attr {   * 	Return   * 		0 on success, or a negative error in case of failure.   * - * int bpf_get_stackid(struct pt_reg *ctx, struct bpf_map *map, u64 flags) + * int bpf_get_stackid(struct pt_regs *ctx, struct bpf_map *map, u64 flags)   * 	Description   * 		Walk a user or a kernel stack and return its id. To achieve   * 		this, the helper needs *ctx*, which is a pointer to the context @@ -1724,7 +1734,7 @@ union bpf_attr {   * 	Return   * 		0 on success, or a negative error in case of failure.   * - * int bpf_override_return(struct pt_reg *regs, u64 rc) + * int bpf_override_return(struct pt_regs *regs, u64 rc)   * 	Description   * 		Used for error injection, this helper uses kprobes to override   * 		the return value of the probed function, and to set it to *rc*. @@ -2713,6 +2723,33 @@ union bpf_attr {   *		**-EPERM** if no permission to send the *sig*.   *   *		**-EAGAIN** if bpf program can try again. + * + * s64 bpf_tcp_gen_syncookie(struct bpf_sock *sk, void *iph, u32 iph_len, struct tcphdr *th, u32 th_len) + *	Description + *		Try to issue a SYN cookie for the packet with corresponding + *		IP/TCP headers, *iph* and *th*, on the listening socket in *sk*. + * + *		*iph* points to the start of the IPv4 or IPv6 header, while + *		*iph_len* contains **sizeof**\ (**struct iphdr**) or + *		**sizeof**\ (**struct ip6hdr**). + * + *		*th* points to the start of the TCP header, while *th_len* + *		contains the length of the TCP header. + * + *	Return + *		On success, lower 32 bits hold the generated SYN cookie in + *		followed by 16 bits which hold the MSS value for that cookie, + *		and the top 16 bits are unused. + * + *		On failure, the returned value is one of the following: + * + *		**-EINVAL** SYN cookie cannot be issued due to error + * + *		**-ENOENT** SYN cookie should not be issued (no SYN flood) + * + *		**-EOPNOTSUPP** kernel configuration does not enable SYN cookies + * + *		**-EPROTONOSUPPORT** IP packet version is not 4 or 6   */  #define __BPF_FUNC_MAPPER(FN)		\  	FN(unspec),			\ @@ -2824,7 +2861,8 @@ union bpf_attr {  	FN(strtoul),			\  	FN(sk_storage_get),		\  	FN(sk_storage_delete),		\ -	FN(send_signal), +	FN(send_signal),		\ +	FN(tcp_gen_syncookie),  /* integer value in 'imm' field of BPF_CALL instruction selects which helper   * function eBPF program intends to call @@ -3507,6 +3545,10 @@ enum bpf_task_fd_type {  	BPF_FD_TYPE_URETPROBE,		/* filename + offset */  }; +#define BPF_FLOW_DISSECTOR_F_PARSE_1ST_FRAG		(1U << 0) +#define BPF_FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL		(1U << 1) +#define BPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP		(1U << 2) +  struct bpf_flow_keys {  	__u16	nhoff;  	__u16	thoff; @@ -3528,6 +3570,8 @@ struct bpf_flow_keys {  			__u32	ipv6_dst[4];	/* in6_addr; network order */  		};  	}; +	__u32	flags; +	__be32	flow_label;  };  struct bpf_func_info {  |