39 void Load(
const std::string &iface);
49 void UpdateMap(
const std::string &map_name,
50 const std::vector<BlockEntry> &entries);
XdpBlocker(XdpBlocker &&)=delete
XdpBlocker & operator=(const XdpBlocker &)=delete
void DetachFromInterface()
Открепляет XDP-программу от iface_.
void AttachToInterface()
Прикрепляет загруженную XDP-программу к iface_.
std::vector< std::pair< uint32_t, uint64_t > > ReadAndClearDropCounters()
Читает все записи из карты drop_counter и атомарно очищает их.
void Unload()
Открепляет XDP и закрывает BPF-объект. Безопасен для многократного вызова.
void LoadBPFProgram()
Открывает и загружает BPF-объект из встроенного массива байткода.
bpf_object * obj_
Дескриптор BPF-объекта libbpf.
std::string iface_
Имя текущего прикреплённого интерфейса.
XdpBlocker & operator=(XdpBlocker &&)=delete
bpf_map * whitelist_map_
LPM trie для записей белого списка.
void UpdateWhitelist(const std::vector< BlockEntry > &entries)
void UpdateBlacklist(const std::vector< BlockEntry > &entries)
void ClearMap(bpf_map *map)
Перебирает и удаляет все ключи из BPF-карты (итерация LPM trie).
bpf_map * drop_counter_map_
Хэш-карта для счётчиков дропов по IP.
bpf_map * blacklist_map_
LPM trie для записей чёрного списка.
void UpdateMap(const std::string &map_name, const std::vector< BlockEntry > &entries)
Заменяет все записи в указанной BPF-карте.
void Load(const std::string &iface)
XdpBlocker(const XdpBlocker &)=delete
Обёртка SQLite-базы данных и утилиты парсинга CIDR.