From 0807dd674063062d22e0677837f2b8e7bea4a965 Mon Sep 17 00:00:00 2001 From: Eric Leblond Date: Sun, 7 Jan 2018 21:58:09 +0100 Subject: [PATCH] ebpf: slight bypass_filter optimization --- ebpf/bypass_filter.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/ebpf/bypass_filter.c b/ebpf/bypass_filter.c index 23f5f32dc6..aea9f8ce72 100644 --- a/ebpf/bypass_filter.c +++ b/ebpf/bypass_filter.c @@ -137,15 +137,6 @@ static __always_inline int ipv6_filter(struct __sk_buff *skb) nhoff = skb->cb[0]; - tuple.src[0] = load_word(skb, nhoff + offsetof(struct ipv6hdr, saddr)); - tuple.src[1] = load_word(skb, nhoff + offsetof(struct ipv6hdr, saddr) + 4); - tuple.src[2] = load_word(skb, nhoff + offsetof(struct ipv6hdr, saddr) + 8); - tuple.src[3] = load_word(skb, nhoff + offsetof(struct ipv6hdr, saddr) + 12); - tuple.dst[0] = load_word(skb, nhoff + offsetof(struct ipv6hdr, daddr)); - tuple.dst[1] = load_word(skb, nhoff + offsetof(struct ipv6hdr, daddr) + 4); - tuple.dst[2] = load_word(skb, nhoff + offsetof(struct ipv6hdr, daddr) + 8); - tuple.dst[3] = load_word(skb, nhoff + offsetof(struct ipv6hdr, daddr) + 12); - /* get next header */ nhdr = load_byte(skb, nhoff + offsetof(struct ipv6hdr, nexthdr)); @@ -158,6 +149,15 @@ static __always_inline int ipv6_filter(struct __sk_buff *skb) return -1; } + tuple.src[0] = load_word(skb, nhoff + offsetof(struct ipv6hdr, saddr)); + tuple.src[1] = load_word(skb, nhoff + offsetof(struct ipv6hdr, saddr) + 4); + tuple.src[2] = load_word(skb, nhoff + offsetof(struct ipv6hdr, saddr) + 8); + tuple.src[3] = load_word(skb, nhoff + offsetof(struct ipv6hdr, saddr) + 12); + tuple.dst[0] = load_word(skb, nhoff + offsetof(struct ipv6hdr, daddr)); + tuple.dst[1] = load_word(skb, nhoff + offsetof(struct ipv6hdr, daddr) + 4); + tuple.dst[2] = load_word(skb, nhoff + offsetof(struct ipv6hdr, daddr) + 8); + tuple.dst[3] = load_word(skb, nhoff + offsetof(struct ipv6hdr, daddr) + 12); + /* Parse TCP */ tuple.ports = load_word(skb, nhoff + 40 /* IPV6_HEADER_LEN */); port = tuple.port16[1];