config-filter.h revision ec1a4f4306496380e9d96ee08a3718a669d0875a
02c335c23bf5fa225a467c19f2c063fb0dc7b8c3Timo Sirainen#ifndef CONFIG_FILTER_H
28c75d59f1d1a7caeb85635964f3881c0038eb23Timo Sirainen#define CONFIG_FILTER_H
28c75d59f1d1a7caeb85635964f3881c0038eb23Timo Sirainen
28c75d59f1d1a7caeb85635964f3881c0038eb23Timo Sirainen#include "network.h"
8971ca621b7a7337947306494731b75d1d3919e5Timo Sirainen
28c75d59f1d1a7caeb85635964f3881c0038eb23Timo Sirainenstruct config_filter {
28c75d59f1d1a7caeb85635964f3881c0038eb23Timo Sirainen const char *service;
28c75d59f1d1a7caeb85635964f3881c0038eb23Timo Sirainen struct ip_addr local_net, remote_net;
4ee00532a265bdfb38539d811fcd12d51210ac35Timo Sirainen unsigned int local_bits, remote_bits;
e3237982a4e6346c2fec4b8f8fb946c826a363fdTimo Sirainen};
28c75d59f1d1a7caeb85635964f3881c0038eb23Timo Sirainen
419cf63077e755935ce105747d6ebc67b7d38a7fTimo Sirainenstruct config_filter_parser_list {
28c75d59f1d1a7caeb85635964f3881c0038eb23Timo Sirainen struct config_filter filter;
28c75d59f1d1a7caeb85635964f3881c0038eb23Timo Sirainen struct config_setting_parser_list *parser_list;
28c75d59f1d1a7caeb85635964f3881c0038eb23Timo Sirainen};
7bd72e4deca3cbf757dd1ea298486d9f3bc24226Timo Sirainen
7bd72e4deca3cbf757dd1ea298486d9f3bc24226Timo Sirainenstruct config_filter_context *config_filter_init(pool_t pool);
7bd72e4deca3cbf757dd1ea298486d9f3bc24226Timo Sirainenvoid config_filter_deinit(struct config_filter_context **ctx);
7bd72e4deca3cbf757dd1ea298486d9f3bc24226Timo Sirainen
7bd72e4deca3cbf757dd1ea298486d9f3bc24226Timo Sirainenvoid config_filter_add_all(struct config_filter_context *ctx,
28c75d59f1d1a7caeb85635964f3881c0038eb23Timo Sirainen struct config_filter_parser_list *const *parsers);
28c75d59f1d1a7caeb85635964f3881c0038eb23Timo Sirainen
28c75d59f1d1a7caeb85635964f3881c0038eb23Timo Sirainenconst struct config_setting_parser_list *
28c75d59f1d1a7caeb85635964f3881c0038eb23Timo Sirainenconfig_filter_match_parsers(struct config_filter_context *ctx,
701eb90460d6c57845dc4e0bf595a5d0b90b01c1Timo Sirainen const struct config_filter *filter);
701eb90460d6c57845dc4e0bf595a5d0b90b01c1Timo Sirainen
75a7ba70c7b377eff0f7124b8943cf2976ac2533Aki Tuomi/* Returns TRUE if filter matches mask. */
75a7ba70c7b377eff0f7124b8943cf2976ac2533Aki Tuomibool config_filter_match(const struct config_filter *mask,
75a7ba70c7b377eff0f7124b8943cf2976ac2533Aki Tuomi const struct config_filter *filter);
75a7ba70c7b377eff0f7124b8943cf2976ac2533Aki Tuomi/* Returns TRUE if two filters are fully equal. */
75a7ba70c7b377eff0f7124b8943cf2976ac2533Aki Tuomibool config_filters_equal(const struct config_filter *f1,
419cf63077e755935ce105747d6ebc67b7d38a7fTimo Sirainen const struct config_filter *f2);
28c75d59f1d1a7caeb85635964f3881c0038eb23Timo Sirainen
419cf63077e755935ce105747d6ebc67b7d38a7fTimo Sirainen#endif
91dca97b367c54a139c268b56a0c67f564bd9197Timo Sirainen