From fa25599e90a7535a02641ef03ccfc138cf5c8fd3 Mon Sep 17 00:00:00 2001 From: David Härdeman Date: Mon, 22 Jun 2020 22:42:57 +0200 Subject: Add some more config options --- main.c | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 82 insertions(+), 5 deletions(-) (limited to 'main.c') diff --git a/main.c b/main.c index fd6b2aa..2cdf5d6 100644 --- a/main.c +++ b/main.c @@ -32,6 +32,14 @@ #define DEFAULT_HOMEDIR_PATH "/home/david/intest" #define DEFAULT_MAIN_CONFIG_FILE_PATH "./mcproxy.conf" #define DEFAULT_ANNOUNCE_INTERVAL 3 +#define DEFAULT_PROXY_CONN_INTERVAL 3 +#define DEFAULT_PROXY_CONN_ATTEMPTS 20 +#define DEFAULT_SOCKET_DEFER true +#define DEFAULT_SOCKET_FREEBIND true +#define DEFAULT_SOCKET_KEEPALIVE true +#define DEFAULT_SOCKET_IPTOS true +#define DEFAULT_SOCKET_NODELAY true + /* Global */ struct cfg *cfg = NULL; @@ -199,6 +207,13 @@ enum mcfg_keys { MCFG_KEY_IGMP, MCFG_KEY_IGMP_IFACE, MCFG_KEY_ANN_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[] = { @@ -214,6 +229,34 @@ struct cfg_key_value_map mcfg_key_map[] = { .key_name = "announce_interval", .key_value = MCFG_KEY_ANN_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, @@ -303,6 +346,34 @@ cfg_read() cfg->announce_interval = value.uint16; break; + case MCFG_KEY_PROXY_CONN_INTERVAL: + cfg->proxy_connection_interval = value.uint16; + break; + + case MCFG_KEY_PROXY_CONN_ATTEMPTS: + cfg->proxy_connection_attempts = value.uint16; + break; + + case MCFG_KEY_SOCKET_DEFER: + cfg->socket_defer = value.boolean; + break; + + case MCFG_KEY_SOCKET_FREEBIND: + cfg->socket_freebind = value.boolean; + break; + + case MCFG_KEY_SOCKET_KEEPALIVE: + cfg->socket_keepalive = value.boolean; + break; + + case MCFG_KEY_SOCKET_IPTOS: + cfg->socket_iptos = value.boolean; + break; + + case MCFG_KEY_SOCKET_NODELAY: + cfg->socket_nodelay = value.boolean; + break; + case MCFG_KEY_INVALID: default: die("main config file (%s) invalid", path); @@ -397,11 +468,20 @@ cfg_init(int argc, char **argv) if (!cfg) die("malloc: %m"); + uring_task_init(&cfg->task, "main", NULL, cfg_free); + list_init(&cfg->servers); + + cfg->homedir = DEFAULT_HOMEDIR_PATH; cfg->announce_interval = DEFAULT_ANNOUNCE_INTERVAL; + cfg->proxy_connection_interval = DEFAULT_PROXY_CONN_INTERVAL; + cfg->proxy_connection_attempts = DEFAULT_PROXY_CONN_ATTEMPTS; + cfg->socket_defer = DEFAULT_SOCKET_DEFER; + cfg->socket_freebind = DEFAULT_SOCKET_FREEBIND; + cfg->socket_keepalive = DEFAULT_SOCKET_KEEPALIVE; + cfg->socket_iptos = DEFAULT_SOCKET_IPTOS; + cfg->socket_nodelay = DEFAULT_SOCKET_NODELAY; cfg->uid = geteuid(); cfg->gid = getegid(); - uring_task_init(&cfg->task, "main", NULL, cfg_free); - list_init(&cfg->servers); while (true) { int option_index = 0; @@ -495,9 +575,6 @@ cfg_init(int argc, char **argv) if (optind < argc) usage(argc, argv, true); - - if (!cfg->homedir) - cfg->homedir = DEFAULT_HOMEDIR_PATH; } static void -- cgit v1.2.3