summaryrefslogtreecommitdiff
path: root/src/cache/shibari-cache-internal.h
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/cache/shibari-cache-internal.h
parent8c9b0194063411882d3bbcec80d5e5c861d37544 (diff)
downloadshibari-fc85d676b5ca3de92264dfcb41c98d7c9b0d1398.tar.xz
More shibari-cache stuff
Signed-off-by: Laurent Bercot <ska@appnovation.com>
Diffstat (limited to 'src/cache/shibari-cache-internal.h')
-rw-r--r--src/cache/shibari-cache-internal.h75
1 files changed, 44 insertions, 31 deletions
diff --git a/src/cache/shibari-cache-internal.h b/src/cache/shibari-cache-internal.h
index 606d245..4f6476d 100644
--- a/src/cache/shibari-cache-internal.h
+++ b/src/cache/shibari-cache-internal.h
@@ -3,6 +3,7 @@
#ifndef SHIBARI_CACHE_INTERNAL_H
#define SHIBARI_CACHE_INTERNAL_H
+#include <stddef.h>
#include <stdint.h>
#include <skalibs/uint64.h>
@@ -24,15 +25,47 @@ extern void cache_dump (void) ;
extern void cache_load (void) ;
+ /* clientaccess */
+
+extern int clientaccess_ip4 (char const *) ;
+#if SKALIBS_IPV6_ENABLED
+extern int clientaccess_ip6 (char const *) ;
+#endif
+
/* conf */
extern int conf_getb (cdb const *, char const *, size_t, cdb_data *) ;
extern int conf_get (cdb const *, char const *, cdb_data *) ;
+extern int conf_get_uint16 (cdb const *, char const *, uint16_t *) ;
extern int conf_get_uint32 (cdb const *, char const *, uint32_t *) ;
extern int conf_get_uint64 (cdb const *, char const *, uint64_t *) ;
extern char const *conf_get_string (cdb const *, char const *) ;
+ /* query */
+
+typedef struct query_s query, *query_ref ;
+struct query_s
+{
+ s6dns_engine_t dt ;
+ uint16_t prev ;
+ uint16_t next ;
+ uint16_t xindex ;
+ uint16_t source ;
+ uint16_t i ;
+ uint16_t port ;
+ char ip[SKALIBS_IP_SIZE] ;
+} ;
+#define QUERY_ZERO { .dt = S6DNS_ENGINE_ZERO, .prev = 0, .next = 0, .xindex = UINT16_MAX, .source = 0, .i = 0, .port = 0, .ip = { 0 } }
+#define nq (genset_n(&g->queries) - 1)
+#define QUERY(i) genset_p(query, &g->queries, (i))
+#define qstart (QUERY(g->qsentinel)->next)
+
+extern void query_fail (query *) ;
+extern void query_success (query *) ;
+extern void query_new (uint8_t, uint16_t, char const *, uint16_t, char const *, uint16_t) ;
+
+
/* tcpconnection */
typedef struct tcpconnection_s tcpconnection, *tcpconnection_ref ;
@@ -43,9 +76,9 @@ struct tcpconnection_s
uint32_t instate ;
tain rdeadline ;
tain wdeadline ;
- uint32_t prev ;
- uint32_t next ;
- uint32_t xindex ;
+ uint16_t prev ;
+ uint16_t next ;
+ uint16_t xindex ;
} ;
#define TCPCONNECTION_ZERO { .out = BUFALLOC_ZERO, .in = STRALLOC_ZERO, .instate = 0, .rdeadline = TAIN_INFINITE, .wdeadline = TAIN_INFINITE, .prev = 0, .next = 0. .xindex = UINT32_MAX }
#define ntcp (genset_n(&g->tcpconnections) - 1)
@@ -53,6 +86,7 @@ struct tcpconnection_s
#define tcpstart (TCPCONNECTION(g->tcpsentinel)->next)
extern void tcpconnection_drop (tcpconnection *) ;
+extern int tcpconnection_new (uint8_t, uint16_t, int, char const *, uint16_t) ;
/* udpqueue */
@@ -66,6 +100,7 @@ struct udp4msg_s
} ;
#define UDP4MSG_ZERO { .ip = { 0 }, .port = 0, .len = 0 }
+#ifdef SKALIBS_IPV6_ENABLED
typedef struct udp6msg_s udp6msg, *udp6msg_ref ;
struct udp4msg_s
{
@@ -74,6 +109,7 @@ struct udp4msg_s
uint16_t len ;
} ;
#define UDP6MSG_ZERO { .ip = { 0 }, .port = 0, .len = 0 }
+#endif
typedef struct udpqueue_s udpqueue, *udpqueue_ref ;
struct udpqueue_s
@@ -82,7 +118,7 @@ struct udpqueue_s
stralloc storage ;
genalloc messages ; /* udp[46]msg */
tain deadline ;
- uint32_t xindex ;
+ uint16_t xindex ;
} ;
#define UDPQUEUE_ZERO { .fd = -1, .storage = STRALLOC_ZERO, .messages = GENALLOC_ZERO, .deadline = TAIN_INFINITE, .xindex = UINT32_MAX }
@@ -97,29 +133,6 @@ extern int udpqueue_flush6 (udpqueue *) ;
#endif
- /* query */
-
-typedef struct query_s query, *query_ref ;
-struct query_s
-{
- s6dns_engine_t dt ;
- uint32_t origin ;
- uint32_t prev ;
- uint32_t next ;
- uint32_t xindex ;
- char ip[16] ;
- uint16_t port ;
-} ;
-#define QUERY_ZERO { .dt = S6DNS_ENGINE_ZERO, .origin = 0, .prev = 0, .next = 0, .xindex = UINT32_MAX, .ip = { 0 }, .port = 0 }
-#define nq (genset_n(&g->queries) - 1)
-#define QUERY(i) genset_p(query, &g->queries, (i))
-#define qstart (QUERY(g->qsentinel)->next)
-
-extern void query_fail (query *) ;
-extern void query_success (query *) ;
-extern void query_new (uint32_t, char const *, uint8_t, uint16_t, char const *, uint16_t) ;
-
-
/* main */
typedef struct global_s global, *global_ref ;
@@ -127,13 +140,13 @@ struct global_s
{
cdb confdb ;
char const *dumpfile ;
- uint32_t verbosity ;
+ uint16_t verbosity ;
tain rtto ;
tain wtto ;
genset tcpconnections ; /* tcpconnection */
- uint32_t tcpsentinel ;
genset queries ; /* query */
- uint32_t qsentinel ;
+ uint16_t tcpsentinel ;
+ uint16_t qsentinel ;
} ;
#define GLOBAL_ZERO { \
.confdb = CDB_ZERO, \
@@ -142,8 +155,8 @@ struct global_s
.rtto = TAIN_INFINITE, \
.wtto = TAIN_INFINITE, \
.tcpconnections = GENSET_ZERO, \
- .tcpsentinel = 0, \
.queries = GENSET_ZERO, \
+ .tcpsentinel = 0, \
.qsentinel = 0, \
}