From: Eric Leblond Date: Sun, 7 Jan 2018 20:58:09 +0000 (+0100) Subject: ebpf: slight bypass_filter optimization X-Git-Tag: suricata-4.1.0-beta1~189 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0807dd674063062d22e0677837f2b8e7bea4a965;p=thirdparty%2Fsuricata.git ebpf: slight bypass_filter optimization --- 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];