linux 内核配置ip地址,linux内核IP地址转换函数
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地址转换函数相关推荐
- Linux下配置Apache虚拟主机(基于IP地址)
Linux下配置Apache虚拟主机(基于IP地址) 一.虚拟主机 虚拟主机,又称虚拟服务器,是一种在单一主机或主机群上,实现多网域服务的方法,可以运行多个网站或服务的技术.虚拟主机之间完全独立,并可 ...
- Linux内核配置网口驱动,linux内核编译,配置本机驱动
1.前言 编译linux内核失败的原因很多时候就是驱动选错,适合自己本机的驱动没编译进去.面对特殊平台(或者有些洁癖者,我就是^_^),要编译精简内核,只要本机驱动,其他都不需要.面对内核里面这么多驱 ...
- linux内核配置打开声卡,Linux设备配置之声卡配置
Linux下设备的配置过程是指在检测到设备类型.设备当前工作参数等信息之后,使用这些信息来配置设备的驱动程序,工作方式等,(设备的检测过程参见 <如何在Linux下实现硬件的自动检测>). ...
- linux下配置多网卡或多IP的方法
第一种方法: ifconfig eth0:1 192.168.5.129 netmask 255.255.255.0 然后,你用ifconfig,就会发现多了一个ip,但这个ip是暂时的,重启以后就不 ...
- linux 内核配置raid,在 Linux VM 上配置软件 RAID - Azure Virtual Machines | Microsoft Docs
在 Linux 上配置软件 RAID 02/02/2017 本文内容 一种比较常见的情况是,在 Azure 中的 Linux 虚拟机上使用软件 RAID 将多个附加的数据磁盘显示为单个 RAID 设备 ...
- linux内核配置参考,[转]Linux内核配置选项 参考(3)
Linux 2.6.7内核编译经验. 2.6高级的特点不在说了,服务器应运上其他系统(WIN-DOS什么是比不了的了)这里只说说对我们桌面用户有什么好处. 2.6中一个主要内部改变是现在内核自身是可抢 ...
- linux nginx 配置端口访问,Linux入门教程:ubuntu 16.04配置nginx服务器实现一个IP一个端口多个站点,ubuntunginxNginx 使用异步...
Linux入门教程:ubuntu 16.04配置nginx服务器实现一个IP一个端口多个站点,ubuntunginxNginx 使用异步 特点: Nginx 可以部署在网络上使用 FastCGI,脚本 ...
- 嵌入式Linux应用与开发——内核配置选项含Linux最新版本kernel下载后续操作
下载官网的最新Linux内核版本,Linux虚拟机中Ubuntu 下载速度慢,更换镜像源后使下载速度正常.这是一个.tar.xz文件,我们要先来解压它.下面是下载内核解压文件编译内核配置内核的全过程. ...
- linux内核配置cpu相关,Linux内核配置
对内核的操作分为两类: 一.配置内核 二.编译内核 一.配置内核的过程如下: make menuconfig时可以修改配置项,这主要是Kconfig的功能, 然后最终的配置结果会保存在.config文 ...
- 跑linux主机配置,在 StorSimple Linux 主机上配置 MPIO | Microsoft Docs
您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn. 在运行 CentOS ...
最新文章
- 年度第一效率神器:你一定不想错过它!
- C#学习笔记(四):数组
- 莫斯科保卫战之PHP-502 Bad Gateway
- 在哪里能收到python实例代码-Python找出最小的K个数实例代码
- 1.1 Spring的整体架构--Spring源码深度解析
- postman模拟post请求的四种请求体
- OpenCV2:应用篇 三维重建
- 工作26:后端数据接口问题
- 分布式云时代,腾讯云为何自研操作系统
- 读书笔记:《知道做到》
- idea Terminal配置cmder(增加nodejs,git配置,jdk本地环境)
- 开机时无法进入系统,提示windows system32/winload.exe 无法加载
- word表格三线表线宽度
- iPhonexs文件连接服务器,iPhonexs黑屏了教你如何快速解决!
- K8S异常 sonar status is ‘PENDING’
- 基于Word2Vec的影评挖掘
- 美国人在世界各地随意干扰别国内政,发动战争,你认为这样做得对吗?
- LeetCode 557 反转字符串中的单词 III
- 拾色器 插件 Farbtastic
- 你想为开源社区做贡献吗?机会来了