Back to home page

OSCL-LXR

 
 

    


0001 {
0002     "meta access, test1",
0003     .insns = {
0004     BPF_LDX_MEM(BPF_W, BPF_REG_2, BPF_REG_1,
0005             offsetof(struct xdp_md, data_meta)),
0006     BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1, offsetof(struct xdp_md, data)),
0007     BPF_MOV64_REG(BPF_REG_0, BPF_REG_2),
0008     BPF_ALU64_IMM(BPF_ADD, BPF_REG_0, 8),
0009     BPF_JMP_REG(BPF_JGT, BPF_REG_0, BPF_REG_3, 1),
0010     BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_2, 0),
0011     BPF_MOV64_IMM(BPF_REG_0, 0),
0012     BPF_EXIT_INSN(),
0013     },
0014     .result = ACCEPT,
0015     .prog_type = BPF_PROG_TYPE_XDP,
0016 },
0017 {
0018     "meta access, test2",
0019     .insns = {
0020     BPF_LDX_MEM(BPF_W, BPF_REG_2, BPF_REG_1,
0021             offsetof(struct xdp_md, data_meta)),
0022     BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1, offsetof(struct xdp_md, data)),
0023     BPF_MOV64_REG(BPF_REG_0, BPF_REG_2),
0024     BPF_ALU64_IMM(BPF_SUB, BPF_REG_0, 8),
0025     BPF_MOV64_REG(BPF_REG_4, BPF_REG_2),
0026     BPF_ALU64_IMM(BPF_ADD, BPF_REG_4, 8),
0027     BPF_JMP_REG(BPF_JGT, BPF_REG_4, BPF_REG_3, 1),
0028     BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_0, 0),
0029     BPF_MOV64_IMM(BPF_REG_0, 0),
0030     BPF_EXIT_INSN(),
0031     },
0032     .result = REJECT,
0033     .errstr = "invalid access to packet, off=-8",
0034     .prog_type = BPF_PROG_TYPE_XDP,
0035 },
0036 {
0037     "meta access, test3",
0038     .insns = {
0039     BPF_LDX_MEM(BPF_W, BPF_REG_2, BPF_REG_1,
0040             offsetof(struct xdp_md, data_meta)),
0041     BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1,
0042             offsetof(struct xdp_md, data_end)),
0043     BPF_MOV64_REG(BPF_REG_0, BPF_REG_2),
0044     BPF_ALU64_IMM(BPF_ADD, BPF_REG_0, 8),
0045     BPF_JMP_REG(BPF_JGT, BPF_REG_0, BPF_REG_3, 1),
0046     BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_2, 0),
0047     BPF_MOV64_IMM(BPF_REG_0, 0),
0048     BPF_EXIT_INSN(),
0049     },
0050     .result = REJECT,
0051     .errstr = "invalid access to packet",
0052     .prog_type = BPF_PROG_TYPE_XDP,
0053 },
0054 {
0055     "meta access, test4",
0056     .insns = {
0057     BPF_LDX_MEM(BPF_W, BPF_REG_2, BPF_REG_1,
0058             offsetof(struct xdp_md, data_meta)),
0059     BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1,
0060             offsetof(struct xdp_md, data_end)),
0061     BPF_LDX_MEM(BPF_W, BPF_REG_4, BPF_REG_1, offsetof(struct xdp_md, data)),
0062     BPF_MOV64_REG(BPF_REG_0, BPF_REG_4),
0063     BPF_ALU64_IMM(BPF_ADD, BPF_REG_0, 8),
0064     BPF_JMP_REG(BPF_JGT, BPF_REG_0, BPF_REG_3, 1),
0065     BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_2, 0),
0066     BPF_MOV64_IMM(BPF_REG_0, 0),
0067     BPF_EXIT_INSN(),
0068     },
0069     .result = REJECT,
0070     .errstr = "invalid access to packet",
0071     .prog_type = BPF_PROG_TYPE_XDP,
0072 },
0073 {
0074     "meta access, test5",
0075     .insns = {
0076     BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1,
0077             offsetof(struct xdp_md, data_meta)),
0078     BPF_LDX_MEM(BPF_W, BPF_REG_4, BPF_REG_1, offsetof(struct xdp_md, data)),
0079     BPF_MOV64_REG(BPF_REG_0, BPF_REG_3),
0080     BPF_ALU64_IMM(BPF_ADD, BPF_REG_0, 8),
0081     BPF_JMP_REG(BPF_JGT, BPF_REG_0, BPF_REG_4, 3),
0082     BPF_MOV64_IMM(BPF_REG_2, -8),
0083     BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_xdp_adjust_meta),
0084     BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_3, 0),
0085     BPF_MOV64_IMM(BPF_REG_0, 0),
0086     BPF_EXIT_INSN(),
0087     },
0088     .result = REJECT,
0089     .errstr = "R3 !read_ok",
0090     .prog_type = BPF_PROG_TYPE_XDP,
0091 },
0092 {
0093     "meta access, test6",
0094     .insns = {
0095     BPF_LDX_MEM(BPF_W, BPF_REG_2, BPF_REG_1,
0096             offsetof(struct xdp_md, data_meta)),
0097     BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1, offsetof(struct xdp_md, data)),
0098     BPF_MOV64_REG(BPF_REG_0, BPF_REG_3),
0099     BPF_ALU64_IMM(BPF_ADD, BPF_REG_0, 8),
0100     BPF_MOV64_REG(BPF_REG_4, BPF_REG_2),
0101     BPF_ALU64_IMM(BPF_ADD, BPF_REG_4, 8),
0102     BPF_JMP_REG(BPF_JGT, BPF_REG_4, BPF_REG_0, 1),
0103     BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_2, 0),
0104     BPF_MOV64_IMM(BPF_REG_0, 0),
0105     BPF_EXIT_INSN(),
0106     },
0107     .result = REJECT,
0108     .errstr = "invalid access to packet",
0109     .prog_type = BPF_PROG_TYPE_XDP,
0110 },
0111 {
0112     "meta access, test7",
0113     .insns = {
0114     BPF_LDX_MEM(BPF_W, BPF_REG_2, BPF_REG_1,
0115             offsetof(struct xdp_md, data_meta)),
0116     BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1, offsetof(struct xdp_md, data)),
0117     BPF_MOV64_REG(BPF_REG_0, BPF_REG_3),
0118     BPF_ALU64_IMM(BPF_ADD, BPF_REG_0, 8),
0119     BPF_MOV64_REG(BPF_REG_4, BPF_REG_2),
0120     BPF_ALU64_IMM(BPF_ADD, BPF_REG_4, 8),
0121     BPF_JMP_REG(BPF_JGT, BPF_REG_4, BPF_REG_3, 1),
0122     BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_2, 0),
0123     BPF_MOV64_IMM(BPF_REG_0, 0),
0124     BPF_EXIT_INSN(),
0125     },
0126     .result = ACCEPT,
0127     .prog_type = BPF_PROG_TYPE_XDP,
0128 },
0129 {
0130     "meta access, test8",
0131     .insns = {
0132     BPF_LDX_MEM(BPF_W, BPF_REG_2, BPF_REG_1,
0133             offsetof(struct xdp_md, data_meta)),
0134     BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1, offsetof(struct xdp_md, data)),
0135     BPF_MOV64_REG(BPF_REG_4, BPF_REG_2),
0136     BPF_ALU64_IMM(BPF_ADD, BPF_REG_4, 0xFFFF),
0137     BPF_JMP_REG(BPF_JGT, BPF_REG_4, BPF_REG_3, 1),
0138     BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_2, 0),
0139     BPF_MOV64_IMM(BPF_REG_0, 0),
0140     BPF_EXIT_INSN(),
0141     },
0142     .result = ACCEPT,
0143     .prog_type = BPF_PROG_TYPE_XDP,
0144 },
0145 {
0146     "meta access, test9",
0147     .insns = {
0148     BPF_LDX_MEM(BPF_W, BPF_REG_2, BPF_REG_1,
0149             offsetof(struct xdp_md, data_meta)),
0150     BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1, offsetof(struct xdp_md, data)),
0151     BPF_MOV64_REG(BPF_REG_4, BPF_REG_2),
0152     BPF_ALU64_IMM(BPF_ADD, BPF_REG_4, 0xFFFF),
0153     BPF_ALU64_IMM(BPF_ADD, BPF_REG_4, 1),
0154     BPF_JMP_REG(BPF_JGT, BPF_REG_4, BPF_REG_3, 1),
0155     BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_2, 0),
0156     BPF_MOV64_IMM(BPF_REG_0, 0),
0157     BPF_EXIT_INSN(),
0158     },
0159     .result = REJECT,
0160     .errstr = "invalid access to packet",
0161     .prog_type = BPF_PROG_TYPE_XDP,
0162 },
0163 {
0164     "meta access, test10",
0165     .insns = {
0166     BPF_LDX_MEM(BPF_W, BPF_REG_2, BPF_REG_1,
0167             offsetof(struct xdp_md, data_meta)),
0168     BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1, offsetof(struct xdp_md, data)),
0169     BPF_LDX_MEM(BPF_W, BPF_REG_4, BPF_REG_1,
0170             offsetof(struct xdp_md, data_end)),
0171     BPF_MOV64_IMM(BPF_REG_5, 42),
0172     BPF_MOV64_IMM(BPF_REG_6, 24),
0173     BPF_STX_MEM(BPF_DW, BPF_REG_10, BPF_REG_5, -8),
0174     BPF_ATOMIC_OP(BPF_DW, BPF_ADD, BPF_REG_10, BPF_REG_6, -8),
0175     BPF_LDX_MEM(BPF_DW, BPF_REG_5, BPF_REG_10, -8),
0176     BPF_JMP_IMM(BPF_JGT, BPF_REG_5, 100, 6),
0177     BPF_ALU64_REG(BPF_ADD, BPF_REG_3, BPF_REG_5),
0178     BPF_MOV64_REG(BPF_REG_5, BPF_REG_3),
0179     BPF_MOV64_REG(BPF_REG_6, BPF_REG_2),
0180     BPF_ALU64_IMM(BPF_ADD, BPF_REG_6, 8),
0181     BPF_JMP_REG(BPF_JGT, BPF_REG_6, BPF_REG_5, 1),
0182     BPF_LDX_MEM(BPF_B, BPF_REG_2, BPF_REG_2, 0),
0183     BPF_MOV64_IMM(BPF_REG_0, 0),
0184     BPF_EXIT_INSN(),
0185     },
0186     .result = REJECT,
0187     .errstr = "invalid access to packet",
0188     .prog_type = BPF_PROG_TYPE_XDP,
0189 },
0190 {
0191     "meta access, test11",
0192     .insns = {
0193     BPF_LDX_MEM(BPF_W, BPF_REG_2, BPF_REG_1,
0194             offsetof(struct xdp_md, data_meta)),
0195     BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1, offsetof(struct xdp_md, data)),
0196     BPF_MOV64_IMM(BPF_REG_5, 42),
0197     BPF_MOV64_IMM(BPF_REG_6, 24),
0198     BPF_STX_MEM(BPF_DW, BPF_REG_10, BPF_REG_5, -8),
0199     BPF_ATOMIC_OP(BPF_DW, BPF_ADD, BPF_REG_10, BPF_REG_6, -8),
0200     BPF_LDX_MEM(BPF_DW, BPF_REG_5, BPF_REG_10, -8),
0201     BPF_JMP_IMM(BPF_JGT, BPF_REG_5, 100, 6),
0202     BPF_ALU64_REG(BPF_ADD, BPF_REG_2, BPF_REG_5),
0203     BPF_MOV64_REG(BPF_REG_5, BPF_REG_2),
0204     BPF_MOV64_REG(BPF_REG_6, BPF_REG_2),
0205     BPF_ALU64_IMM(BPF_ADD, BPF_REG_6, 8),
0206     BPF_JMP_REG(BPF_JGT, BPF_REG_6, BPF_REG_3, 1),
0207     BPF_LDX_MEM(BPF_B, BPF_REG_5, BPF_REG_5, 0),
0208     BPF_MOV64_IMM(BPF_REG_0, 0),
0209     BPF_EXIT_INSN(),
0210     },
0211     .result = ACCEPT,
0212     .prog_type = BPF_PROG_TYPE_XDP,
0213 },
0214 {
0215     "meta access, test12",
0216     .insns = {
0217     BPF_LDX_MEM(BPF_W, BPF_REG_2, BPF_REG_1,
0218             offsetof(struct xdp_md, data_meta)),
0219     BPF_LDX_MEM(BPF_W, BPF_REG_3, BPF_REG_1, offsetof(struct xdp_md, data)),
0220     BPF_LDX_MEM(BPF_W, BPF_REG_4, BPF_REG_1,
0221             offsetof(struct xdp_md, data_end)),
0222     BPF_MOV64_REG(BPF_REG_5, BPF_REG_3),
0223     BPF_ALU64_IMM(BPF_ADD, BPF_REG_5, 16),
0224     BPF_JMP_REG(BPF_JGT, BPF_REG_5, BPF_REG_4, 5),
0225     BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_3, 0),
0226     BPF_MOV64_REG(BPF_REG_5, BPF_REG_2),
0227     BPF_ALU64_IMM(BPF_ADD, BPF_REG_5, 16),
0228     BPF_JMP_REG(BPF_JGT, BPF_REG_5, BPF_REG_3, 1),
0229     BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_2, 0),
0230     BPF_MOV64_IMM(BPF_REG_0, 0),
0231     BPF_EXIT_INSN(),
0232     },
0233     .result = ACCEPT,
0234     .prog_type = BPF_PROG_TYPE_XDP,
0235 },