在内核空间中将__be32 ip地址更改为char的方法

时间:2012-03-30 11:47:31

标签: c linux-kernel kernel-module

我正在创建一个模块,我需要将__be 32格式的地址更改为char,我可以使用哪个函数以及它来自哪个头文件(我知道将char转换为__be32,我们使用in_aton)。

2 个答案:

答案 0 :(得分:1)

对于早于2.6.26的内核(如果没有记错),您需要使用NIPQUAD宏,例如:

pritk("%d.%d.%d.%d\n", NIPQUAD(your_b32_address));

对于较新的内核,添加了printk切换:

printk("%pI4\n", your_b32_address);

看看这里:http://www.kernel.org/doc/htmldocs/kernel-hacking/common-routines.html

答案 1 :(得分:0)

我想澄清一下,如果您有

__be32 ipaddr;

您必须将'ipaddr'的地址传递给printk

printk("%pI4\n", &ipaddr);