flow_dissector: switch kernel context to struct bpf_flow_dissector
struct bpf_flow_dissector has a small subset of sk_buff fields that flow dissector BPF program is allowed to access and an optional pointer to real skb. Real skb is used only in bpf_skb_load_bytes helper to read non-linear data. The real motivation for this is to be able to call flow dissector from eth_get_headlen context where we don't have an skb and need to dissect raw bytes. Signed-off-by: Stanislav Fomichev <sdf@google.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
This commit is contained in:

committed by
Daniel Borkmann

parent
7e6e185c74
commit
089b19a920
@@ -305,4 +305,11 @@ static inline void *skb_flow_dissector_target(struct flow_dissector *flow_dissec
|
||||
return ((char *)target_container) + flow_dissector->offset[key_id];
|
||||
}
|
||||
|
||||
struct bpf_flow_dissector {
|
||||
struct bpf_flow_keys *flow_keys;
|
||||
const struct sk_buff *skb;
|
||||
void *data;
|
||||
void *data_end;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user