*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);
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));
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;
}
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;
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);
}
}
}