HTTP ペイロードを観察しようとしていますが、TCP ヘッダー以外には何もないようです。
コードスニペット:
struct tcphdr *tcph = data + eth_offset + sizeof(*iph);
if (tcph + 1 > data_end) {
return XDP_PASS;
}
tcp_header_length = tcph->doff << 2;
unsigned char *payload = (unsigned char *)tcph + tcp_header_length;
if ((void *)payload + 1 > data_end) {
return XDP_DROP; <-- is always true
}
何らかの理由でデータがないように見えますが、これは真実ではありません。インターフェイスからコードを切り離し、HTTP リクエストを送信しても問題ありません (http データを含む)
どんなヒントでも大歓迎です。
ありがとう!