简体   繁体   English

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

[英]method to change __be32 ip address into char in kernel space

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

For kernels older than 2.6.26(if not mistaken) you need to use the NIPQUAD macro, like:对于早于 2.6.26 的内核(如果没有记错的话),您需要使用NIPQUAD宏,例如:

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

For newer kernels a switch to printk was added:对于较新的内核,添加了到printk的开关:

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

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

I would like to clarify that if you have我想澄清一下,如果你有

__be32 ipaddr;

you must pass the address of 'ipaddr' to printk您必须将 'ipaddr' 的地址传递给 printk

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM