Cómo calcular la suma de comprobación de TCP

Estoy escribiendo un módulo de kernel que utiliza ganchos de Netfilter para modificar parte de la información del encabezado de TCP y, obviamente, antes de enviar, quiero volver a calcular la suma de comprobación.
También edito el encabezado en el lado de recepción, así que necesito volver a calcularlo allí también.

Al buscar en línea, encontré a algunas personas que dicen que simplemente puedo establecerlo en 0 y que será calculado para mí, aparentemente eso no funcionó.
También he encontrado esta función

tcp_v4_send_check(struct sock *sk, struct sk_buff *skb);

Aunque nadie explicó cómo se usa esto, y si puedo usarlo en la recepción / envío de la misma manera.
Mi propio intento fue establecer la suma de comprobación en 0 y luego llamar a esta función pasando el skb que tengo y el skb-> sk que tengo, aún nada.

Entonces, por favor, ¿cuál es una forma sencilla de calcular la suma de comprobación de los datagramas TCP?

Respuestas a la pregunta(3)

Su respuesta a la pregunta