/* SPDX-License-Identifier: GPL-2.0 */ #include #include #include #include #include #include #include #include #include #include typedef __u16 __sum16; #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "test_iptunnel_common.h" #include "bpf_util.h" #include "bpf_endian.h" #include "trace_helpers.h" #include "flow_dissector_load.h" extern int error_cnt, pass_cnt; extern bool jit_enabled; #define MAGIC_BYTES 123 /* ipv4 test vector */ struct ipv4_packet { struct ethhdr eth; struct iphdr iph; struct tcphdr tcp; } __packed; extern struct ipv4_packet pkt_v4; /* ipv6 test vector */ struct ipv6_packet { struct ethhdr eth; struct ipv6hdr iph; struct tcphdr tcp; } __packed; extern struct ipv6_packet pkt_v6; #define _CHECK(condition, tag, duration, format...) ({ \ int __ret = !!(condition); \ if (__ret) { \ error_cnt++; \ printf("%s:FAIL:%s ", __func__, tag); \ printf(format); \ } else { \ pass_cnt++; \ printf("%s:PASS:%s %d nsec\n", __func__, tag, duration);\ } \ __ret; \ }) #define CHECK(condition, tag, format...) \ _CHECK(condition, tag, duration, format) #define CHECK_ATTR(condition, tag, format...) \ _CHECK(condition, tag, tattr.duration, format) int bpf_find_map(const char *test, struct bpf_object *obj, const char *name);