#pragma once #include #include 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