当前位置: 首页 > 面试题库 >

使用Linux netfilter将源IP地址从struct iphdr *转换为等效字符串

伏子辰
2023-03-14
问题内容

我想将使用netfilter捕获的数据包中的源IP地址和目标IP地址转换为char *。

在我的netfilter挂钩函数中,我有:

sock_buff = skb; // argument 2 of hook function

// ip_header is struct iphdr*
ip_header = (struct iphdr *)skb_network_header(sock_buff);

// now how to convert ip_header->saddr & ip_header->daddr to char *
// ip_header->saddr & ip_header->daddr are of type __be32

谢谢。


问题答案:

内核的printf()功能家族具有用于IP地址的特殊格式说明符(%pI4用于IPv4地址,%pI6用于IPv6)。

因此,使用IPv4,您可以使用类似以下内容:

char source[16];
snprintf(source, 16, "%pI4", &ip_header->saddr); // Mind the &!

或写入动态分配的内存。

如果您只想打印调试输出,也可以使用printk()。有关的许多其他功能%p,请参阅本文档。



 类似资料:
  • 问题内容: 我想将字符串值(十六进制)转换为IP地址。如何使用Java做到这一点? 十六进制值: IP: 这个站点给我正确的结果,但是我不确定如何在我的代码中实现它。 可以直接在XSLT中完成吗? 问题答案: 试试这个 DatatypeConverter来自标准包

  • 我目前正在尝试创建一个聊天服务器作为一个分配,并希望每个消息包含一个头。它将包含ipv4地址,后跟一个字母,然后是用户名 我可以很容易地从字节中解码字符串字母,但现在我很难从字节中解码ipv4地址 我只需要一种方法来尝试和解码四个字节的整数到一个字符串或一些沿这些线的东西 谢谢:D

  • 问题内容: 在我的java应用程序中,如果用户输入IP,我们需要显示主机名,如果给出了主机名,那么我们需要显示主机的IP。 例如,如果用户输入IP地址,则应显示应用程序,反之亦然。 有可用的工具来执行此操作吗? 问题答案: 如果您使用Java进行编码,请尝试使用

  • 本文向大家介绍用Python将IP地址在整型和字符串之间轻松转换,包括了用Python将IP地址在整型和字符串之间轻松转换的使用技巧和注意事项,需要的朋友参考一下 前言 大家应该都有所体会,对于字符串型的IP存入数据库中,实在是个即浪费空间又浪费性能的家伙,所以可爱的人们想出来将IP转换为整型存储。MySQL中存在INET_ATON() 、INET_NTOA()函数进行IP整型和字符串之间的转换,

  • 本文向大家介绍Python将主机名转换为IP地址的方法,包括了Python将主机名转换为IP地址的方法的使用技巧和注意事项,需要的朋友参考一下 关于主机名转IP地址只记住两点即可: 1、英特网协议一直都是用4字节的IP将包转发给目的地; 2、至于主机名是如何转换成IP地址的,这是操作系统关心的事情; 输出: 以上这篇Python将主机名转换为IP地址的方法就是小编分享给大家的全部内容了,希望能给大

  • 问题内容: 我有使用地址的应用程序(它存储它们的时间很长),因此它只了解地址。 可以将地址转换为with 吗? 问题答案: 尽管IPv4地址范围具有等效的IPv6,但是您不能将所有IPv6地址都转换为IPv4-IPv6地址比IPv4地址更多。 解决此问题的唯一明智的方法是更新您的应用程序,以便能够理解和存储IPv6地址。