in_device结构和in_ifaddr结构
in_device为ip配置块,关联了二层设备,包含ip地址列表,组播配置,arp参数,接口配置等;
/* ip配置块 */
struct in_device {
/* 二层设备 */
struct net_device *dev;
/* 引用计数 */
atomic_t refcnt;
/* 是否正在销毁 */
int dead;
/* ip地址列表 */
struct in_ifaddr *ifa_list; /* IP ifaddr chain */ /* 组播相关 */
struct ip_mc_list __rcu *mc_list; /* IP multicast filter chain */
struct ip_mc_list __rcu * __rcu *mc_hash; int mc_count; /* Number of installed mcasts */
spinlock_t mc_tomb_lock;
struct ip_mc_list *mc_tomb;
unsigned long mr_v1_seen;
unsigned long mr_v2_seen;
unsigned long mr_maxdelay;
unsigned char mr_qrv;
unsigned char mr_gq_running;
unsigned char mr_ifc_count;
struct timer_list mr_gq_timer; /* general query timer */
struct timer_list mr_ifc_timer; /* interface change timer */ /* arp参数 */
struct neigh_parms *arp_parms;
/* 设备接口的一些配置 */
struct ipv4_devconf cnf;
struct rcu_head rcu_head;
};
in_ifaddr表示地址结构,其成员包含了地址,掩码,范围等信息,多个地址连接成链表,主地址在前,从地址在后;
/* 地址结构 */
struct in_ifaddr {
struct hlist_node hash;
/* 下一个地址节点 */
struct in_ifaddr *ifa_next;
/* 所属ip配置块 */
struct in_device *ifa_dev;
struct rcu_head rcu_head;
/*
ifa_local和ifa_address都用来存储ip地址
但在不同设备接口意义不同
(1) 在配置了广播的设备上,都表示本地ip地址
(2) 在点对点设备上,ifa_address存储的是对端ip地址,
而ifa_local存储的是本地ip地址
*/
__be32 ifa_local;
__be32 ifa_address;
/* 子网掩码 */
__be32 ifa_mask;
/* 广播地址 */
__be32 ifa_broadcast;
/*
地址范围,值越小表示的范围越大
RT_SCOPE_UNIVERSE-在任何地方使用
RT_SCOPE_SITE-本地封闭系统的内部路由
RT_SCOPE_LINK-局域网内使用,如广播地址
RT_SCOPE_HOST-主机内部通信,如回环地址
RT_SCOPE_NOWHERE-目的地址不存在 */
unsigned char ifa_scope;
/* 子网掩码长度 */
unsigned char ifa_prefixlen;
/*
地址属性标记
IFA_F_SECONDARY-从属ip地址
IFA_F_NODAD-禁止重复地址检测,ipv6使用
IFA_F_HOMEADDRESS-移动ipv6家乡地址,ipv6使用
IFA_F_DEPRECATED-此ip地址不鼓励使用,也不禁止
IFA_F_TENTATIVE-尝试阶段的ip地址,仍在进行地址检测工作
IFA_F_PERMANENT-永久性地址,无此标识,则会动态配置ip地址
*/
__u32 ifa_flags;
/* 地址标签,通常是网络设备名或者网络设备别名 */
char ifa_label[IFNAMSIZ]; /* In seconds, relative to tstamp. Expiry is at tstamp + HZ * lft. */
/* 生命周期 */
__u32 ifa_valid_lft;
__u32 ifa_preferred_lft;
/* 时间戳 */
unsigned long ifa_cstamp; /* created timestamp */
unsigned long ifa_tstamp; /* updated timestamp */
};
in_device结构和in_ifaddr结构的更多相关文章
- C语言中的循环结构与选择结构
1. 为什么使用循环? 重复执行某段代码 2. while(条件){ 循环体: } 当条件成立的时候就执行循环体,条件不成立,就退出循环,继续执行while后面的语句 3. for ( 初始表达式 : ...
- Chrome弹窗的简单应用(选择结构与循环结构)
★选择结构★ ★JS实现弹窗显示随机数 示例代码效果图 ★ 弹窗实现对随机数的进一步判断 示例代码效果图 ★综合应用 比较大小 ★ 判断成绩等级 ): : : : : alert(" ...
- Linux程序存储结构与进程结构堆和栈的区别【转】
转自:http://www.hongkevip.com/caozuoxitong/Unix_Linux/24581.html 红客VIP(http://www.hongkevip.com):Linux ...
- C语言中的结构体,结构体数组
C语言中的结构体是一个小难点,下面我们详细来讲一下:至于什么是结构体,结构体为什么会产生,我就不说了,原因很简单,但是要注意到是结构体也是连续存储的,但要注意的是结构体里面类型各异,所以必然会产生内存 ...
- 黑马程序员——JAVA基础之程序控制流结构之循环结构,循环嵌套
------- android培训.java培训.期待与您交流! ---------- 循环结构: 代表语句:while ,do while ,for while语句格式 : while(条件表达式) ...
- 黑马程序员——JAVA基础之程序控制流结构之判断结构,选择结构
------- android培训.java培训.期待与您交流! ---------- 程序控制流结构:顺序结构:判断结构:选择结构:循环结构. 判断结构:条件表达式无论写成什么样子,只看最终的结构是 ...
- C#学习笔记11:C#中的顺序结构、分支结构、循环结构
顺序结构: 代码从Main()函数开始运行,从上到下,一行一行的执行,不漏掉代码. Int a=6; int b=5; int c=a+b; Console.Write(c); 分支结构: 代码有可能 ...
- LabVIEW设计模式系列——case结构模拟事件结构
标准:1.所有按钮的机械动作必须都用释放时触发或者单击时触发,这是为了保证仅仅触发一次动作. 标准:1.使用简单的case结构模拟事件结构.
- 【转】linux tree命令以树形结构显示文件目录结构 ---- 不错
原文网址:http://jingyan.baidu.com/article/acf728fd19c7eff8e510a3eb.html 今天小编来给分享Linux 系统下一个非常有用的命令的使用:tr ...
随机推荐
- [计算机网络] C++模拟telnet登陆SMTP服务发送邮件过程
在百度文库中的<使用telnet协议收发邮件>,我们可以很清楚地看到如何通过telnet来进行发送邮件,下面是一些需要用到的命令,通过以下命令可以很容易实现邮件发送功能.为了更好地理解其中 ...
- VBA练习-复杂一点
'日期添加 Sub addDate(d) Dim rg As Range, dd As Date d = Split(d, ) d = Replace(d, ".", " ...
- CentOS 文本搜索grep
grep 用于在文本中执行关键词搜索, 用法: grep [选项]... PATTERN [FILE]... [root@bigdata-senior01 ~]# grep "ftp&quo ...
- CF484E Sign on Fence && [国家集训队]middle
CF484E Sign on Fence #include<bits/stdc++.h> #define RG register #define IL inline #define _ 1 ...
- BZOJ4196:[NOI2015]软件包管理器——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=4196 https://www.luogu.org/problemnew/show/P2146 你决定 ...
- BZOJ2002:[HNOI2010]弹飞绵羊——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=2002 https://www.luogu.org/problemnew/show/P3203 某天, ...
- HDU4825:Xor Sum——题解
http://acm.hdu.edu.cn/showproblem.php?pid=4825 Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含 ...
- 【状压DP】【UVA11825】 Hackers' Crackdown
传送门 Description 你是一个hacker,侵入了一个有着n台计算机(编号为1.2.3....n)的网络.一共有n种服务,每台计算机都运行着所有服务.对于每台计算机,你都可以选择一项服务,终 ...
- mysql定时器,定时查询数据库,把查询结果插入到一张表中
1.有两张表order_repayment_detail,msg_sim ,需要把前者中的按时间过滤出来的信息插入到短信发送表中,可以每晚12点钟查询执行一次查询. 创建存储过程,这里的存储过程主要提 ...
- linux查找文件目录及mysql卸载
我们要卸载 mysql但是不知道其安装在哪里了,可以用 where +关键词 的方式查找,如上图 输入 whereis mysql 后,下面显示出了4个包含mysql的位置. ..... 查看安装m ...