2019-03-01 19:42:13 -08:00
/* SPDX-License-Identifier: GPL-2.0 */
# include <stdio.h>
# include <unistd.h>
# include <errno.h>
# include <string.h>
# include <assert.h>
# include <stdlib.h>
# include <stdarg.h>
# include <time.h>
# include <signal.h>
# include <linux/types.h>
typedef __u16 __sum16 ;
# include <arpa/inet.h>
# include <linux/if_ether.h>
# include <linux/if_packet.h>
# include <linux/ip.h>
# include <linux/ipv6.h>
# include <linux/tcp.h>
# include <linux/filter.h>
# include <linux/perf_event.h>
# include <linux/unistd.h>
# include <sys/ioctl.h>
# include <sys/wait.h>
# include <sys/types.h>
# include <sys/time.h>
# include <fcntl.h>
# include <pthread.h>
# include <linux/bpf.h>
# include <linux/err.h>
# include <bpf/bpf.h>
# include <bpf/libbpf.h>
# 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 ;
2019-04-01 21:27:48 -07:00
extern bool verifier_stats ;
2019-03-01 19:42:13 -08:00
# 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 )
2019-03-01 19:42:15 -08:00
# define MAGIC_VAL 0x1234
# define NUM_ITER 100000
# define VIP_NUM 5
2019-03-01 19:42:19 -08:00
static inline __u64 ptr_to_u64 ( const void * ptr )
{
return ( __u64 ) ( unsigned long ) ptr ;
}
2019-03-01 19:42:13 -08:00
int bpf_find_map ( const char * test , struct bpf_object * obj , const char * name ) ;
2019-03-01 19:42:16 -08:00
int compare_map_keys ( int map1_fd , int map2_fd ) ;
int compare_stack_ips ( int smap_fd , int amap_fd , int stack_trace_len ) ;
int extract_build_id ( char * build_id , size_t size ) ;
2019-03-01 19:42:18 -08:00
void * spin_lock_thread ( void * arg ) ;