http://www.cloudbbs.org/forum.php?mod=viewthread&tid=17856

IP 地址转换(字符串 -> 数值)

#include

iph->saddr = in_aton("1.1.1.1");

打印 IP 地址

#include

printk("%d.%d.%d.%d\n", NIPQUAD(iph->saddr));

#define NIPQUAD(addr) \

((unsignedchar*)&addr)[0],

((unsignedchar*)&addr)[1],

((unsignedchar*)&addr)[2],

((unsignedchar*)&addr)[3]

用 sprintf 可将上面的 IP 数值转换为字符串

======================================================================================================

http://stackoverflow.com/questions/584713/ip-address-from-sk-buff

#define NIPQUAD(addr) \

((unsigned char *)&addr)[0], \

((unsigned char *)&addr)[1], \

((unsigned char *)&addr)[2], \

((unsigned char *)&addr)[3]

#define NIP6(addr) \

ntohs((addr).s6_addr16[0]), \

ntohs((addr).s6_addr16[1]), \

ntohs((addr).s6_addr16[2]), \

ntohs((addr).s6_addr16[3]), \

ntohs((addr).s6_addr16[4]), \

ntohs((addr).s6_addr16[5]), \

ntohs((addr).s6_addr16[6]), \

ntohs((addr).s6_addr16[7])

printk(KERN_DEBUG "Received packet from source address: %d.%d.%d.%d!\n",NIPQUAD(iph->saddr));

http://svn.netfilter.org/netfilter/branches/patch-o-matic-ng/linux-2.6.11/ROUTE/linux-2.6/net/ipv6/netfilter/ip6t_ROUTE.c

struct rt6_info *rt = NULL;

struct ipv6hdr *ipv6h = skb->nh.ipv6h;

struct in6_addr *gw = (struct in6_addr*)&route_info->gw;

DEBUGP("ip6t_ROUTE: called with: ");

DEBUGP("DST=%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x ", NIP6(ipv6h->daddr));

DEBUGP("GATEWAY=%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x ", NIP6(*gw));

DEBUGP("OUT=%s\n", route_info->oif);

printk实用功能

%pI4 打印IPV4地址

%pI6 打印IPV6地址

%pM  打印MAC地址

再较新的内核版本中NIPQUAD和NIP6两个宏被移除了, 可以直接使用printk打印IP地址, 相关信息如下:

http://www.cppblog.com/momoxiao/archive/2011/01/27/139393.html

Using NIPQUAD() with NIPQUAD_FMT, %d.%d.%d.%d or %u.%u.%u.%u

can be replaced with %pI4

