Lines Matching refs:program_len
590 u32 program_len, const u8 *packet, u32 packet_len,
593 #define APF_TRACE_HOOK(pc, regs, program, program_len, packet, packet_len, memory, memory_len) \
617 u16 except_buf_sz; /* Length of the exception buffer (at program_len offset) */
629 u32 program_len; /* Length of the program */
695 u32 instructions_remaining = ctx->program_len;
698 /* This cannot wrap due to previous check, that enforced program_len & ram_len < 2GiB. */
699 if (ctx->program_len + 20 > ctx->ram_len) return EXCEPTION;
717 APF_TRACE_HOOK(ctx->pc, ctx->R, ctx->program, ctx->program_len,
719 if (ctx->pc == ctx->program_len + 1) return DROP;
720 if (ctx->pc == ctx->program_len) return PASS;
721 if (ctx->pc > ctx->program_len) return EXCEPTION;
739 imm = decode_imm(ctx, imm_len); /* 1st imm, at worst bytes 1-4 past opcode/program_len */
843 /* pc < program_len < ram_len < 2GiB, thus pc + bytes cannot wrap */
986 ctx->program + ctx->program_len,
995 while (ctx->pc + 1 < ctx->program_len &&
1024 if (ctx->pc + cnt * len > ctx->program_len) return EXCEPTION;
1096 static int apf_runner(void* ctx, u32* const program, const u32 program_len,
1106 /* We also don't want garbage like program_len == 0xFFFFFFFF */
1107 if ((program_len | ram_len) >> 31) return EXCEPTION;
1116 apf_ctx.program_len = program_len;
1121 apf_ctx.mem.named.program_size = program_len;
1133 if (buf_size >= sizeof(apf_ctx) && apf_ctx.program_len + buf_size <= apf_ctx.ram_len) {
1134 u8* buf = apf_ctx.program + apf_ctx.program_len;
1147 int apf_run(void* ctx, u32* const program, const u32 program_len,
1154 return apf_runner(ctx, program, program_len, ram_len, packet, packet_len, filter_age_16384ths);