/* firewall — список разрешённых пар IPv4/порт из global_config, без изменения системного firewall. * init/обнуление → load_rules (копия и сортировка правил) → check → free; контекст использует один поток. * check: 1 разрешено, 0 запрещено; port=0 в правиле разрешает все порты IP, bypass_all разрешает всё. * IP и порт передавать в host order, как в CFG_FIREWALL_RULE. */ #ifndef FIREWALL_H #define FIREWALL_H #include #include "config_parser.h" #ifdef __cplusplus extern "C" { #endif struct firewall_ctx { struct CFG_FIREWALL_RULE *rules; int count; int bypass_all; }; int fw_init(struct firewall_ctx *ctx); int fw_load_rules(struct firewall_ctx *ctx, const struct global_config *cfg); int fw_check(const struct firewall_ctx *ctx, uint32_t ip, uint16_t port); void fw_free(struct firewall_ctx *ctx); #ifdef __cplusplus } #endif #endif