Я работаю над алгоритмом управления перегрузкой TCP для ядра Linux, который я понимаю как модуль ядра.В коде я хочу получить доступ к заголовку tcp и использовать следующую функцию для этого:
void get_hdr(struct sock *sk){
struct sk_buff *skb;
skb = skb_peek_tail(&sk->sk_receive_queue);
if (skb != NULL)
printk(KERN_INFO "skb address: %p", skb);
struct tcphdr *tcp_header = tcp_hdr(skb);
if(tcp_header != 0)
printk(KERN_INFO "tcp_header address: %p", tcp_header);
else
printk(KERN_INFO "tcp_header is NULL");
}
Я думаю, что это должно в основном работать, так как это делается здесь, внутри ядра а также.
Hower, глядя на мой kern.log, я вижу, что:
skb address: dbd94501
tcp_header address is NULL
Видимо, вызов tcp_hdr (skb) не удается.
Я понятия не имею, почему это должно быть.У кого-нибудь есть вдохновляющий совет, куда мне обратиться или что я должен изменить, чтобы вернуть заголовок tcp?
Приветствия,
Стефан