You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
1.0 KiB
30 lines
1.0 KiB
/* 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 <stdint.h> |
|
#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
|
|
|