]> git.ipfire.org Git - thirdparty/knot-dns.git/commitdiff
xdp-tcp: simplify code
authorLibor Peltan <libor.peltan@nic.cz>
Thu, 4 Nov 2021 12:35:28 +0000 (13:35 +0100)
committerDaniel Salzman <daniel.salzman@nic.cz>
Wed, 16 Mar 2022 13:58:06 +0000 (14:58 +0100)
src/libknot/xdp/tcp.c
tests/libknot/test_xdp_tcp.c

index 759d86ab57cbcbebcfe6aa09c6e6ac4f62ac9d97..fafb6b9d96feb9391645315e1f3d36f9bac6c65d 100644 (file)
@@ -147,13 +147,6 @@ static void tcp_table_remove_conn(knot_tcp_conn_t **todel)
        *todel = (*todel)->next; // remove from conn-table linked list
 }
 
-static void tcp_table_del_conn(knot_tcp_conn_t **todel)
-{
-       knot_tcp_conn_t *conn = *todel;
-       tcp_table_remove_conn(todel);
-       del_conn(conn);
-}
-
 static void tcp_table_remove(knot_tcp_conn_t **todel, knot_tcp_table_t *table)
 {
        assert(table->usage > 0);
@@ -162,14 +155,6 @@ static void tcp_table_remove(knot_tcp_conn_t **todel, knot_tcp_table_t *table)
        table->usage--;
 }
 
-static void tcp_table_del(knot_tcp_conn_t **todel, knot_tcp_table_t *table)
-{
-       assert(table->usage > 0);
-       table->inbufs_total -= (*todel)->inbuf.iov_len;
-       tcp_table_del_conn(todel);
-       table->usage--;
-}
-
 static void conn_init_from_msg(knot_tcp_conn_t *conn, knot_xdp_msg_t *msg)
 {
        memcpy(&conn->ip_rem, &msg->ip_from, sizeof(conn->ip_rem));
@@ -339,7 +324,8 @@ int knot_tcp_recv(knot_tcp_relay_t *relays, knot_xdp_msg_t *msgs, uint32_t count
                                        relay->action = XDP_TCP_ESTABLISH;
                                        break;
                                case XDP_TCP_CLOSING2:
-                                       tcp_table_del(pconn, tcp_table);
+                                       tcp_table_remove(pconn, tcp_table);
+                                       del_conn(conn);
                                        relay->conn = NULL;
                                        break;
                                }
@@ -367,7 +353,8 @@ int knot_tcp_recv(knot_tcp_relay_t *relays, knot_xdp_msg_t *msgs, uint32_t count
                case KNOT_XDP_MSG_RST:
                        if (conn != NULL && msg->seqno == conn->seqno) {
                                relay->action = XDP_TCP_RESET;
-                               tcp_table_del(pconn, tcp_table);
+                               tcp_table_remove(pconn, tcp_table);
+                               del_conn(conn);
                                relay->conn = NULL;
                        } else if (conn != NULL) {
                                relay->auto_answer = KNOT_XDP_MSG_ACK;
index 8fbab2df1a5e8ce51cb4aa3a8ef2f17a6f65688d..98611290ea421560c93b3aa3af4bf3ea49401248 100644 (file)
@@ -64,7 +64,8 @@ static void tcp_cleanup(knot_tcp_table_t *tcp_table, uint32_t timeout,
        knot_tcp_conn_t *conn, *next;
        WALK_LIST_DELSAFE(conn, next, *tcp_table_timeout(tcp_table)) {
                if (i++ < at_least || now - conn->last_active >= timeout) {
-                       tcp_table_del(tcp_table_re_lookup(conn, tcp_table), tcp_table);
+                       tcp_table_remove(tcp_table_re_lookup(conn, tcp_table), tcp_table);
+                       del_conn(conn);
                }
        }
 }