summaryrefslogtreecommitdiff
path: root/minecproxy/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'minecproxy/main.c')
-rw-r--r--minecproxy/main.c87
1 files changed, 8 insertions, 79 deletions
diff --git a/minecproxy/main.c b/minecproxy/main.c
index 7e17369..92065cc 100644
--- a/minecproxy/main.c
+++ b/minecproxy/main.c
@@ -29,6 +29,7 @@
#include "idle.h"
#include "ptimer.h"
#include "config.h"
+#include "minecproxy-config-options.h"
/* Global */
struct cfg *cfg = NULL;
@@ -196,78 +197,6 @@ static void cfg_free(struct uring_task *task)
/* The cfg struct is free:d in main() */
}
-enum mcfg_keys {
- MCFG_KEY_INVALID = 0,
- MCFG_KEY_IGMP,
- MCFG_KEY_IGMP_IFACE,
- MCFG_KEY_ANNOUNCE_INTERVAL,
- MCFG_KEY_PROXY_CONN_INTERVAL,
- MCFG_KEY_PROXY_CONN_ATTEMPTS,
- MCFG_KEY_SOCKET_DEFER,
- MCFG_KEY_SOCKET_FREEBIND,
- MCFG_KEY_SOCKET_KEEPALIVE,
- MCFG_KEY_SOCKET_IPTOS,
- MCFG_KEY_SOCKET_NODELAY,
-};
-
-struct cfg_key_value_map mcfg_key_map[] = {
- {
- .key_name = "igmp",
- .key_value = MCFG_KEY_IGMP,
- .value_type = CFG_VAL_TYPE_BOOL,
- },
- {
- .key_name = "igmp_iface",
- .key_value = MCFG_KEY_IGMP_IFACE,
- .value_type = CFG_VAL_TYPE_STRING,
- },
- {
- .key_name = "announce_interval",
- .key_value = MCFG_KEY_ANNOUNCE_INTERVAL,
- .value_type = CFG_VAL_TYPE_UINT16,
- },
- {
- .key_name = "proxy_connection_interval",
- .key_value = MCFG_KEY_PROXY_CONN_INTERVAL,
- .value_type = CFG_VAL_TYPE_UINT16,
- },
- {
- .key_name = "proxy_connection_attempts",
- .key_value = MCFG_KEY_PROXY_CONN_ATTEMPTS,
- .value_type = CFG_VAL_TYPE_UINT16,
- },
- {
- .key_name = "socket_defer",
- .key_value = MCFG_KEY_SOCKET_DEFER,
- .value_type = CFG_VAL_TYPE_BOOL,
- },
- {
- .key_name = "socket_freebind",
- .key_value = MCFG_KEY_SOCKET_FREEBIND,
- .value_type = CFG_VAL_TYPE_BOOL,
- },
- {
- .key_name = "socket_keepalive",
- .key_value = MCFG_KEY_SOCKET_KEEPALIVE,
- .value_type = CFG_VAL_TYPE_BOOL,
- },
- {
- .key_name = "socket_iptos",
- .key_value = MCFG_KEY_SOCKET_IPTOS,
- .value_type = CFG_VAL_TYPE_BOOL,
- },
- {
- .key_name = "socket_nodelay",
- .key_value = MCFG_KEY_SOCKET_NODELAY,
- .value_type = CFG_VAL_TYPE_BOOL,
- },
- {
- .key_name = NULL,
- .key_value = MCFG_KEY_INVALID,
- .value_type = CFG_VAL_TYPE_INVALID,
- }
-};
-
static void cfg_read()
{
char buf[4096];
@@ -280,7 +209,7 @@ static void cfg_read()
assert_return(cfg);
- fd = openat(dirfd(cfg->cfg_dir), DEFAULT_MAIN_CFG_FILE,
+ fd = openat(dirfd(cfg->cfg_dir), MINECPROXY_CFG_FILE,
O_RDONLY | O_CLOEXEC | O_NOCTTY);
if (fd < 0)
return;
@@ -291,7 +220,7 @@ static void cfg_read()
fd = -1;
debug(DBG_CFG, "opened main config file %s/%s", cfg->cfg_real_path,
- DEFAULT_MAIN_CFG_FILE);
+ MINECPROXY_CFG_FILE);
for (off = 0; off < sizeof(buf); off += r) {
r = fread(buf + off, 1, sizeof(buf) - off, cfgfile);
@@ -301,14 +230,14 @@ static void cfg_read()
if (off >= sizeof(buf) - 1)
die("main config file %s/%s too large", cfg->cfg_real_path,
- DEFAULT_MAIN_CFG_FILE);
+ MINECPROXY_CFG_FILE);
buf[off] = '\0';
pos = buf;
- if (!config_parse_header("mcproxy", &pos, &lineno))
+ if (!config_parse_header(MINECPROXY_CFG_HEADER, &pos, &lineno))
die("main config file %s/%s missing/invalid header",
- cfg->cfg_real_path, DEFAULT_MAIN_CFG_FILE);
+ cfg->cfg_real_path, MINECPROXY_CFG_FILE);
while (true) {
int key;
@@ -316,14 +245,14 @@ static void cfg_read()
struct cfg_value value;
const char *error;
- if (!config_parse_line(DEFAULT_MAIN_CFG_FILE, &pos,
+ if (!config_parse_line(MINECPROXY_CFG_FILE, &pos,
mcfg_key_map, &key, &keyname,
&value, false, &lineno, &error))
break;
if (key == MCFG_KEY_INVALID)
die("main config file %s/%s invalid: line %u: %s",
- cfg->cfg_real_path, DEFAULT_MAIN_CFG_FILE, lineno,
+ cfg->cfg_real_path, MINECPROXY_CFG_FILE, lineno,
error);
debug(DBG_CFG, "main cfg: key %s", keyname);