Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在skb中打印transport_标头中的值_C_Linux Kernel_Kernel Module - Fatal编程技术网

C 在skb中打印transport_标头中的值

C 在skb中打印transport_标头中的值,c,linux-kernel,kernel-module,C,Linux Kernel,Kernel Module,我正在尝试发送ping pkt。通过编写内核模块。当我检查通过tcpdump发送的内容时,我看到了一些东西,但它不是icmp标头。因此,我决定检查标头transport_标头和network_标头(skb的成员)中的内容。我如何使用printk命令来执行此操作(或任何其他操作)。请查看以下代码 icmp.type = ICMP_ECHO; icmp.code = 0; icmp.un.echo.sequence = i++; icmp.un.echo.id = current->pid &

我正在尝试发送ping pkt。通过编写内核模块。当我检查通过tcpdump发送的内容时,我看到了一些东西,但它不是icmp标头。因此,我决定检查标头transport_标头和network_标头(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));

这会很难看,但可读性很强:

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");
unsigned int*p=skb->transport\u头;
对于(i=0;i