摘要:        
两个函数分别完成ip地址的添加和删除工作,具体见下面源码分析; 1 /* 2 添加ip地址 3 主地址添加到最后一个满足范围的主地址后面 4 从地址添加到整个列表后面 5 若列表中存在与插入地址在同一子网的地址,则 6 要求ip地址不同且范围相同,并且插入地址认为是从地址 7 */ 8 static    阅读全文
posted @ 2017-09-17 23:05
AlexAlex
阅读(708)
评论(0)
推荐(0)
        
            
        
        
摘要:        
1 /* 根据指定设备的ip配置块,判断地址a,b是否在同一子网 */ 2 /* 3 --邻居项要求,在同一子网中的两个设备, 4 至少有一个接口有相同的子网配置, 5 --也就是说对端的in_dev->ifa_list中也能找到一个与当前 6 in_dev->ifa_list中相同的ifa_mas    阅读全文
posted @ 2017-09-17 21:41
AlexAlex
阅读(477)
评论(0)
推荐(0)
        
            
        
        
摘要:        
确认给定参数范围的ip地址是否存在; 1 /* 2 * Confirm that local IP address exists using wildcards: 3 * - net: netns to check, cannot be NULL 4 * - in_dev: only on this    阅读全文
posted @ 2017-09-17 21:01
AlexAlex
阅读(620)
评论(0)
推荐(1)
        
            
        
        
摘要:        
当通过输出设备向目的地址发送报文时,如果没有源地址,则需要调用inet_select_addr来选择ip地址作为源地址; 1 /* 2 选择ip地址 3 4 通过设备找到ip控制块,从ip控制块中遍历地址列表中的主地址, 5 优先选择满足范围,满足于目的地址网络部分相同的地址, 6 找不到则默认第一    阅读全文
posted @ 2017-09-17 20:14
AlexAlex
阅读(1210)
评论(0)
推荐(0)
        
            
        
        
摘要:        
inetdev_init为传入设备分配和绑定ip控制块,查看其调用关系如下: 1 /** 2 * fs_initcall(inet_init) 3 * |-->inet_init 4 * |-->ip_init 5 * |-->ip_rt_init 6 * |-->devinet_init 7 *     阅读全文
posted @ 2017-09-17 18:50
AlexAlex
阅读(625)
评论(0)
推荐(0)
        
            
        
        
摘要:        
in_device为ip配置块,关联了二层设备,包含ip地址列表,组播配置,arp参数,接口配置等; 1 /* ip配置块 */ 2 struct in_device { 3 /* 二层设备 */ 4 struct net_device *dev; 5 /* 引用计数 */ 6 atomic_t r    阅读全文
posted @ 2017-09-17 17:29
AlexAlex
阅读(2314)
评论(0)
推荐(0)
        
            
        
        
摘要:        
网络模块的初始化顺序 系统启动初始化时,一旦进入start_kernel,则说明低级初始化已经完成,接下来是对各种设备和子系统的初始化,网络模块初始化流程的调用关系如下图(图片来自:《Linux内核源码剖析-tcp/ip实现》): 在内核初始化过程中,初始化了很多模块,如图中的中断模块(init_i    阅读全文
posted @ 2017-09-17 15:25
AlexAlex
阅读(1192)
评论(0)
推荐(0)
        
                    
                
浙公网安备 33010602011771号