diff options
Diffstat (limited to 'shared/config-parser.h')
-rw-r--r-- | shared/config-parser.h | 52 |
1 files changed, 48 insertions, 4 deletions
diff --git a/shared/config-parser.h b/shared/config-parser.h index 771ece1..2220221 100644 --- a/shared/config-parser.h +++ b/shared/config-parser.h @@ -7,6 +7,44 @@ #include <signal.h> #include <dirent.h> +enum server_type { + SERVER_TYPE_UNDEFINED, + SERVER_TYPE_ANNOUNCE, + SERVER_TYPE_PROXY, +}; + +enum server_stop_method { + SERVER_STOP_METHOD_UNDEFINED, + SERVER_STOP_METHOD_RCON, + SERVER_STOP_METHOD_SYSTEMD, + SERVER_STOP_METHOD_EXEC, +}; + +enum server_start_method { + SERVER_START_METHOD_UNDEFINED, + SERVER_START_METHOD_SYSTEMD, + SERVER_START_METHOD_EXEC, +}; + +struct server_config { + char *filename; + enum server_type type; + char *pretty_name; + uint16_t announce_port; + unsigned idle_timeout; + enum server_stop_method stop_method; + enum server_start_method start_method; + char *stop_exec; + char *start_exec; + char *rcon_password; + char *systemd_service; + char *systemd_obj; + struct list_head locals; + struct list_head remotes; + struct list_head rcons; + struct list_head dnslookups; +}; + enum cfg_value_type { CFG_VAL_TYPE_INVALID, CFG_VAL_TYPE_STRING, @@ -16,9 +54,7 @@ enum cfg_value_type { CFG_VAL_TYPE_BOOL, }; -struct dns_async; - -typedef void(dns_cb_t)(struct dns_async *); +typedef void (*notification_cb_t)(struct server_config *scfg, bool done); struct dns_async { char name[FQDN_STR_LEN + 1]; @@ -26,7 +62,8 @@ struct dns_async { struct addrinfo req; struct gaicb gcb; struct sigevent sev; - dns_cb_t *cb; + void (*cb)(struct dns_async *); + notification_cb_t notification_cb; void *priv; struct list_head list; }; @@ -48,6 +85,13 @@ struct cfg_value { }; }; +bool scfg_parse(struct server_config *scfg, char *buf, + notification_cb_t notification_cb); + +void scfg_delete(struct server_config *scfg); + +bool scfg_init(struct server_config *scfg, const char *filename); + bool strtosockaddrs(const char *str, struct cfg_value *rvalue, bool async); bool config_parse_line(const char *filename, char **buf, |