X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=xdp.c;h=1344acd1aac2558494ad47b58b0ed89caca74f07;hb=e7e5b2c8192b715dcfb574051c8d098c8360d746;hp=75a44ff2a16d0a22a3cd462107feeec7dd3997c1;hpb=ac33c8518d541b228fc24efcb89858abca0fc75f;p=flowspec-xdp diff --git a/xdp.c b/xdp.c index 75a44ff..1344acd 100644 --- a/xdp.c +++ b/xdp.c @@ -7,7 +7,7 @@ #include #include -#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; \