summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaciej Żenczykowski <maze@google.com>2021-03-09 11:29:20 +0000
committerLorenzo Colitti <lorenzo@google.com>2021-04-02 06:22:36 +0000
commite4b5a883015cd7dd8da5d9603498cde4c6db018d (patch)
treec356dbaf710fd1c78c5a34c879b72793deb19c40
parent023c23fb1f361a91d5541c96ac050da063e96281 (diff)
downloadnetd-e4b5a883015cd7dd8da5d9603498cde4c6db018d.tar.gz
bpf_net_helpers.h - introduce try_make_readable()
Original change: https://android-review.googlesource.com/c/platform/system/netd/+/1620933 Change-Id: If845e14ea699bdc4ea46b5b5aa93513d8a3f55d1 Test: TreeHugger Signed-off-by: Maciej Żenczykowski <maze@google.com> Merged-In: Ic371816904364eda69debdb7dfb4816c4eb5e14d
-rw-r--r--bpf_progs/bpf_net_helpers.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/bpf_progs/bpf_net_helpers.h b/bpf_progs/bpf_net_helpers.h
index 09549a35..d978f3a2 100644
--- a/bpf_progs/bpf_net_helpers.h
+++ b/bpf_progs/bpf_net_helpers.h
@@ -66,4 +66,10 @@ static inline __always_inline __unused bool is_received_skb(struct __sk_buff* sk
skb->pkt_type == PACKET_MULTICAST;
}
+// try to make the first 'len' header bytes readable via direct packet access
+static inline __always_inline void try_make_readable(struct __sk_buff* skb, int len) {
+ if (len > skb->len) len = skb->len;
+ if (skb->data_end - skb->data < len) bpf_skb_pull_data(skb, len);
+}
+
#endif // NETDBPF_BPF_NET_HELPERS_H