ebpf-blocker 1.0.0
XDP-based packet blocker using eBPF
Loading...
Searching...
No Matches
db.cpp File Reference

Реализация обёртки 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)
 

Detailed Description

Реализация обёртки SQLite-базы данных и утилит CIDR.

Содержит реализацию BlockerDB, парсера CIDR и вспомогательных функций для работы с IP-адресами.

Definition in file db.cpp.

Function Documentation

◆ IPToString()

std::string IPToString ( uint32_t ip)

Конвертирует 32-битный IP (network byte order) в dotted-decimal строку.

Parameters
[in]ipIP-адрес в network byte order.
Returns
Строка вида "192.168.1.1".

Definition at line 45 of file db.cpp.

Referenced by TEST(), and BlockerDB::UpdateLastBlockedAt().

◆ MatchesCIDR()

static bool MatchesCIDR ( uint32_t ip,
const std::string & cidr_str )
static

Проверяет, входит ли IP в указанную CIDR-подсеть.

Parameters
[in]ipIP-адрес в network byte order.
[in]cidr_strCIDR-строка вида "10.0.0.0/8".
Returns
true если ip находится в подсети.

Definition at line 125 of file db.cpp.

Referenced by BlockerDB::UpdateLastBlockedAt().

◆ ParseCIDR()

CIDR ParseCIDR ( const std::string & str)

Парсит CIDR-строку (например "192.168.1.0/24") в структуру CIDR.

Parameters
[in]strВходная строка в формате "IP" или "IP/длина_префикса".
Returns
Распарсенный CIDR (ip в network byte order, с маской).
Exceptions
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().

◆ StepCallback()

static int StepCallback ( void * data,
int ,
char ** argv,
char **  )
static

Колбэк sqlite3_exec, собирающий строки (ip, comment).

Parameters
[in]dataУказатель на вектор BlockEntry.
[in]argvМассив полей строки SQL.
Returns
0 (код успеха для sqlite3_exec).

Definition at line 59 of file db.cpp.

Referenced by BlockerDB::GetEntries().