]>
git.ipfire.org Git - thirdparty/pdns.git/blob - pdns/dnsdist-dynbpf.cc
1 #include "dnsdist-dynbpf.hh"
5 void DynBPFFilter::block(const ComboAddress
& addr
, const struct timespec
& until
)
7 std::unique_lock
<std::mutex
> lock(d_mutex
);
9 const container_t::iterator it
= d_entries
.find(addr
);
10 if (it
!= d_entries
.end()) {
11 if (it
->d_until
< until
) {
12 d_entries
.replace(it
, BlockEntry(addr
, until
));
17 d_entries
.insert(BlockEntry(addr
, until
));
21 void DynBPFFilter::purgeExpired(const struct timespec
& now
)
23 std::unique_lock
<std::mutex
> lock(d_mutex
);
25 typedef nth_index
<container_t
,1>::type ordered_until
;
26 ordered_until
& ou
= get
<1>(d_entries
);
28 for (ordered_until::iterator it
=ou
.begin(); it
!= ou
.end(); ) {
29 if (it
->d_until
< now
) {
30 ComboAddress addr
= it
->d_addr
;
40 #endif /* HAVE_EBPF */