]> git.ipfire.org Git - thirdparty/knot-dns.git/commitdiff
xdp-quic: hide ngtcp2 structure from libknot headers
authorLibor Peltan <libor.peltan@nic.cz>
Tue, 28 Jun 2022 12:34:26 +0000 (14:34 +0200)
committerDaniel Salzman <daniel.salzman@nic.cz>
Sun, 24 Jul 2022 17:34:26 +0000 (19:34 +0200)
src/libknot/xdp/quic.c
src/libknot/xdp/quic_conn.h

index 3a7d8e86b672896fbc5224005137a2e2181f7ab7..ea5334e693fda25fc1a2cb1f90b9bb0b699a5c57 100644 (file)
@@ -255,11 +255,12 @@ static int tls_init_conn_session(knot_xquic_conn_t *conn, bool server)
 
        gnutls_record_set_max_early_data_size(conn->tls_session, 0xffffffffu);
 
-       conn->conn_ref = (ngtcp2_crypto_conn_ref) {
+       conn->conn_ref = (nc_conn_ref_placeholder_t) {
                .get_conn = get_conn,
                .user_data = conn
        };
 
+       _Static_assert(sizeof(nc_conn_ref_placeholder_t) == sizeof(ngtcp2_crypto_conn_ref), "invalid placeholder for conn_ref");
        gnutls_session_set_ptr(conn->tls_session, &conn->conn_ref);
 
        if (server) {
index ccb9578c3f634faa4419f84e07aece34fcfac23c..54f5cc781c7e58bf5f2f3f08cd3188a96499cc93 100644 (file)
@@ -21,8 +21,6 @@
 #include <stdint.h>
 #include <sys/uio.h>
 
-#include <ngtcp2/ngtcp2_crypto.h> // TODO private structure?
-
 #define MAX_STREAMS_PER_CONN 10
 
 struct ngtcp2_cid; // declaration taken from wherever in ngtcp2
@@ -36,6 +34,11 @@ typedef struct knot_xquic_ucw_list {
        knot_xquic_ucw_node_t head, tail;
 } knot_xquic_ucw_list_t;
 
+typedef struct {
+       void *get_conn;
+       void *user_data;
+} nc_conn_ref_placeholder_t;
+
 typedef struct {
        knot_xquic_ucw_node_t node;
        size_t len;
@@ -56,7 +59,7 @@ typedef struct {
 typedef struct knot_xquic_conn {
        knot_xquic_ucw_node_t timeout; // MUST be first field of the struct
 
-       ngtcp2_crypto_conn_ref conn_ref; // TODO private structure?
+       nc_conn_ref_placeholder_t conn_ref; // placeholder for internal struct ngtcp2_crypto_conn_ref
 
        struct ngtcp2_conn *conn;