27 lines
933 B
C++
27 lines
933 B
C++
#pragma once
|
|
#include <cstdint>
|
|
#include <string>
|
|
|
|
namespace bsc::fw {
|
|
|
|
class Firewall {
|
|
public:
|
|
explicit Firewall(std::string backend = "nftables") : backend_(std::move(backend)) {}
|
|
bool reload(const std::string& config_path) const;
|
|
|
|
// Installa la chain di intercettazione che dirotta il traffico in uscita
|
|
// verso la NFQUEUE con numero `queue_num`. Restituisce true se nft e'
|
|
// disponibile e il comando e' stato eseguito con successo. In caso di
|
|
// errore (nft non installato, permessi mancanti, ecc.) restituisce false
|
|
// e il daemon cade nel fallback di polling /proc.
|
|
bool install_nfqueue_rule(std::uint16_t queue_num, bool queue_bypass = true) const;
|
|
|
|
// Rimuove la chain di intercettazione installata da install_nfqueue_rule.
|
|
// Sicuro da chiamare anche se la chain non esiste.
|
|
void remove_nfqueue_rule() const;
|
|
|
|
private:
|
|
std::string backend_;
|
|
};
|
|
|
|
} // namespace bsc::fw
|