1
0
mirror of https://github.com/solemnwarning/ipxwrapper synced 2024-12-30 16:45:37 +01:00

Implemented config saving functions and added log_level to main_config.

This commit is contained in:
Daniel Collins 2012-10-28 15:53:54 +00:00
parent 39c6e18b46
commit 7fe8d74f22
3 changed files with 59 additions and 0 deletions

View File

@ -69,6 +69,8 @@ main_config_t get_main_config(void)
}
config.router_port = reg_get_dword(reg, "control_port", config.router_port);
config.log_level = reg_get_dword(reg, "min_log_level", LOG_INFO);
}
else if(version == 2)
{
@ -77,6 +79,8 @@ main_config_t get_main_config(void)
config.w95_bug = reg_get_dword(reg, "w95_bug", config.w95_bug);
config.bcast_all = reg_get_dword(reg, "bcast_all", config.bcast_all);
config.src_filter = reg_get_dword(reg, "src_filter", config.src_filter);
config.log_level = reg_get_dword(reg, "log_level", LOG_INFO);
}
reg_close(reg);
@ -84,6 +88,29 @@ main_config_t get_main_config(void)
return config;
}
bool set_main_config(const main_config_t *config)
{
HKEY reg = reg_open_main(true);
bool ok = reg_set_dword(reg, "single_iface", config->single_iface)
&& reg_set_addr32(reg, "single_netnum", config->single_netnum)
&& reg_set_addr48(reg, "single_nodenum", config->single_nodenum)
&& reg_set_dword(reg, "port", config->udp_port)
&& reg_set_dword(reg, "router_port", config->router_port)
&& reg_set_dword(reg, "w95_bug", config->w95_bug)
&& reg_set_dword(reg, "bcast_all", config->bcast_all)
&& reg_set_dword(reg, "src_filter", config->src_filter)
&& reg_set_dword(reg, "log_level", config->log_level)
&& reg_set_dword(reg, "version", 2);
reg_close(reg);
return ok;
}
iface_config_t get_iface_config(addr48_t hwaddr)
{
char id[18];
@ -134,6 +161,24 @@ iface_config_t get_iface_config(addr48_t hwaddr)
return config;
}
bool set_iface_config(addr48_t hwaddr, const iface_config_t *config)
{
char id[ADDR48_STRING_SIZE];
addr48_string(id, hwaddr);
HKEY reg = reg_open_main(false);
HKEY ifreg = reg_open_subkey(reg, id, true);
bool ok = reg_set_addr32(ifreg, "net", config->netnum)
&& reg_set_addr32(ifreg, "node", config->nodenum)
&& reg_set_addr32(ifreg, "enabled", config->enabled);
reg_close(ifreg);
reg_close(reg);
return ok;
}
addr48_t get_primary_iface(void)
{
addr48_t primary = addr48_in((unsigned char[]){ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF });

View File

@ -23,6 +23,10 @@
#include "common.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct main_config {
uint16_t udp_port;
uint16_t router_port;
@ -31,6 +35,8 @@ typedef struct main_config {
bool bcast_all;
bool src_filter;
enum ipx_log_level log_level;
unsigned int addr_cache_ttl;
unsigned int iface_ttl;
@ -61,8 +67,15 @@ struct v1_iface_config {
} __attribute__((__packed__));
main_config_t get_main_config(void);
bool set_main_config(const main_config_t *config);
iface_config_t get_iface_config(addr48_t hwaddr);
bool set_iface_config(addr48_t hwaddr, const iface_config_t *config);
addr48_t get_primary_iface();
#ifdef __cplusplus
}
#endif
#endif /* !IPX_CONFIG_H */

View File

@ -82,6 +82,7 @@ BOOL WINAPI DllMain(HINSTANCE me, DWORD why, LPVOID res) {
}
main_config = get_main_config();
min_log_level = main_config.log_level;
addr_cache_init();