Sto scrivendo un modulo del kernel che utilizza gli hook di Netfilter per modificare alcune informazioni dell'intestazione TCP e ovviamente, prima dell'invio, voglio ricalcolare il checksum.
Inoltre, modifica l'intestazione dal lato ricevente, quindi devo ricalcolarlo anche lì.Come calcolare il checksum TCP
Ricerca in linea, ho trovato alcune persone che dicono che posso semplicemente impostarlo su 0 e verrà calcolato per me, a quanto pare non ha funzionato.
ho trovato anche questa funzione
tcp_v4_send_check(struct sock *sk, struct sk_buff *skb);
Anche se nessuno ha spiegato come questo viene utilizzato, e se mi può effettivamente usarlo al di ricezione/invio allo stesso modo.
Il mio tentativo era di impostare il checksum a 0, quindi chiamare questa funzione passando lo skb che ho e il skb-> sk che ho, ancora nulla.
Quindi, per favore, qual è un modo semplice per calcolare il checksum dei datagrammi TCP?
Che cosa hai impostato a 0 e dove ti aspettavi di trovare la somma di controllo? Guardando il codice, dovresti impostare tcp_hdr (skb) -> check a 0, quindi chiamare la funzione e successivamente il nuovo checksum dovrebbe essere lì. – BjoernD
e questo è esattamente quello che ho fatto, ma tutte le connessioni TCP semplicemente non ha funzionato quando ho caricato il modulo. – Fingolfin
Probabilmente dovresti aggiungere il tag 'C' alla domanda. Btw, date un'occhiata a http://www.winpcap.org/pipermail/winpcap-users/2007-July/001984.html – Jite