Christian Deacon <gamemann@xxxxxxxxxxx> writes: > Hey Toke, > > > I apologize for the long delay on this. A lot has been going on recently! > > > I attempted to match payload data using the packet's payload as the BPF > map key. Unfortunately, I didn't have any success with this. I stored my > findings here from last month: > > > https://github.com/gamemann/XDP-Dynamic-Payload-Matching#section-methodfour-fail > > > I'd assume I may be missing something here, though. > > > I saw another XDP mailing list thread pop up recently regarding matching > TCP payload data. I believe this may be what they're trying to achieve > (being able to match dynamic payload data with XDP). > > > I was wondering if you had any other ideas on how we can match packet > payload data against a BPF map. That error ("invalid stack type R2 off=-16 access_size=150") comes from this check in the verifier: if (off >= 0 || off < -MAX_BPF_STACK || off + access_size > 0 || access_size < 0 || (access_size == 0 && !zero_size_allowed)) { if (tnum_is_const(reg->var_off)) { verbose(env, "invalid stack type R%d off=%d access_size=%d\n", regno, off, access_size); } else { .. } return -EACCESS; } which I think means that you're trying to use a 10-byte value as a lookup key for a map that has a 150-byte key, which would make the map key read through the end of the stack. So basically, if you change uint8_t hashkey[10]; to uint8_t hashkey[150]; I think it ought to work? -Toke