From fc85d676b5ca3de92264dfcb41c98d7c9b0d1398 Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Thu, 25 Jul 2024 00:20:30 +0000 Subject: More shibari-cache stuff Signed-off-by: Laurent Bercot --- src/config/defaults.c | 11 ++++++----- src/config/lexparse.c | 16 +++++++++++++--- 2 files changed, 19 insertions(+), 8 deletions(-) (limited to 'src/config') 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") ; -- cgit v1.3.1