diff options
Diffstat (limited to 'fw/app/src')
-rw-r--r-- | fw/app/src/settings.c | 9 | ||||
-rw-r--r-- | fw/app/src/settings.h | 2 |
2 files changed, 7 insertions, 4 deletions
diff --git a/fw/app/src/settings.c b/fw/app/src/settings.c index d867207..04d309e 100644 --- a/fw/app/src/settings.c +++ b/fw/app/src/settings.c @@ -37,7 +37,7 @@ int init_settings(void) { SYS_INIT(init_settings, APPLICATION, 50); static const struct json_obj_descr settings_syslog_target_descr[] = { - JSON_OBJ_DESCR_PRIM(struct settings_syslog_target, ip, JSON_TOK_NUMBER), // FIXME should be string but this leads to segfault + JSON_OBJ_DESCR_PRIM(struct settings_syslog_target, ip, JSON_TOK_STRING), }; static const struct json_obj_descr settings_syslog_descr[] = { @@ -52,14 +52,17 @@ int settings_to_json(void *buffer, size_t len) { struct settings settings = {0,}; + static char ip[IPV6_STRLEN_MAX]; int ret = settings_runtime_get("syslog/target/ip", - settings.syslog.target.ip, - sizeof(settings.syslog.target.ip)); + ip, + sizeof(ip)); if (ret < 0) { LOG_ERR("Failed to get runtime setting syslog/target/ip (%d)", ret); return ret; } + settings.syslog.target.ip = ip; + ret = json_obj_encode_buf( settings_descr, ARRAY_SIZE(settings_descr), diff --git a/fw/app/src/settings.h b/fw/app/src/settings.h index 9d46132..d86477e 100644 --- a/fw/app/src/settings.h +++ b/fw/app/src/settings.h @@ -15,7 +15,7 @@ struct settings_syslog_target { - char ip[IPV6_STRLEN_MAX]; + const char *ip; }; struct settings_syslog { |