about summary refs log tree commit diff
path: root/src/config/defaults.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/config/defaults.c')
-rw-r--r--src/config/defaults.c33
1 files changed, 22 insertions, 11 deletions
diff --git a/src/config/defaults.c b/src/config/defaults.c
index d4ff2a8..9fef25b 100644
--- a/src/config/defaults.c
+++ b/src/config/defaults.c
@@ -1,6 +1,6 @@
 /* ISC license. */
 
-#include <stddef.h>
+#include <stdint.h>
 
 #include "shibari-cache-config-internal.h"
 
@@ -8,19 +8,19 @@ struct defaults_s
 {
   char const *key ;
   char const *value ;
-  size_t vlen ;
+  uint32_t vlen ;
 } ;
 
 #define REC(k, v, n) { .key = (k), .value = (v), .vlen = (n) }
-#define RECS(k, v) REC(k, v, sizeof(v))
+#define RECS(k, v) REC(k, (v), sizeof(v))
 #define RECU32(k, u) { .key = (k), .value = (char const [4]){ (u) >> 24 & 0xffu, (u) >> 16 & 0xffu, (u) >> 8 & 0xffu, (u) & 0xffu }, .vlen = 4 }
 
 static struct defaults_s const defaults[] =
 {
   RECU32("G:logv", 1),
   RECU32("G:maxtcp", 256),
-  REC("G:listen4", "\0\0\0\0\0\35", 6),
-  REC("G:listen6", "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\35", 18),
+  REC("G:listen4", "\177\0\0\1", 4),
+  REC("G:listen6", "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1", 16),
 
   REC("R4:",
    "\0\306\51\0\4"
@@ -58,14 +58,25 @@ static struct defaults_s const defaults[] =
 
 void conf_defaults (void)
 {
-  for (struct defaults_s const *p = defaults ; p->key ; p++)
   {
-    if (!conftree_search(p->key))
+    size_t n = genalloc_len(node, &conf.list) ;
+    for (size_t i = 0 ; i < n ; i++)
+      if (conf.storage.s[genalloc_s(node, &conf.list)[i].key.left] == 'A') goto cont ;
+  }
+
+  {
+    node *nod = repo_searchs(&conf, "G:listen4") ;
+    if (!nod) nod = repo_searchs(&conf, "G:listen6") ;
+    if (!nod)
     {
-      node node ;
-      confnode_start(&node, p->key, 0, 0) ;
-      confnode_add(&node, p->value, p->vlen) ;
-      conftree_add(&node) ;
+      repo_add_new(&conf, "A4:\b\177\0\0\1", 8, "", 0, 0, 0) ;
+      repo_add_new(&conf, "A6:\200\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1", 20, "", 0, 0, 0) ;
     }
+    else strerr_warnw1x("listen directives without accept directives") ;
   }
+
+ cont:
+  for (struct defaults_s const *p = defaults ; p->key ; p++)
+    if (!repo_searchs(&conf, p->key))
+      repo_adds_new(&conf, p->key, p->value, p->vlen, 0, 0) ;
 }