class DynBPFFilter
{
public:
- DynBPFFilter(std::shared_ptr<BPFFilter> bpf): d_bpf(bpf)
+ DynBPFFilter(std::shared_ptr<BPFFilter>& bpf): d_bpf(bpf)
{
}
~DynBPFFilter()
{
}
+ void excludeRange(const Netmask& range)
+ {
+ d_excludedSubnets.addMask(range);
+ }
+ void includeRange(const Netmask& range)
+ {
+ d_excludedSubnets.addMask(range, false);
+ }
/* returns true if the addr wasn't already blocked, false otherwise */
bool block(const ComboAddress& addr, const struct timespec& until);
void purgeExpired(const struct timespec& now);
container_t d_entries;
std::mutex d_mutex;
std::shared_ptr<BPFFilter> d_bpf;
+ NetmaskGroup d_excludedSubnets;
};
#endif /* HAVE_EBPF */