How to calculate the TCP checksum
I am writing a kernel module that actually modifies the TCP header(both at sending and receiving) and I need to re-calculate the header because of that. I am capturing the packets using netfilter, so I have access to the whole SKB, I am using Linux 2.6.35-22 Looking into the source code of the TCP/IP, I found this function void tcp_v4_send_check(struct sock *sk, struct sk_buff *skb); The comment above it says this routing computes the IPv4 TCP checksum Trying to use this function, I called it passing to it skb->sk and skb With no success so far. So my question is, how do I correctly calculate the TCP checksum? I know there's a psudoheader that must be created, and added to the calculation but there must be a function in the kernel I can call that already does that. Thanks in advance, Adel
On Tue, Jul 10, 2012 at 11:42 AM, Adel Kodmani <mpcadel@gmail.com> wrote:
I am writing a kernel module that actually modifies the TCP header(both at sending and receiving) and I need to re-calculate the header because of that. I am capturing the packets using netfilter, so I have access to the whole SKB, I am using Linux 2.6.35-22
Looking into the source code of the TCP/IP, I found this function void tcp_v4_send_check(struct sock *sk, struct sk_buff *skb); The comment above it says this routing computes the IPv4 TCP checksum
Trying to use this function, I called it passing to it skb->sk and skb With no success so far.
So my question is, how do I correctly calculate the TCP checksum? I know there's a psudoheader that must be created, and added to the calculation but there must be a function in the kernel I can call that already does that.
Thanks in advance, Adel
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
I think this may be helpful to you http://www.thegeekstuff.com/2012/05/ip-header-checksum/
On Mon, Jul 16, 2012 at 1:30 PM, पारस <beparas@gmail.com> wrote:
On Tue, Jul 10, 2012 at 11:42 AM, Adel Kodmani <mpcadel@gmail.com> wrote:
I am writing a kernel module that actually modifies the TCP header(both at sending and receiving) and I need to re-calculate the header because of that. I am capturing the packets using netfilter, so I have access to the whole SKB, I am using Linux 2.6.35-22
Looking into the source code of the TCP/IP, I found this function void tcp_v4_send_check(struct sock *sk, struct sk_buff *skb); The comment above it says this routing computes the IPv4 TCP checksum
Trying to use this function, I called it passing to it skb->sk and skb With no success so far.
So my question is, how do I correctly calculate the TCP checksum? I know there's a psudoheader that must be created, and added to the calculation but there must be a function in the kernel I can call that already does that.
Thanks in advance, Adel
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
I think this may be helpful to you http://www.thegeekstuff.com/2012/05/ip-header-checksum/
Nope, what I need to calculate is the TCP checksum, not the IP checksum
http://lxr.oss.org.cn/source/lib/checksum.c 2012/7/16 Adel Kodmani <mpcadel@gmail.com>:
On Mon, Jul 16, 2012 at 1:30 PM, पारस <beparas@gmail.com> wrote:
On Tue, Jul 10, 2012 at 11:42 AM, Adel Kodmani <mpcadel@gmail.com> wrote:
I am writing a kernel module that actually modifies the TCP header(both at sending and receiving) and I need to re-calculate the header because of that. I am capturing the packets using netfilter, so I have access to the whole SKB, I am using Linux 2.6.35-22
Looking into the source code of the TCP/IP, I found this function void tcp_v4_send_check(struct sock *sk, struct sk_buff *skb); The comment above it says this routing computes the IPv4 TCP checksum
Trying to use this function, I called it passing to it skb->sk and skb With no success so far.
So my question is, how do I correctly calculate the TCP checksum? I know there's a psudoheader that must be created, and added to the calculation but there must be a function in the kernel I can call that already does that.
Thanks in advance, Adel
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
I think this may be helpful to you http://www.thegeekstuff.com/2012/05/ip-header-checksum/
Nope, what I need to calculate is the TCP checksum, not the IP checksum
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
-- Best Regards Lin
participants (3)
-
Adel Kodmani -
Pei Lin -
पारस