1 /*-
2  * Test 0023:	BPF_JMP+BPF_JSET+BPF_X
3  *
4  * $FreeBSD$
5  */
6 
7 /* BPF program */
8 static struct bpf_insn	pc[] = {
9 	BPF_STMT(BPF_LD+BPF_IMM, 0x01234567),
10 	BPF_STMT(BPF_LDX+BPF_IMM, 0x80000000),
11 	BPF_JUMP(BPF_JMP+BPF_JSET+BPF_X, 0, 9, 0),
12 	BPF_STMT(BPF_LDX+BPF_IMM, 0x40000000),
13 	BPF_JUMP(BPF_JMP+BPF_JSET+BPF_X, 0, 7, 0),
14 	BPF_STMT(BPF_LDX+BPF_IMM, 0x20000000),
15 	BPF_JUMP(BPF_JMP+BPF_JSET+BPF_X, 0, 5, 0),
16 	BPF_STMT(BPF_LDX+BPF_IMM, 0x10000000),
17 	BPF_JUMP(BPF_JMP+BPF_JSET+BPF_X, 0, 3, 0),
18 	BPF_STMT(BPF_LDX+BPF_IMM, 0x1),
19 	BPF_JUMP(BPF_JMP+BPF_JSET+BPF_X, 0x1, 2, 1),
20 	BPF_STMT(BPF_LD+BPF_IMM, 0xdeadc0de),
21 	BPF_STMT(BPF_RET+BPF_A, 0),
22 	BPF_STMT(BPF_LDX+BPF_IMM, 0x08000000),
23 	BPF_JUMP(BPF_JMP+BPF_JSET+BPF_X, 0, 5, 0),
24 	BPF_STMT(BPF_LDX+BPF_IMM, 0x04000000),
25 	BPF_JUMP(BPF_JMP+BPF_JSET+BPF_X, 0, 3, 0),
26 	BPF_STMT(BPF_LDX+BPF_IMM, 0x02000000),
27 	BPF_JUMP(BPF_JMP+BPF_JSET+BPF_X, 0, 1, 0),
28 	BPF_STMT(BPF_LD+BPF_IMM, 0xc0decafe),
29 	BPF_STMT(BPF_RET+BPF_A, 0),
30 };
31 
32 /* Packet */
33 static u_char	pkt[] = {
34 	0x00,
35 };
36 
37 /* Packet length seen on wire */
38 static u_int	wirelen =	sizeof(pkt);
39 
40 /* Packet length passed on buffer */
41 static u_int	buflen =	sizeof(pkt);
42 
43 /* Invalid instruction */
44 static int	invalid =	0;
45 
46 /* Expected return value */
47 static u_int	expect =	0xc0decafe;
48 
49 /* Expected signal */
50 static int	expect_signal =	0;
51