diff --git a/common/config/config_userapi.c b/common/config/config_userapi.c
index 57a680044b1c772382f1d6a5fec30bda4e6a3e10..57b312494af8e0607e5001d1564d4225c2eccca8 100644
--- a/common/config/config_userapi.c
+++ b/common/config/config_userapi.c
@@ -29,6 +29,9 @@
  * \note
  * \warning
  */
+
+#define _GNU_SOURCE
+
 #include <string.h>
 #include <stdlib.h>
 #include <stdio.h>
@@ -210,6 +213,34 @@ configmodule_interface_t *cfgif = config_get_if();
 return ret;
 }
 
+int config_getlist(paramlist_def_t *ParamList, paramdef_t *params, int numparams, char *prefix)
+{
+  if (CONFIG_ISFLAGSET(CONFIG_ABORT)) {
+    fprintf(stderr,"[CONFIG] config_get skipped, config module not properly initialized\n");
+    return -1;
+  }
+  if (!config_get_if())
+    return -1;
+
+  const int ret = config_get_if()->getlist(ParamList, params, numparams, prefix);
+  if (ret >= 0 && params) {
+    char *newprefix;
+    if (prefix)
+      asprintf(&newprefix, "%s.%s", prefix, ParamList->listname);
+    else
+      newprefix = ParamList->listname;
+    char cfgpath[MAX_OPTNAME_SIZE*2 + 6]; /* prefix.listname.[listindex] */
+    for (int i = 0; i < ParamList->numelt; ++i) {
+      // TODO config_process_cmdline?
+      sprintf(cfgpath, "%s.[%i]", newprefix, i);
+      config_execcheck(ParamList->paramarray[i], numparams, cfgpath);
+    }
+    if (prefix)
+      free(newprefix);
+  }
+  return ret;
+}
+
 int config_isparamset(paramdef_t *params,int paramidx)
 {
   if ((params[paramidx].paramflags & PARAMFLAG_PARAMSET) != 0) {
diff --git a/common/config/config_userapi.h b/common/config/config_userapi.h
index 25306b8778d844f70db17826d14e26fccc72b35d..2b40f8401be2466cda9adfbbb3725910b83fd828 100644
--- a/common/config/config_userapi.h
+++ b/common/config/config_userapi.h
@@ -57,7 +57,7 @@ extern int config_assign_ipv4addr(paramdef_t *cfgoptions, char *ipv4addr);
 
 /* apis to get parameters, to be used by oai modules, at configuration time */
 extern int config_get(paramdef_t *params,int numparams, char *prefix);
-#define config_getlist config_get_if()->getlist
+extern int config_getlist(paramlist_def_t *ParamList, paramdef_t *params, int numparams, char *prefix);
 
 /* apis to retrieve parameters info after calling get or getlist functions */
 extern int config_isparamset(paramdef_t *params,int paramidx);