From 6b139d613ae6fa127bdce1be5c634ed4b53b1efd Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Tue, 10 Jun 2014 20:46:52 +0200 Subject: Clean up peer config loading Instead of changing the peer list and peer group in the main conf during (re-)loading, add a parser state which contains this information. --- src/config.h | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'src/config.h') diff --git a/src/config.h b/src/config.h index 3231f6d..f4e1de5 100644 --- a/src/config.h +++ b/src/config.h @@ -35,20 +35,31 @@ #include "fastd.h" +/** State of the config parser */ +struct fastd_parser_state { + fastd_peer_group_t *peer_group; /**< The current peer group */ + fastd_peer_config_t *peer; /**< The peer currently being loaded */ + + const char *const filename; /**< The filename of the currently parsed file */ + const int depth; /**< The include depth */ +}; + + void fastd_config_protocol(const char *name); void fastd_config_method(const char *name); void fastd_config_cipher(const char *name, const char *impl); void fastd_config_mac(const char *name, const char *impl); void fastd_config_bind_address(const fastd_peer_address_t *address, const char *bindtodev, bool default_v4, bool default_v6); -void fastd_config_peer_group_push(const char *name); -void fastd_config_peer_group_pop(void); void fastd_config_release(void); void fastd_config_handle_options(int argc, char *const argv[]); void fastd_config_verify(void); +bool fastd_config_read(const char *filename, fastd_peer_group_t *peer_group, fastd_peer_config_t *peer_config, int depth); +void fastd_config_peer_group_push(fastd_parser_state_t *state, const char *name); +void fastd_config_peer_group_pop(fastd_parser_state_t *state); +void fastd_config_add_peer_dir(fastd_peer_group_t *group, const char *dir); + void fastd_configure(int argc, char *const argv[]); void fastd_config_check(void); void fastd_config_load_peer_dirs(void); -void fastd_add_peer_dir(const char *dir); -bool fastd_read_config(const char *filename, bool peer_config, int depth); -- cgit v1.2.3