diff options
author | Laurent Bercot <ska-skaware@skarnet.org> | 2024-07-25 00:20:30 +0000 |
---|---|---|
committer | Laurent Bercot <ska@appnovation.com> | 2024-07-25 00:20:30 +0000 |
commit | fc85d676b5ca3de92264dfcb41c98d7c9b0d1398 (patch) | |
tree | c9e77e23b9b2b35760f18ce8a7c36ab921b9905d /src/cache/shibari-cache-internal.h | |
parent | 8c9b0194063411882d3bbcec80d5e5c861d37544 (diff) | |
download | shibari-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.h | 75 |
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, \ } |