私はnetfilter hooks
でアプリケーションを書く。なぜskb_transport_headerが正しく計算されないのですか?
それはskb_transport_header
関数は(時には常にではない)を正しく計算しないようです。
struct tcphdr* tcp_header = NULL;
tcp_header = (struct tcphdr*)skb_transport_header(skb); // somtimes incorrect address.
tcp_header = (struct tcphdr*)((char*)ip_header + (ip_header->ihl * 4));// always correct address.
どこが間違っているのですか?
どのようなフックを使用しますか?操作の前にTCPタイプを確認できますか? –
@IlyaMatveychikov:はい、私はTCPプロトコルをチェックします。 –
私は、そのメソッドが異なる結果をもたらす場合にパケット解析を実行することによって問題を明確にすることを提案します。つまり、 '(struct tcphdr *)skb_transport_header(skb)'!= '(構造体tcphdr *)((char *)ip_header +(ip_header-> ihl * 4))' –