在skb中的transport_header中打印值

时间:2012-03-21 05:06:04

标签: c linux-kernel kernel-module

我正在尝试发送ping pkt。通过编写内核模块。当我检查通过tcpdump发送什么时,我看到了somthing但它不是icmp header.so决定检查标题transport_header和network_header(skb的成员)中的什么。我可以使用printk命令来执行它(或任何其他) 。请参阅以下代码

icmp.type = ICMP_ECHO;
icmp.code = 0;
icmp.un.echo.sequence = i++;
icmp.un.echo.id = current->pid & 0xFFFF;

skb->transport_header =skb_push(skb,sizeof(icmp));
memset(skb->transport_header,0,sizeof(struct icmphdr));
memcpy(skb->transport_header,&icmp,sizeof(struct icmphdr));

1 个答案:

答案 0 :(得分:1)

这将是非常丑陋,但可读:

unsigned int *p = skb->transport_header;
for (i=0;i<sizeof(the header you want)/sizeof(int);i++) {
    printk("%08x", ntohl(p_i[i]));
}
printk("\n");