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