|
ebpf-blocker 1.0.0
XDP-based packet blocker using eBPF
|
Реализация обёртки SQLite-базы данных и утилит CIDR. More...
#include "db.h"#include <arpa/inet.h>#include <cstring>#include <iostream>#include <sstream>#include <stdexcept>Go to the source code of this file.
Functions | |
| CIDR | ParseCIDR (const std::string &str) |
| std::string | IPToString (uint32_t ip) |
| static int | StepCallback (void *data, int, char **argv, char **) |
| static bool | MatchesCIDR (uint32_t ip, const std::string &cidr_str) |
Реализация обёртки SQLite-базы данных и утилит CIDR.
Содержит реализацию BlockerDB, парсера CIDR и вспомогательных функций для работы с IP-адресами.
Definition in file db.cpp.
| std::string IPToString | ( | uint32_t | ip | ) |
Конвертирует 32-битный IP (network byte order) в dotted-decimal строку.
| [in] | ip | IP-адрес в network byte order. |
Definition at line 45 of file db.cpp.
Referenced by TEST(), and BlockerDB::UpdateLastBlockedAt().
|
static |
Проверяет, входит ли IP в указанную CIDR-подсеть.
| [in] | ip | IP-адрес в network byte order. |
| [in] | cidr_str | CIDR-строка вида "10.0.0.0/8". |
Definition at line 125 of file db.cpp.
Referenced by BlockerDB::UpdateLastBlockedAt().
| CIDR ParseCIDR | ( | const std::string & | str | ) |
Парсит CIDR-строку (например "192.168.1.0/24") в структуру CIDR.
| [in] | str | Входная строка в формате "IP" или "IP/длина_префикса". |
| std::invalid_argument | при некорректном IP или длине префикса. |
Definition at line 18 of file db.cpp.
References CIDR::prefixlen.
Referenced by TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), and XdpBlocker::UpdateMap().
|
static |
Колбэк sqlite3_exec, собирающий строки (ip, comment).
| [in] | data | Указатель на вектор BlockEntry. |
| [in] | argv | Массив полей строки SQL. |
Definition at line 59 of file db.cpp.
Referenced by BlockerDB::GetEntries().