Estoy escribiendo un módulo del kernel que utiliza ganchos netfilter para modificar algunas de la información del encabezado 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 tengo que volver a calcularlo allí también.Cómo calcular la suma de comprobación TCP
La búsqueda en línea, me encontré con algunas personas diciendo que puedo simplemente ponerlo a 0 y va a ser calculado para mí, al parecer, que no funcionó.
También he encontrado esta función
tcp_v4_send_check(struct sock *sk, struct sk_buff *skb);
Aunque nadie ha explicado cómo se usa, y si yo en realidad se puede utilizar en la recepción/envío de la misma manera.
Mi propio intento fue establecer checksum en 0 y luego llamar a esta función pasando el skb que tengo y el skb-> sk que tengo, todavía nada.
Entonces, ¿cuál es una forma sencilla de calcular la suma de comprobación de los datagramas TCP?
¿Qué es exactamente lo que pone a 0 y dónde se puede esperar encontrar la suma de comprobación? Al mirar el código, debe establecer tcp_hdr (skb) -> check en 0, luego llamar a la función y, posteriormente, la nueva suma de comprobación debe estar allí. – BjoernD
y eso es exactamente lo que hice, pero todas las conexiones TCP simplemente no funcionaron cuando cargué el módulo. – Fingolfin
Probablemente deberías agregar la etiqueta 'C' a la pregunta. Por cierto, eche un vistazo a http://www.winpcap.org/pipermail/winpcap-users/2007-July/001984.html – Jite