diff options
Diffstat (limited to 'minecproxy/main.c')
-rw-r--r-- | minecproxy/main.c | 87 |
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); |