xref: /mOS-networking-stack/core/src/bpf/main.c (revision 76404edc)
1*76404edcSAsim Jamshed #ifdef TEST_BPF
2*76404edcSAsim Jamshed 
3*76404edcSAsim Jamshed #include "sfbpf.h"
4*76404edcSAsim Jamshed #include "sfbpf_dlt.h"
5*76404edcSAsim Jamshed #include <stdlib.h>
6*76404edcSAsim Jamshed #include <stdio.h>
7*76404edcSAsim Jamshed #include <string.h>
8*76404edcSAsim Jamshed 
9*76404edcSAsim Jamshed int
main()10*76404edcSAsim Jamshed main()
11*76404edcSAsim Jamshed {
12*76404edcSAsim Jamshed 	struct sfbpf_program fcode;
13*76404edcSAsim Jamshed 	const char *filter = "tcp";
14*76404edcSAsim Jamshed 	char data[1514];
15*76404edcSAsim Jamshed 	int len = 1514;
16*76404edcSAsim Jamshed 
17*76404edcSAsim Jamshed 	memset(data, 0, sizeof(data));
18*76404edcSAsim Jamshed 
19*76404edcSAsim Jamshed 	if (sfbpf_compile(1514, DLT_EN10MB, &fcode, filter, 1, 0) < 0) {
20*76404edcSAsim Jamshed 		fprintf(stderr, "%s: BPF state machine compilation failed!", __FUNCTION__);
21*76404edcSAsim Jamshed 		return EXIT_FAILURE;
22*76404edcSAsim Jamshed 	}
23*76404edcSAsim Jamshed 
24*76404edcSAsim Jamshed 	if (fcode.bf_insns && sfbpf_filter(fcode.bf_insns, data, len, len) == 0) {
25*76404edcSAsim Jamshed 		fprintf(stderr, "Packet ignored!\n");
26*76404edcSAsim Jamshed 	}
27*76404edcSAsim Jamshed 
28*76404edcSAsim Jamshed 	sfbpf_freecode(&fcode);
29*76404edcSAsim Jamshed 
30*76404edcSAsim Jamshed 	return EXIT_SUCCESS;
31*76404edcSAsim Jamshed }
32*76404edcSAsim Jamshed 
33*76404edcSAsim Jamshed #endif /* !TEST_BPF */
34