-  dprintf("SRC: %u.%u.%u.%u. Mask: %u.%u.%u.%u. Target: %u.%u.%u.%u.%s\n",

-   NIPQUAD(src_ipaddr),

-   NIPQUAD(arpinfo->smsk.s_addr),

-   NIPQUAD(arpinfo->src.s_addr),

+  dprintf("SRC: %pI4. Mask: %pI4. Target: %pI4.%s\n",

+   &src_ipaddr,

+   &arpinfo->smsk.s_addr,

+   &arpinfo->src.s_addr,

arpinfo->invflags & ARPT_INV_SRCIP ? " (INV)" : "");

http://www.oschina.net/code/explore/pf-kernel/fs/cifs/cifs_spnego.c

/** add the server address */

if (server->addr.sockAddr.sin_family == AF_INET)

sprintf(dp, "ip4=%pI4", &server->addr.sockAddr.sin_addr);

else if (server->addr.sockAddr.sin_family == AF_INET6)

sprintf(dp, "ip6=%pI6", &server->addr.sockAddr6.sin6_addr);

else

http://www.kernel.org/doc/Documentation/printk-formats.txt

IPv4 addresses:

%pI41.2.3.4

%pi4001.002.003.004

%p[Ii][hnbl]

For printing IPv4 dot-separated decimal addresses. The 'I4' and 'i4'

specifiers result in a printed address with ('i4') or without ('I4')

leading zeros.

The additional 'h', 'n', 'b', and 'l' specifiers are used to specify

host, network, big or little endian order addresses respectively. Where

no specifier is provided the default network/big endian order is used.

IPv6 addresses:

%pI60001:0002:0003:0004:0005:0006:0007:0008

%pi600010002000300040005000600070008

%pI6c1:2:3:4:5:6:7:8

For printing IPv6 network-order 16-bit hex addresses. The 'I6' and 'i6'

specifiers result in a printed address with ('I6') or without ('i6')

colon-separators. Leading zeros are always used.

The additional 'c' specifier can be used with the 'I' specifier to

print a compressed IPv6 address as described by

http://tools.ietf.org/html/rfc5952

linux 内核配置ip地址,linux内核IP地址转换函数相关推荐

  1. Linux下配置Apache虚拟主机(基于IP地址)

    Linux下配置Apache虚拟主机(基于IP地址) 一.虚拟主机 虚拟主机,又称虚拟服务器,是一种在单一主机或主机群上,实现多网域服务的方法,可以运行多个网站或服务的技术.虚拟主机之间完全独立,并可 ...

  2. Linux内核配置网口驱动,linux内核编译,配置本机驱动

    1.前言 编译linux内核失败的原因很多时候就是驱动选错,适合自己本机的驱动没编译进去.面对特殊平台(或者有些洁癖者,我就是^_^),要编译精简内核,只要本机驱动,其他都不需要.面对内核里面这么多驱 ...

  3. linux内核配置打开声卡,Linux设备配置之声卡配置

    Linux下设备的配置过程是指在检测到设备类型.设备当前工作参数等信息之后,使用这些信息来配置设备的驱动程序,工作方式等,(设备的检测过程参见 <如何在Linux下实现硬件的自动检测>). ...

  4. linux下配置多网卡或多IP的方法

    第一种方法: ifconfig eth0:1 192.168.5.129 netmask 255.255.255.0 然后,你用ifconfig,就会发现多了一个ip,但这个ip是暂时的,重启以后就不 ...

  5. linux 内核配置raid,在 Linux VM 上配置软件 RAID - Azure Virtual Machines | Microsoft Docs

    在 Linux 上配置软件 RAID 02/02/2017 本文内容 一种比较常见的情况是,在 Azure 中的 Linux 虚拟机上使用软件 RAID 将多个附加的数据磁盘显示为单个 RAID 设备 ...

  6. linux内核配置参考,[转]Linux内核配置选项 参考(3)

    Linux 2.6.7内核编译经验. 2.6高级的特点不在说了,服务器应运上其他系统(WIN-DOS什么是比不了的了)这里只说说对我们桌面用户有什么好处. 2.6中一个主要内部改变是现在内核自身是可抢 ...

  7. linux nginx 配置端口访问,Linux入门教程:ubuntu 16.04配置nginx服务器实现一个IP一个端口多个站点,ubuntunginxNginx 使用异步...

    Linux入门教程:ubuntu 16.04配置nginx服务器实现一个IP一个端口多个站点,ubuntunginxNginx 使用异步 特点: Nginx 可以部署在网络上使用 FastCGI,脚本 ...

  8. 嵌入式Linux应用与开发——内核配置选项含Linux最新版本kernel下载后续操作

    下载官网的最新Linux内核版本,Linux虚拟机中Ubuntu 下载速度慢,更换镜像源后使下载速度正常.这是一个.tar.xz文件,我们要先来解压它.下面是下载内核解压文件编译内核配置内核的全过程. ...

  9. linux内核配置cpu相关,Linux内核配置

    对内核的操作分为两类: 一.配置内核 二.编译内核 一.配置内核的过程如下: make menuconfig时可以修改配置项,这主要是Kconfig的功能, 然后最终的配置结果会保存在.config文 ...

  10. 跑linux主机配置,在 StorSimple Linux 主机上配置 MPIO | Microsoft Docs

    您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn. 在运行 CentOS ...

最新文章

  1. 年度第一效率神器:你一定不想错过它!
  2. C#学习笔记(四):数组
  3. 莫斯科保卫战之PHP-502 Bad Gateway
  4. 在哪里能收到python实例代码-Python找出最小的K个数实例代码
  5. 1.1 Spring的整体架构--Spring源码深度解析
  6. postman模拟post请求的四种请求体
  7. OpenCV2:应用篇 三维重建
  8. 工作26:后端数据接口问题
  9. 分布式云时代,腾讯云为何自研操作系统
  10. 读书笔记:《知道做到》
  11. idea Terminal配置cmder(增加nodejs,git配置,jdk本地环境)
  12. 开机时无法进入系统,提示windows system32/winload.exe 无法加载
  13. word表格三线表线宽度
  14. iPhonexs文件连接服务器,iPhonexs黑屏了教你如何快速解决!
  15. K8S异常 sonar status is ‘PENDING’
  16. 基于Word2Vec的影评挖掘
  17. 美国人在世界各地随意干扰别国内政,发动战争,你认为这样做得对吗?
  18. LeetCode 557 反转字符串中的单词 III
  19. 拾色器 插件 Farbtastic
  20. 你想为开源社区做贡献吗?机会来了

热门文章

  1. 搜索引擎的概念鄂州_搜索引擎的基本概念
  2. html怎么把正方形改成圆形,css如何把正方形变成圆形
  3. word怎么恢复保存前的文件,word文件恢复
  4. java的简单逻辑博彩游戏craps
  5. Practicing Programming
  6. 查学籍网站报服务器错误,学籍系统常见问题
  7. 一个在线文字转语音工具
  8. 我孩子的毛毯教会了我关于技术和古希腊人的知识
  9. 什么叫CDN回源和域名回源,如何采用正确的正确的回源策略
  10. 安装多个电脑杀毒软件