Check in siphash
[flowspec-xdp] / xdp.c
diff --git a/xdp.c b/xdp.c
index 75a44ff2a16d0a22a3cd462107feeec7dd3997c1..1344acd1aac2558494ad47b58b0ed89caca74f07 100644 (file)
--- a/xdp.c
+++ b/xdp.c
@@ -7,7 +7,7 @@
 #include <linux/icmpv6.h>
 #include <arpa/inet.h>
 
-#define NULL (void*)0
+#include "siphash.h"
 
 /* IP flags. */
 #define IP_CE          0x8000          /* Flag: "Congestion"           */
@@ -175,10 +175,7 @@ struct {
 #ifdef RATE_CNT
 struct ratelimit {
        struct bpf_spin_lock lock;
-       union {
-               int64_t sent_bytes;
-               int64_t sent_packets;
-       } rate;
+       int64_t sent_rate;
        int64_t sent_time;
 };
 struct {
@@ -194,16 +191,14 @@ struct {
 // map_check_btf as of Linux 5.10).
 // This isn't exactly accurate, but at least its faster.
 struct percpu_ratelimit {
-       union {
-               int64_t sent_bytes;
-               int64_t sent_packets;
-       } rate;
+       int64_t sent_rate;
        int64_t sent_time;
 };
 
 #define V6_SRC_RATE_DEFINE(n, limit) \
 struct { \
        __uint(type, BPF_MAP_TYPE_LRU_PERCPU_HASH); \
+       __uint(map_flags, BPF_F_NO_COMMON_LRU); \
        __uint(max_entries, limit); \
        uint128_t *key; \
        struct percpu_ratelimit *value; \
@@ -212,6 +207,7 @@ struct { \
 #define V4_SRC_RATE_DEFINE(n, limit) \
 struct { \
        __uint(type, BPF_MAP_TYPE_LRU_PERCPU_HASH); \
+       __uint(map_flags, BPF_F_NO_COMMON_LRU); \
        __uint(max_entries, limit); \
        __u32 *key; \
        struct percpu_ratelimit *value; \