Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Linux-御风守护者
linux
提交
ce7fa1b3
L
linux
项目概览
Linux-御风守护者
/
linux
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
ce7fa1b3
编写于
12月 19, 2005
作者:
L
Linus Torvalds
浏览文件
操作
浏览文件
下载
差异文件
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
上级
d898d485
9bffc4ac
变更
12
隐藏空白更改
内联
并排
Showing
12 changed file
with
52 addition
and
33 deletion
+52
-33
include/linux/rtnetlink.h
include/linux/rtnetlink.h
+4
-0
include/net/xfrm.h
include/net/xfrm.h
+1
-0
net/bridge/br_netfilter.c
net/bridge/br_netfilter.c
+7
-10
net/ipv4/netfilter/Makefile
net/ipv4/netfilter/Makefile
+2
-1
net/ipv4/xfrm4_policy.c
net/ipv4/xfrm4_policy.c
+1
-0
net/ipv6/addrconf.c
net/ipv6/addrconf.c
+12
-4
net/ipv6/netfilter/Kconfig
net/ipv6/netfilter/Kconfig
+1
-1
net/ipv6/route.c
net/ipv6/route.c
+1
-1
net/ipv6/xfrm6_policy.c
net/ipv6/xfrm6_policy.c
+1
-0
net/sctp/socket.c
net/sctp/socket.c
+3
-11
net/xfrm/xfrm_policy.c
net/xfrm/xfrm_policy.c
+14
-5
net/xfrm/xfrm_state.c
net/xfrm/xfrm_state.c
+5
-0
未找到文件。
include/linux/rtnetlink.h
浏览文件 @
ce7fa1b3
...
...
@@ -866,6 +866,7 @@ enum rtnetlink_groups {
#define RTNLGRP_IPV4_MROUTE RTNLGRP_IPV4_MROUTE
RTNLGRP_IPV4_ROUTE
,
#define RTNLGRP_IPV4_ROUTE RTNLGRP_IPV4_ROUTE
RTNLGRP_NOP1
,
RTNLGRP_IPV6_IFADDR
,
#define RTNLGRP_IPV6_IFADDR RTNLGRP_IPV6_IFADDR
RTNLGRP_IPV6_MROUTE
,
...
...
@@ -876,8 +877,11 @@ enum rtnetlink_groups {
#define RTNLGRP_IPV6_IFINFO RTNLGRP_IPV6_IFINFO
RTNLGRP_DECnet_IFADDR
,
#define RTNLGRP_DECnet_IFADDR RTNLGRP_DECnet_IFADDR
RTNLGRP_NOP2
,
RTNLGRP_DECnet_ROUTE
,
#define RTNLGRP_DECnet_ROUTE RTNLGRP_DECnet_ROUTE
RTNLGRP_NOP3
,
RTNLGRP_NOP4
,
RTNLGRP_IPV6_PREFIX
,
#define RTNLGRP_IPV6_PREFIX RTNLGRP_IPV6_PREFIX
__RTNLGRP_MAX
...
...
include/net/xfrm.h
浏览文件 @
ce7fa1b3
...
...
@@ -890,6 +890,7 @@ struct xfrm_state * xfrm_find_acq(u8 mode, u32 reqid, u8 proto,
extern
void
xfrm_policy_flush
(
void
);
extern
int
xfrm_sk_policy_insert
(
struct
sock
*
sk
,
int
dir
,
struct
xfrm_policy
*
pol
);
extern
int
xfrm_flush_bundles
(
void
);
extern
void
xfrm_flush_all_bundles
(
void
);
extern
int
xfrm_bundle_ok
(
struct
xfrm_dst
*
xdst
,
struct
flowi
*
fl
,
int
family
);
extern
void
xfrm_init_pmtu
(
struct
dst_entry
*
dst
);
...
...
net/bridge/br_netfilter.c
浏览文件 @
ce7fa1b3
...
...
@@ -295,7 +295,7 @@ static int check_hbh_len(struct sk_buff *skb)
len
-=
2
;
while
(
len
>
0
)
{
int
optlen
=
raw
[
off
+
1
]
+
2
;
int
optlen
=
skb
->
nh
.
raw
[
off
+
1
]
+
2
;
switch
(
skb
->
nh
.
raw
[
off
])
{
case
IPV6_TLV_PAD0
:
...
...
@@ -308,18 +308,15 @@ static int check_hbh_len(struct sk_buff *skb)
case
IPV6_TLV_JUMBO
:
if
(
skb
->
nh
.
raw
[
off
+
1
]
!=
4
||
(
off
&
3
)
!=
2
)
goto
bad
;
pkt_len
=
ntohl
(
*
(
u32
*
)(
skb
->
nh
.
raw
+
off
+
2
));
if
(
pkt_len
<=
IPV6_MAXPLEN
||
skb
->
nh
.
ipv6h
->
payload_len
)
goto
bad
;
if
(
pkt_len
>
skb
->
len
-
sizeof
(
struct
ipv6hdr
))
goto
bad
;
if
(
pkt_len
+
sizeof
(
struct
ipv6hdr
)
<
skb
->
len
)
{
if
(
__pskb_trim
(
skb
,
pkt_len
+
sizeof
(
struct
ipv6hdr
)))
goto
bad
;
if
(
skb
->
ip_summed
==
CHECKSUM_HW
)
skb
->
ip_summed
=
CHECKSUM_NONE
;
}
if
(
pskb_trim_rcsum
(
skb
,
pkt_len
+
sizeof
(
struct
ipv6hdr
)))
goto
bad
;
break
;
default:
if
(
optlen
>
len
)
...
...
net/ipv4/netfilter/Makefile
浏览文件 @
ce7fa1b3
...
...
@@ -12,6 +12,7 @@ ip_nat_pptp-objs := ip_nat_helper_pptp.o ip_nat_proto_gre.o
# connection tracking
obj-$(CONFIG_IP_NF_CONNTRACK)
+=
ip_conntrack.o
obj-$(CONFIG_IP_NF_NAT)
+=
ip_nat.o
# conntrack netlink interface
obj-$(CONFIG_IP_NF_CONNTRACK_NETLINK)
+=
ip_conntrack_netlink.o
...
...
@@ -41,7 +42,7 @@ obj-$(CONFIG_IP_NF_IPTABLES) += ip_tables.o
# the three instances of ip_tables
obj-$(CONFIG_IP_NF_FILTER)
+=
iptable_filter.o
obj-$(CONFIG_IP_NF_MANGLE)
+=
iptable_mangle.o
obj-$(CONFIG_IP_NF_NAT)
+=
iptable_nat.o
ip_nat.o
obj-$(CONFIG_IP_NF_NAT)
+=
iptable_nat.o
obj-$(CONFIG_IP_NF_RAW)
+=
iptable_raw.o
# matches
...
...
net/ipv4/xfrm4_policy.c
浏览文件 @
ce7fa1b3
...
...
@@ -182,6 +182,7 @@ _decode_session4(struct sk_buff *skb, struct flowi *fl)
case
IPPROTO_UDP
:
case
IPPROTO_TCP
:
case
IPPROTO_SCTP
:
case
IPPROTO_DCCP
:
if
(
pskb_may_pull
(
skb
,
xprth
+
4
-
skb
->
data
))
{
u16
*
ports
=
(
u16
*
)
xprth
;
...
...
net/ipv6/addrconf.c
浏览文件 @
ce7fa1b3
...
...
@@ -1596,9 +1596,17 @@ void addrconf_prefix_rcv(struct net_device *dev, u8 *opt, int len)
not good.
*/
if
(
valid_lft
>=
0x7FFFFFFF
/
HZ
)
rt_expires
=
0
;
rt_expires
=
0
x7FFFFFFF
-
(
0x7FFFFFFF
%
HZ
)
;
else
rt_expires
=
jiffies
+
valid_lft
*
HZ
;
rt_expires
=
valid_lft
*
HZ
;
/*
* We convert this (in jiffies) to clock_t later.
* Avoid arithmetic overflow there as well.
* Overflow can happen only if HZ < USER_HZ.
*/
if
(
HZ
<
USER_HZ
&&
rt_expires
>
0x7FFFFFFF
/
USER_HZ
)
rt_expires
=
0x7FFFFFFF
/
USER_HZ
;
if
(
pinfo
->
onlink
)
{
struct
rt6_info
*
rt
;
...
...
@@ -1610,12 +1618,12 @@ void addrconf_prefix_rcv(struct net_device *dev, u8 *opt, int len)
ip6_del_rt
(
rt
,
NULL
,
NULL
,
NULL
);
rt
=
NULL
;
}
else
{
rt
->
rt6i_expires
=
rt_expires
;
rt
->
rt6i_expires
=
jiffies
+
rt_expires
;
}
}
}
else
if
(
valid_lft
)
{
addrconf_prefix_route
(
&
pinfo
->
prefix
,
pinfo
->
prefix_len
,
dev
,
rt_expires
,
RTF_ADDRCONF
|
RTF_EXPIRES
|
RTF_PREFIX_RT
);
dev
,
jiffies_to_clock_t
(
rt_expires
)
,
RTF_ADDRCONF
|
RTF_EXPIRES
|
RTF_PREFIX_RT
);
}
if
(
rt
)
dst_release
(
&
rt
->
u
.
dst
);
...
...
net/ipv6/netfilter/Kconfig
浏览文件 @
ce7fa1b3
...
...
@@ -211,7 +211,7 @@ config IP6_NF_TARGET_REJECT
config IP6_NF_TARGET_NFQUEUE
tristate "NFQUEUE Target Support"
depends on IP_NF_IPTABLES
depends on IP
6
_NF_IPTABLES
help
This Target replaced the old obsolete QUEUE target.
...
...
net/ipv6/route.c
浏览文件 @
ce7fa1b3
...
...
@@ -829,7 +829,7 @@ int ip6_route_add(struct in6_rtmsg *rtmsg, struct nlmsghdr *nlh,
}
rt
->
u
.
dst
.
obsolete
=
-
1
;
rt
->
rt6i_expires
=
clock_t_to_jiffies
(
rtmsg
->
rtmsg_info
);
rt
->
rt6i_expires
=
jiffies
+
clock_t_to_jiffies
(
rtmsg
->
rtmsg_info
);
if
(
nlh
&&
(
r
=
NLMSG_DATA
(
nlh
)))
{
rt
->
rt6i_protocol
=
r
->
rtm_protocol
;
}
else
{
...
...
net/ipv6/xfrm6_policy.c
浏览文件 @
ce7fa1b3
...
...
@@ -214,6 +214,7 @@ _decode_session6(struct sk_buff *skb, struct flowi *fl)
case
IPPROTO_UDP
:
case
IPPROTO_TCP
:
case
IPPROTO_SCTP
:
case
IPPROTO_DCCP
:
if
(
pskb_may_pull
(
skb
,
skb
->
nh
.
raw
+
offset
+
4
-
skb
->
data
))
{
u16
*
ports
=
(
u16
*
)
exthdr
;
...
...
net/sctp/socket.c
浏览文件 @
ce7fa1b3
...
...
@@ -156,10 +156,6 @@ static inline void sctp_set_owner_w(struct sctp_chunk *chunk)
sizeof
(
struct
sk_buff
)
+
sizeof
(
struct
sctp_chunk
);
sk
->
sk_wmem_queued
+=
SCTP_DATA_SNDSIZE
(
chunk
)
+
sizeof
(
struct
sk_buff
)
+
sizeof
(
struct
sctp_chunk
);
atomic_add
(
sizeof
(
struct
sctp_chunk
),
&
sk
->
sk_wmem_alloc
);
}
...
...
@@ -4426,7 +4422,7 @@ int sctp_inet_listen(struct socket *sock, int backlog)
* tcp_poll(). Note that, based on these implementations, we don't
* lock the socket in this function, even though it seems that,
* ideally, locking or some other mechanisms can be used to ensure
* the integrity of the counters (sndbuf and wmem_
queued
) used
* the integrity of the counters (sndbuf and wmem_
alloc
) used
* in this place. We assume that we don't need locks either until proven
* otherwise.
*
...
...
@@ -4833,10 +4829,6 @@ static void sctp_wfree(struct sk_buff *skb)
sizeof
(
struct
sk_buff
)
+
sizeof
(
struct
sctp_chunk
);
sk
->
sk_wmem_queued
-=
SCTP_DATA_SNDSIZE
(
chunk
)
+
sizeof
(
struct
sk_buff
)
+
sizeof
(
struct
sctp_chunk
);
atomic_sub
(
sizeof
(
struct
sctp_chunk
),
&
sk
->
sk_wmem_alloc
);
sock_wfree
(
skb
);
...
...
@@ -4920,7 +4912,7 @@ void sctp_write_space(struct sock *sk)
/* Is there any sndbuf space available on the socket?
*
* Note that
wmem_queued
is the sum of the send buffers on all of the
* Note that
sk_wmem_alloc
is the sum of the send buffers on all of the
* associations on the same socket. For a UDP-style socket with
* multiple associations, it is possible for it to be "unwriteable"
* prematurely. I assume that this is acceptable because
...
...
@@ -4933,7 +4925,7 @@ static int sctp_writeable(struct sock *sk)
{
int
amt
=
0
;
amt
=
sk
->
sk_sndbuf
-
sk
->
sk_wmem_queued
;
amt
=
sk
->
sk_sndbuf
-
atomic_read
(
&
sk
->
sk_wmem_alloc
)
;
if
(
amt
<
0
)
amt
=
0
;
return
amt
;
...
...
net/xfrm/xfrm_policy.c
浏览文件 @
ce7fa1b3
...
...
@@ -1014,13 +1014,12 @@ int __xfrm_route_forward(struct sk_buff *skb, unsigned short family)
}
EXPORT_SYMBOL
(
__xfrm_route_forward
);
/* Optimize later using cookies and generation ids. */
static
struct
dst_entry
*
xfrm_dst_check
(
struct
dst_entry
*
dst
,
u32
cookie
)
{
if
(
!
stale_bundle
(
dst
))
return
dst
;
/* If it is marked obsolete, which is how we even get here,
* then we have purged it from the policy bundle list and we
* did that for a good reason.
*/
return
NULL
;
}
...
...
@@ -1104,6 +1103,16 @@ int xfrm_flush_bundles(void)
return
0
;
}
static
int
always_true
(
struct
dst_entry
*
dst
)
{
return
1
;
}
void
xfrm_flush_all_bundles
(
void
)
{
xfrm_prune_bundles
(
always_true
);
}
void
xfrm_init_pmtu
(
struct
dst_entry
*
dst
)
{
do
{
...
...
net/xfrm/xfrm_state.c
浏览文件 @
ce7fa1b3
...
...
@@ -431,6 +431,8 @@ void xfrm_state_insert(struct xfrm_state *x)
spin_lock_bh
(
&
xfrm_state_lock
);
__xfrm_state_insert
(
x
);
spin_unlock_bh
(
&
xfrm_state_lock
);
xfrm_flush_all_bundles
();
}
EXPORT_SYMBOL
(
xfrm_state_insert
);
...
...
@@ -478,6 +480,9 @@ int xfrm_state_add(struct xfrm_state *x)
spin_unlock_bh
(
&
xfrm_state_lock
);
xfrm_state_put_afinfo
(
afinfo
);
if
(
!
err
)
xfrm_flush_all_bundles
();
if
(
x1
)
{
xfrm_state_delete
(
x1
);
xfrm_state_put
(
x1
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录