Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
791f58c0
cloud-kernel
项目概览
openanolis
/
cloud-kernel
大约 1 年 前同步成功
通知
158
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
791f58c0
编写于
4月 15, 2010
作者:
D
David S. Miller
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
git://git.kernel.org/pub/scm/linux/kernel/git/kaber/ipmr-2.6
上级
fd793d89
8de53dfb
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
9 addition
and
3 deletion
+9
-3
net/ipv4/Kconfig
net/ipv4/Kconfig
+1
-1
net/ipv4/ipmr.c
net/ipv4/ipmr.c
+8
-2
未找到文件。
net/ipv4/Kconfig
浏览文件 @
791f58c0
...
...
@@ -252,7 +252,7 @@ config IP_MROUTE
config IP_MROUTE_MULTIPLE_TABLES
bool "IP: multicast policy routing"
depends on IP_ADVANCED_ROUTER
depends on IP_
MROUTE && IP_
ADVANCED_ROUTER
select FIB_RULES
help
Normally, a multicast router runs a userspace daemon and decides
...
...
net/ipv4/ipmr.c
浏览文件 @
791f58c0
...
...
@@ -71,6 +71,9 @@
struct
mr_table
{
struct
list_head
list
;
#ifdef CONFIG_NET_NS
struct
net
*
net
;
#endif
u32
id
;
struct
sock
*
mroute_sk
;
struct
timer_list
ipmr_expire_timer
;
...
...
@@ -308,6 +311,7 @@ static struct mr_table *ipmr_new_table(struct net *net, u32 id)
mrt
=
kzalloc
(
sizeof
(
*
mrt
),
GFP_KERNEL
);
if
(
mrt
==
NULL
)
return
NULL
;
write_pnet
(
&
mrt
->
net
,
net
);
mrt
->
id
=
id
;
/* Forwarding cache */
...
...
@@ -580,7 +584,7 @@ static inline void ipmr_cache_free(struct mfc_cache *c)
static
void
ipmr_destroy_unres
(
struct
mr_table
*
mrt
,
struct
mfc_cache
*
c
)
{
struct
net
*
net
=
NULL
;
//mrt->net
;
struct
net
*
net
=
read_pnet
(
&
mrt
->
net
)
;
struct
sk_buff
*
skb
;
struct
nlmsgerr
*
e
;
...
...
@@ -1089,12 +1093,14 @@ static int ipmr_mfc_add(struct net *net, struct mr_table *mrt,
* Check to see if we resolved a queued list. If so we
* need to send on the frames and tidy up.
*/
found
=
false
;
spin_lock_bh
(
&
mfc_unres_lock
);
list_for_each_entry
(
uc
,
&
mrt
->
mfc_unres_queue
,
list
)
{
if
(
uc
->
mfc_origin
==
c
->
mfc_origin
&&
uc
->
mfc_mcastgrp
==
c
->
mfc_mcastgrp
)
{
list_del
(
&
uc
->
list
);
atomic_dec
(
&
mrt
->
cache_resolve_queue_len
);
found
=
true
;
break
;
}
}
...
...
@@ -1102,7 +1108,7 @@ static int ipmr_mfc_add(struct net *net, struct mr_table *mrt,
del_timer
(
&
mrt
->
ipmr_expire_timer
);
spin_unlock_bh
(
&
mfc_unres_lock
);
if
(
uc
)
{
if
(
found
)
{
ipmr_cache_resolve
(
net
,
mrt
,
uc
,
c
);
ipmr_cache_free
(
uc
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录