我是一名有用的助手,可以为您翻译文本。
我正在使用c语言在Arch Linux中编写内核模块。我想将网络IP转换为ip4格式的主机IP:127.0.0.1。
我知道在用户程序中可以使用以下函数:
我尝试包含
因此,在内核模块中,我无法访问这些函数。是否有替代这些函数的内核模块?
我正在使用c语言在Arch Linux中编写内核模块。我想将网络IP转换为ip4格式的主机IP:127.0.0.1。
我知道在用户程序中可以使用以下函数:
inetntoa()
ntohs()
ntohl()
我尝试包含
socket.h
、in.h
等头文件,并使用下面的函数,但它们都对我无效。因此,在内核模块中,我无法访问这些函数。是否有替代这些函数的内核模块?
htons()
、htonl()
、ntohs()
和ntohl()
,它们可以在"主机字节序"和"网络字节序"之间进行转换,其中网络字节序是大端字节序。如果主机已经是大端字节序,则这些函数不会执行任何操作。 - Havenardhtonl()
将其转换为网络格式,以便对套接字库有意义。在套接字库中它始终是大端序的! - Havenardhtons()
及其相关函数存在的原因。如果您从socket.h库中读取任何套接字结构的32位IP,则无论体系结构如何,它都会立即以大端字节序出现。您需要使用ntohl()
将其转换为主机字节序。 - Havenard