]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
daemon/lua: bind `the_network` into lua
authorVladimír Čunát <vladimir.cunat@nic.cz>
Mon, 10 Jun 2024 13:52:42 +0000 (15:52 +0200)
committerVladimír Čunát <vladimir.cunat@nic.cz>
Mon, 22 Jul 2024 15:57:47 +0000 (17:57 +0200)
Because why not.  It's easy and it might become useful one day.

> (require 'ffi').C.the_network.tcp.user_timeout
1000

daemon/lua/kres-gen-33.lua
daemon/lua/kres-gen.sh

index 77e69f2c5e6ba433a2818579adcce0f71a3d6b3d..6be16bc4ae70d6e2f57df16a80b3ab29ef0ece79 100644 (file)
@@ -509,6 +509,7 @@ int kr_rule_zonefile(const struct kr_rule_zonefile_config *);
 int kr_rule_forward(const knot_dname_t *, kr_rule_fwd_flags_t, const struct sockaddr **);
 int kr_rule_local_address(const char *, const char *, _Bool, uint32_t, kr_rule_tags_t);
 int kr_rule_local_hosts(const char *, _Bool, uint32_t, kr_rule_tags_t);
+struct tls_credentials;
 typedef struct {
        int sock_type;
        _Bool tls;
@@ -559,6 +560,36 @@ typedef struct {
        zi_callback cb;
        void *cb_param;
 } zi_config_t;
+typedef struct uv_loop_s uv_loop_t;
+typedef struct trie tls_client_params_t;
+struct net_tcp_param {
+       uint64_t in_idle_timeout;
+       uint64_t tls_handshake_timeout;
+       unsigned int user_timeout;
+};
+struct network {
+       uv_loop_t *loop;
+       trie_t *endpoints;
+       trie_t *endpoint_kinds;
+       _Bool missing_kind_is_error : 1;
+       _Bool proxy_all4 : 1;
+       _Bool proxy_all6 : 1;
+       trie_t *proxy_addrs4;
+       trie_t *proxy_addrs6;
+       struct tls_credentials *tls_credentials;
+       tls_client_params_t *tls_client_params;
+       struct tls_session_ticket_ctx *tls_session_ticket_ctx;
+       struct net_tcp_param tcp;
+       int tcp_backlog;
+       struct {
+               int snd;
+               int rcv;
+       } listen_udp_buflens;
+       struct {
+               int snd;
+               int rcv;
+       } listen_tcp_buflens;
+};
 struct args *the_args;
 struct endpoint {
        void *handle;
@@ -591,6 +622,7 @@ struct worker_ctx {
 struct kr_context *the_resolver;
 struct worker_ctx *the_worker;
 struct engine *the_engine;
+struct network *the_network;
 typedef struct {
        uint8_t *params_position;
        uint8_t *mandatory_position;
index 8554a7837145e6ea73023a5ea913e06f41b1ae6d..d335c0ec3016b664ebd2b2486376876aab93e616 100755 (executable)
@@ -312,6 +312,7 @@ EOF
 
 
 ## kresd itself: worker stuff
+echo "struct tls_credentials;"
 
 ${CDEFS} ${KRESD} types <<-EOF
        endpoint_flags_t
@@ -322,6 +323,11 @@ ${CDEFS} ${KRESD} types <<-EOF
        config_array_t
        struct args
        zi_config_t
+       # struct network - and all requirements that are missing so far
+       typedef uv_loop_t
+       typedef tls_client_params_t
+       struct net_tcp_param
+       struct network
 EOF
 echo "struct args *the_args;"
 
@@ -349,6 +355,7 @@ printf "\tchar _stub[];\n};\n"
 echo "struct kr_context *the_resolver;"
 echo "struct worker_ctx *the_worker;"
 echo "struct engine *the_engine;"
+echo "struct network *the_network;"
 
 
 ## libzscanner API for ./zonefile.lua