aboutsummaryrefslogtreecommitdiffstats
path: root/src/config
diff options
context:
space:
mode:
authorLaurent Bercot <ska-skaware@skarnet.org>2024-07-25 00:20:30 +0000
committerLaurent Bercot <ska@appnovation.com>2024-07-25 00:20:30 +0000
commitfc85d676b5ca3de92264dfcb41c98d7c9b0d1398 (patch)
treec9e77e23b9b2b35760f18ce8a7c36ab921b9905d /src/config
parent8c9b0194063411882d3bbcec80d5e5c861d37544 (diff)
downloadshibari-fc85d676b5ca3de92264dfcb41c98d7c9b0d1398.tar.gz
More shibari-cache stuff
Signed-off-by: Laurent Bercot <ska@appnovation.com>
Diffstat (limited to 'src/config')
-rw-r--r--src/config/defaults.c11
-rw-r--r--src/config/lexparse.c16
2 files changed, 19 insertions, 8 deletions
diff --git a/src/config/defaults.c b/src/config/defaults.c
index 9222aa4..9a30c98 100644
--- a/src/config/defaults.c
+++ b/src/config/defaults.c
@@ -13,19 +13,20 @@ struct defaults_s
#define REC(k, v, n) { .key = (k), .value = (v), .vlen = (n) }
#define RECS(k, v) REC(k, (v), sizeof(v))
+#define RECU16(k, u) { .key = (k), .value = (char const [2]){ (u) >> 8 & 0xffu, (u) & 0xffu }, .vlen = 2 }
#define RECU32(k, u) { .key = (k), .value = (char const [4]){ (u) >> 24 & 0xffu, (u) >> 16 & 0xffu, (u) >> 8 & 0xffu, (u) & 0xffu }, .vlen = 4 }
#define RECU64(k, u) { .key = (k), .value = (char const [8]){ (u) >> 56 & 0xffu, (u) >> 48 & 0xffu, (u) >> 40 & 0xffu, (u) >> 32 & 0xffu, (u) >> 24 & 0xffu, (u) >> 16 & 0xffu, (u) >> 8 & 0xffu, (u) & 0xffu }, .vlen = 8 }
static struct defaults_s const defaults[] =
{
- RECU32("G:logv", 1),
- 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),
- RECU32("G:maxtcp", 256),
- RECU32("G:maxqueries", 1024),
+ RECU16("G:logv", 1),
RECU64("G:cachesize", 1048576),
+ RECU16("G:maxtcp", 64),
+ RECU16("G:maxqueries", 256),
RECU32("G:rtimeout", 0),
RECU32("G:wtimeout", 0),
+ 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"
diff --git a/src/config/lexparse.c b/src/config/lexparse.c
index 093acf7..7884fee 100644
--- a/src/config/lexparse.c
+++ b/src/config/lexparse.c
@@ -106,6 +106,16 @@ static int ipcmp (void const *a, void const *b, size_t n)
}
+static void parse_u16 (char const *s, size_t const *word, size_t n, char const *ifile, uint32_t line, char const *directive, char const *key)
+{
+ uint16_t u ;
+ char pack[2] ;
+ if (n != 1) dieparse(ifile, line, directive, n ? "too many arguments" : "too few arguments", 0, 0, 0) ;
+ if (!uint160_scan(s + word[0], &u)) dieparse(ifile, line, directive, "argument must be an integer", 0, 0, 0) ;
+ uint16_pack_big(pack, u) ;
+ adds_unique(ifile, line, directive, key, pack, 2) ;
+}
+
static void parse_u32 (char const *s, size_t const *word, size_t n, char const *ifile, uint32_t line, char const *directive, char const *key)
{
uint32_t u ;
@@ -225,16 +235,16 @@ static inline void process_line (char const *s, size_t const *word, size_t n, ch
switch (directive->value)
{
case T_VERBOSITY :
- parse_u32(s, word, n, ifile, line, "verbosity", "G:logv") ;
+ parse_u16(s, word, n, ifile, line, "verbosity", "G:logv") ;
break ;
case T_CACHESIZE :
parse_u64(s, word, n, ifile, line, "cache_size", "G:cachesize") ;
break ;
case T_MAXTCP :
- parse_u32(s, word, n, ifile, line, "maxtcp", "G:maxtcp") ;
+ parse_u16(s, word, n, ifile, line, "maxtcp", "G:maxtcp") ;
break ;
case T_MAXQUERIES :
- parse_u32(s, word, n, ifile, line, "maxqueries", "G:maxqueries") ;
+ parse_u16(s, word, n, ifile, line, "maxqueries", "G:maxqueries") ;
break ;
case T_RTIMEOUT :
parse_u32(s, word, n, ifile, line, "read_timeout", "G:rtimeout") ;