如何在Linux内核源代码中使用IP地址或MAC地址进行打印

时间:2014-05-10 18:41:58

标签: linux kernel tcp-ip

我必须通过修改Linux内核源代码来稍微改变TCP拥塞控制算法。但要检查resutl是否正确,我需要记录MAC或IP地址的信息。

我使用PRINTK函数为内核打印消息。但我觉得很难打印出主机的MAC / IP地址。

  

printk(“%pM \ n”,mac)

但是mac指的是什么? 在TCP源代码中,我经常使用skbuff或sock结构。

谢谢。

更新:

struct iphdr *iph = ip_hdr(skb);
printk(KERN_DEBUG "%pI4", iph->saddr);

2 个答案:

答案 0 :(得分:1)

Linux记录文件captureOutput(_ output: _AVCaptureOutput!, didOutputMetadataObjects: [Any]!, from connection: AVCaptureConnection!) 中的printk格式说明符扩展,作为内核源代码的一部分。对于你的例子,

Documentation/printk-formats.txt

传递的参数是指向要打印的IP地址的指针(skbuff,套接字结构等)。

答案 1 :(得分:0)

你正在寻找这样的东西吗? 来自arch / xtensa / platforms / iss / network.c:

printk("(%pM) ", lp->mac);

我发现它使用此命令

grep -R "mac)" * | grep printk

如果您可以告诉我们您当前正在处理哪个文件/行,可能会更容易提供帮助。