diff --git a/core/include/dap_config.h b/core/include/dap_config.h
index 34cf96148bfc5ea17f9b98ceb910c27b757775c9..2e60bdf465a98dd77454962ff6cb6cd6c95e2f55 100644
--- a/core/include/dap_config.h
+++ b/core/include/dap_config.h
@@ -3,6 +3,7 @@
 #include <stdbool.h>
 #include <stdint.h>
 #include "uthash.h"
+#include "dap_common.h"
 
 typedef struct dap_config_item dap_config_item_t;
 
@@ -47,6 +48,7 @@ const char** dap_config_get_array_str(dap_config_t *a_config, const char *a_sect
 char **dap_config_get_item_str_path_array(dap_config_t *a_config, const char *a_section, const char *a_item_name, uint16_t *array_length);
 void dap_config_get_item_str_path_array_free(char **paths_array, uint16_t *array_length);
 double dap_config_get_item_double_default(dap_config_t *a_config, const char *a_section, const char *a_item_name, double a_default);
+int dap_config_stream_addrs_parse(dap_config_t *a_cfg, const char *a_config, const char *a_section, dap_stream_node_addr_t **a_addrs, uint16_t *a_addrs_count);
 
 #define dap_config_get_item_bool(a_conf, a_path, a_item) dap_config_get_item_bool_default(a_conf, a_path, a_item, false)
 
diff --git a/core/src/dap_config.c b/core/src/dap_config.c
index a624c78c3245336cd2dafdd9ee37aed7b578530b..08ea8c1ded7ddb80bcabb8b5f2e8b9c3851118c7 100644
--- a/core/src/dap_config.c
+++ b/core/src/dap_config.c
@@ -540,3 +540,21 @@ void dap_config_close(dap_config_t *a_conf) {
 void dap_config_deinit() {
 
 }
+
+int dap_config_stream_addrs_parse(dap_config_t *a_cfg, const char *a_config, const char *a_section, dap_stream_node_addr_t **a_addrs, uint16_t *a_addrs_count)
+{
+    dap_return_val_if_pass(!a_cfg || !a_config || !a_config || !a_section || !a_addrs_count, -1);
+    const char **l_nodes_addrs = dap_config_get_array_str(a_cfg, a_config, a_section, a_addrs_count);
+    if (*a_addrs_count) {
+        log_it(L_DEBUG, "Start parse stream addrs in cofnig %s section %s", a_config, a_section);
+        DAP_NEW_Z_COUNT_RET_VAL(*a_addrs, dap_stream_node_addr_t, *a_addrs_count, -2, NULL);
+        for (uint16_t i = 0; i < *a_addrs_count; ++i) {
+            if (dap_stream_node_addr_from_str(*a_addrs + i, l_nodes_addrs[i])) {
+                log_it(L_ERROR, "Incorrect format of %s address \"%s\", fix net config and restart node", a_section, l_nodes_addrs[i]);
+                return -3;
+            }
+            log_it(L_DEBUG, "Stream addr " NODE_ADDR_FP_STR " parsed successfully", NODE_ADDR_FP_ARGS_S((*a_addrs)[i]));
+        }
+    }
+    return 0;
+}