diff mbox series

[bpf-next,2/2] bpftool: Add misc secion and probe for large INSN limit

Message ID 20191227110605.1757-3-mrostecki@suse.de
State Changes Requested
Delegated to: BPF Maintainers
Headers show
Series bpftool/libbpf: Add probe for large INSN limit | expand

Commit Message

Michal Rostecki Dec. 27, 2019, 11:06 a.m. UTC
Introduce a new probe section (misc) for probes not related to concrete
map types, program types, functions or kernel configuration. Introduce a
probe for large INSN limit as the first one in that section.

Signed-off-by: Michal Rostecki <mrostecki@suse.de>
---
 tools/bpf/bpftool/feature.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

Comments

Daniel Borkmann Jan. 6, 2020, 10:55 p.m. UTC | #1
On 12/27/19 12:06 PM, Michal Rostecki wrote:
> Introduce a new probe section (misc) for probes not related to concrete
> map types, program types, functions or kernel configuration. Introduce a
> probe for large INSN limit as the first one in that section.
> 
> Signed-off-by: Michal Rostecki <mrostecki@suse.de>
> ---
>   tools/bpf/bpftool/feature.c | 18 ++++++++++++++++++
>   1 file changed, 18 insertions(+)
> 
> diff --git a/tools/bpf/bpftool/feature.c b/tools/bpf/bpftool/feature.c
> index 03bdc5b3ac49..4a7359b9a427 100644
> --- a/tools/bpf/bpftool/feature.c
> +++ b/tools/bpf/bpftool/feature.c
> @@ -572,6 +572,18 @@ probe_helpers_for_progtype(enum bpf_prog_type prog_type, bool supported_type,
>   		printf("\n");
>   }
>   
> +static void
> +probe_large_insn_limit(const char *define_prefix, __u32 ifindex)
> +{
> +	bool res;
> +
> +	res = bpf_probe_large_insn_limit(ifindex);
> +	print_bool_feature("have_large_insn_limit",
> +			   "Large complexity limit and maximum program size (1M)",
> +			   "HAVE_LARGE_INSN_LIMIT",

HAVE_LARGE_INSN_LIMIT is good, but official description should not explicitly
state the 1M limit since this could be subject to change. Perhaps just stating
"Large complexity and program size limit" is better suited here.

> +			   res, define_prefix);
> +}
> +
>   static int do_probe(int argc, char **argv)
>   {
>   	enum probe_component target = COMPONENT_UNSPEC;
> @@ -724,6 +736,12 @@ static int do_probe(int argc, char **argv)
>   		probe_helpers_for_progtype(i, supported_types[i],
>   					   define_prefix, ifindex);
>   
> +	print_end_then_start_section("misc",
> +				     "Scanning miscellaneous eBPF features...",
> +				     "/*** eBPF misc features ***/",
> +				     define_prefix);
> +	probe_large_insn_limit(define_prefix, ifindex);
> +
>   exit_close_json:
>   	if (json_output) {
>   		/* End current "section" of probes */
>
diff mbox series

Patch

diff --git a/tools/bpf/bpftool/feature.c b/tools/bpf/bpftool/feature.c
index 03bdc5b3ac49..4a7359b9a427 100644
--- a/tools/bpf/bpftool/feature.c
+++ b/tools/bpf/bpftool/feature.c
@@ -572,6 +572,18 @@  probe_helpers_for_progtype(enum bpf_prog_type prog_type, bool supported_type,
 		printf("\n");
 }
 
+static void
+probe_large_insn_limit(const char *define_prefix, __u32 ifindex)
+{
+	bool res;
+
+	res = bpf_probe_large_insn_limit(ifindex);
+	print_bool_feature("have_large_insn_limit",
+			   "Large complexity limit and maximum program size (1M)",
+			   "HAVE_LARGE_INSN_LIMIT",
+			   res, define_prefix);
+}
+
 static int do_probe(int argc, char **argv)
 {
 	enum probe_component target = COMPONENT_UNSPEC;
@@ -724,6 +736,12 @@  static int do_probe(int argc, char **argv)
 		probe_helpers_for_progtype(i, supported_types[i],
 					   define_prefix, ifindex);
 
+	print_end_then_start_section("misc",
+				     "Scanning miscellaneous eBPF features...",
+				     "/*** eBPF misc features ***/",
+				     define_prefix);
+	probe_large_insn_limit(define_prefix, ifindex);
+
 exit_close_json:
 	if (json_output) {
 		/* End current "section" of probes */