Как рассчитать контрольную сумму TCP

Я пишу модуль ядра, который использует ловушки Netfilter для изменения некоторой информации заголовка TCP, и, очевидно, перед отправкой я хочу повторно -вычислить контрольную сумму.
Я также редактирую заголовок на принимающей стороне, поэтому мне нужно повторно -вычислить его и там.

Поискав в Интернете, я нашел некоторых людей, говорящих, что я могу просто установить его на 0, и он будет рассчитан для меня, по-видимому, это не сработало.
Я также нашел эту функцию

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

Хотя никто не объяснил, как это используется, и могу ли я на самом деле использовать это при получении/отправке таким же образом.
Моя собственная попытка состояла в том, чтобы установить контрольную сумму на 0, а затем вызвать эту функцию, передав skb, который у меня есть, и skb -> sk, который у меня есть, но все равно ничего.

Итак, пожалуйста, какой простой способ вычислить контрольную сумму дейтаграмм TCP?

7
задан Fingolfin 10 July 2012 в 10:31
поделиться