summaryrefslogtreecommitdiff
path: root/shared/config-parser.h
diff options
context:
space:
mode:
Diffstat (limited to 'shared/config-parser.h')
-rw-r--r--shared/config-parser.h52
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,