1/*-
2 * Test 0023:	BPF_JMP+BPF_JSET+BPF_X
3 *
4 * $FreeBSD$
5 */
6
7/* BPF program */
8struct 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 */
33u_char	pkt[] = {
34	0x00,
35};
36
37/* Packet length seen on wire */
38u_int	wirelen =	sizeof(pkt);
39
40/* Packet length passed on buffer */
41u_int	buflen =	sizeof(pkt);
42
43/* Invalid instruction */
44int	invalid =	0;
45
46/* Expected return value */
47u_int	expect =	0xc0decafe;
48
49/* Expected signal */
50int	expect_signal =	0;
51