Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xiphi1978
linux
提交
1a324727
L
linux
项目概览
xiphi1978
/
linux
通知
2
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,发现更多精彩内容 >>
提交
1a324727
编写于
11月 21, 2005
作者:
L
Linus Torvalds
浏览文件
操作
浏览文件
下载
差异文件
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
上级
db93a82f
461ddf3b
变更
16
隐藏空白更改
内联
并排
Showing
16 changed file
with
70 addition
and
45 deletion
+70
-45
Documentation/DocBook/kernel-api.tmpl
Documentation/DocBook/kernel-api.tmpl
+4
-2
fs/compat_ioctl.c
fs/compat_ioctl.c
+3
-5
include/linux/netfilter_ipv4/ipt_sctp.h
include/linux/netfilter_ipv4/ipt_sctp.h
+5
-7
include/linux/skbuff.h
include/linux/skbuff.h
+3
-4
include/net/ipv6.h
include/net/ipv6.h
+2
-0
net/core/filter.c
net/core/filter.c
+4
-2
net/dccp/proto.c
net/dccp/proto.c
+1
-0
net/ipv4/fib_trie.c
net/ipv4/fib_trie.c
+3
-0
net/ipv4/netfilter/Kconfig
net/ipv4/netfilter/Kconfig
+5
-5
net/ipv6/addrconf.c
net/ipv6/addrconf.c
+5
-5
net/ipv6/datagram.c
net/ipv6/datagram.c
+1
-1
net/ipv6/exthdrs.c
net/ipv6/exthdrs.c
+21
-1
net/ipv6/ip6_flowlabel.c
net/ipv6/ip6_flowlabel.c
+6
-10
net/ipv6/raw.c
net/ipv6/raw.c
+3
-1
net/ipv6/udp.c
net/ipv6/udp.c
+3
-1
net/sched/sch_netem.c
net/sched/sch_netem.c
+1
-1
未找到文件。
Documentation/DocBook/kernel-api.tmpl
浏览文件 @
1a324727
...
...
@@ -237,8 +237,10 @@ X!Ilib/string.c
<sect1><title>
Driver Support
</title>
!Enet/core/dev.c
!Enet/ethernet/eth.c
!Einclude/linux/etherdevice.h
!Enet/core/wireless.c
!Iinclude/linux/etherdevice.h
<!-- FIXME: Removed for now since no structured comments in source
X!Enet/core/wireless.c
-->
</sect1>
<sect1><title>
Synchronous PPP
</title>
!Edrivers/net/wan/syncppp.c
...
...
fs/compat_ioctl.c
浏览文件 @
1a324727
...
...
@@ -686,7 +686,8 @@ static int dev_ifconf(unsigned int fd, unsigned int cmd, unsigned long arg)
ifr
=
ifc
.
ifc_req
;
ifr32
=
compat_ptr
(
ifc32
.
ifcbuf
);
for
(
i
=
0
,
j
=
0
;
i
<
ifc32
.
ifc_len
&&
j
<
ifc
.
ifc_len
;
for
(
i
=
0
,
j
=
0
;
i
+
sizeof
(
struct
ifreq32
)
<
ifc32
.
ifc_len
&&
j
<
ifc
.
ifc_len
;
i
+=
sizeof
(
struct
ifreq32
),
j
+=
sizeof
(
struct
ifreq
))
{
if
(
copy_in_user
(
ifr32
,
ifr
,
sizeof
(
struct
ifreq32
)))
return
-
EFAULT
;
...
...
@@ -702,10 +703,7 @@ static int dev_ifconf(unsigned int fd, unsigned int cmd, unsigned long arg)
i
=
((
i
/
sizeof
(
struct
ifreq
))
*
sizeof
(
struct
ifreq32
));
ifc32
.
ifc_len
=
i
;
}
else
{
if
(
i
<=
ifc32
.
ifc_len
)
ifc32
.
ifc_len
=
i
;
else
ifc32
.
ifc_len
=
i
-
sizeof
(
struct
ifreq32
);
ifc32
.
ifc_len
=
i
;
}
if
(
copy_to_user
(
compat_ptr
(
arg
),
&
ifc32
,
sizeof
(
struct
ifconf32
)))
return
-
EFAULT
;
...
...
include/linux/netfilter_ipv4/ipt_sctp.h
浏览文件 @
1a324727
...
...
@@ -7,8 +7,6 @@
#define IPT_SCTP_VALID_FLAGS 0x07
#define ELEMCOUNT(x) (sizeof(x)/sizeof(x[0]))
struct
ipt_sctp_flag_info
{
u_int8_t
chunktype
;
...
...
@@ -59,21 +57,21 @@ struct ipt_sctp_info {
#define SCTP_CHUNKMAP_RESET(chunkmap) \
do { \
int i; \
for (i = 0; i <
ELEMCOUNT
(chunkmap); i++) \
for (i = 0; i <
ARRAY_SIZE
(chunkmap); i++) \
chunkmap[i] = 0; \
} while (0)
#define SCTP_CHUNKMAP_SET_ALL(chunkmap) \
do { \
int i; \
for (i = 0; i <
ELEMCOUNT(chunkmap); i++)
\
for (i = 0; i <
ARRAY_SIZE(chunkmap); i++)
\
chunkmap[i] = ~0; \
} while (0)
#define SCTP_CHUNKMAP_COPY(destmap, srcmap) \
do { \
int i; \
for (i = 0; i <
ELEMCOUNT(chunkmap); i++)
\
for (i = 0; i <
ARRAY_SIZE(chunkmap); i++)
\
destmap[i] = srcmap[i]; \
} while (0)
...
...
@@ -81,7 +79,7 @@ struct ipt_sctp_info {
({ \
int i; \
int flag = 1; \
for (i = 0; i <
ELEMCOUNT
(chunkmap); i++) { \
for (i = 0; i <
ARRAY_SIZE
(chunkmap); i++) { \
if (chunkmap[i]) { \
flag = 0; \
break; \
...
...
@@ -94,7 +92,7 @@ struct ipt_sctp_info {
({ \
int i; \
int flag = 1; \
for (i = 0; i <
ELEMCOUNT
(chunkmap); i++) { \
for (i = 0; i <
ARRAY_SIZE
(chunkmap); i++) { \
if (chunkmap[i] != ~0) { \
flag = 0; \
break; \
...
...
include/linux/skbuff.h
浏览文件 @
1a324727
...
...
@@ -206,6 +206,7 @@ enum {
* @nfct: Associated connection, if any
* @ipvs_property: skbuff is owned by ipvs
* @nfctinfo: Relationship of this skb to the connection
* @nfct_reasm: netfilter conntrack re-assembly pointer
* @nf_bridge: Saved data about a bridged frame - see br_netfilter.c
* @tc_index: Traffic control index
* @tc_verd: traffic control verdict
...
...
@@ -264,16 +265,14 @@ struct sk_buff {
nohdr:
1
,
nfctinfo:
3
;
__u8
pkt_type
:
3
,
fclone:
2
;
fclone:
2
,
ipvs_property:
1
;
__be16
protocol
;
void
(
*
destructor
)(
struct
sk_buff
*
skb
);
#ifdef CONFIG_NETFILTER
__u32
nfmark
;
struct
nf_conntrack
*
nfct
;
#if defined(CONFIG_IP_VS) || defined(CONFIG_IP_VS_MODULE)
__u8
ipvs_property
:
1
;
#endif
#if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
struct
sk_buff
*
nfct_reasm
;
#endif
...
...
include/net/ipv6.h
浏览文件 @
1a324727
...
...
@@ -237,6 +237,8 @@ extern struct ipv6_txoptions * ipv6_renew_options(struct sock *sk, struct ipv6_t
int
newtype
,
struct
ipv6_opt_hdr
__user
*
newopt
,
int
newoptlen
);
struct
ipv6_txoptions
*
ipv6_fixup_options
(
struct
ipv6_txoptions
*
opt_space
,
struct
ipv6_txoptions
*
opt
);
extern
int
ip6_frag_nqueues
;
extern
atomic_t
ip6_frag_mem
;
...
...
net/core/filter.c
浏览文件 @
1a324727
...
...
@@ -116,8 +116,6 @@ int sk_run_filter(struct sk_buff *skb, struct sock_filter *filter, int flen)
A
/=
X
;
continue
;
case
BPF_ALU
|
BPF_DIV
|
BPF_K
:
if
(
fentry
->
k
==
0
)
return
0
;
A
/=
fentry
->
k
;
continue
;
case
BPF_ALU
|
BPF_AND
|
BPF_X
:
...
...
@@ -320,6 +318,10 @@ int sk_chk_filter(struct sock_filter *filter, int flen)
}
}
/* check for division by zero -Kris Katterjohn 2005-10-30 */
if
(
ftest
->
code
==
(
BPF_ALU
|
BPF_DIV
|
BPF_K
)
&&
ftest
->
k
==
0
)
return
-
EINVAL
;
/* check that memory operations use valid addresses. */
if
(
ftest
->
k
>=
BPF_MEMWORDS
)
{
/* but it might not be a memory operation... */
...
...
net/dccp/proto.c
浏览文件 @
1a324727
...
...
@@ -46,6 +46,7 @@ atomic_t dccp_orphan_count = ATOMIC_INIT(0);
static
struct
net_protocol
dccp_protocol
=
{
.
handler
=
dccp_v4_rcv
,
.
err_handler
=
dccp_v4_err
,
.
no_policy
=
1
,
};
const
char
*
dccp_packet_name
(
const
int
type
)
...
...
net/ipv4/fib_trie.c
浏览文件 @
1a324727
...
...
@@ -2378,6 +2378,7 @@ static unsigned fib_flag_trans(int type, u32 mask, const struct fib_info *fi)
*/
static
int
fib_route_seq_show
(
struct
seq_file
*
seq
,
void
*
v
)
{
const
struct
fib_trie_iter
*
iter
=
seq
->
private
;
struct
leaf
*
l
=
v
;
int
i
;
char
bf
[
128
];
...
...
@@ -2389,6 +2390,8 @@ static int fib_route_seq_show(struct seq_file *seq, void *v)
return
0
;
}
if
(
iter
->
trie
==
trie_local
)
return
0
;
if
(
IS_TNODE
(
l
))
return
0
;
...
...
net/ipv4/netfilter/Kconfig
浏览文件 @
1a324727
...
...
@@ -440,7 +440,7 @@ config IP_NF_MATCH_COMMENT
config IP_NF_MATCH_CONNMARK
tristate 'Connection mark match support'
depends on IP_NF_IPTABLES
depends on
IP_NF_CONNTRACK_MARK
|| (NF_CONNTRACK_MARK && NF_CONNTRACK_IPV4)
depends on
(IP_NF_CONNTRACK && IP_NF_CONNTRACK_MARK)
|| (NF_CONNTRACK_MARK && NF_CONNTRACK_IPV4)
help
This option adds a `connmark' match, which allows you to match the
connection mark value previously set for the session by `CONNMARK'.
...
...
@@ -452,7 +452,7 @@ config IP_NF_MATCH_CONNMARK
config IP_NF_MATCH_CONNBYTES
tristate 'Connection byte/packet counter match support'
depends on IP_NF_IPTABLES
depends on
IP_NF_CT_ACCT
|| (NF_CT_ACCT && NF_CONNTRACK_IPV4)
depends on
(IP_NF_CONNTRACK && IP_NF_CT_ACCT)
|| (NF_CT_ACCT && NF_CONNTRACK_IPV4)
help
This option adds a `connbytes' match, which allows you to match the
number of bytes and/or packets for each direction within a connection.
...
...
@@ -767,7 +767,7 @@ config IP_NF_TARGET_TTL
config IP_NF_TARGET_CONNMARK
tristate 'CONNMARK target support'
depends on IP_NF_MANGLE
depends on
IP_NF_CONNTRACK_MARK
|| (NF_CONNTRACK_MARK && NF_CONNTRACK_IPV4)
depends on
(IP_NF_CONNTRACK && IP_NF_CONNTRACK_MARK)
|| (NF_CONNTRACK_MARK && NF_CONNTRACK_IPV4)
help
This option adds a `CONNMARK' target, which allows one to manipulate
the connection mark value. Similar to the MARK target, but
...
...
@@ -779,8 +779,8 @@ config IP_NF_TARGET_CONNMARK
config IP_NF_TARGET_CLUSTERIP
tristate "CLUSTERIP target support (EXPERIMENTAL)"
depends on IP_NF_
IPTABLES
&& EXPERIMENTAL
depends on
IP_NF_CONNTRACK_MARK
|| (NF_CONNTRACK_MARK && NF_CONNTRACK_IPV4)
depends on IP_NF_
MANGLE
&& EXPERIMENTAL
depends on
(IP_NF_CONNTRACK && IP_NF_CONNTRACK_MARK)
|| (NF_CONNTRACK_MARK && NF_CONNTRACK_IPV4)
help
The CLUSTERIP target allows you to build load-balancing clusters of
network servers without having a dedicated load-balancing
...
...
net/ipv6/addrconf.c
浏览文件 @
1a324727
...
...
@@ -2627,7 +2627,7 @@ static void addrconf_verify(unsigned long foo)
for
(
i
=
0
;
i
<
IN6_ADDR_HSIZE
;
i
++
)
{
restart:
write
_lock
(
&
addrconf_hash_lock
);
read
_lock
(
&
addrconf_hash_lock
);
for
(
ifp
=
inet6_addr_lst
[
i
];
ifp
;
ifp
=
ifp
->
lst_next
)
{
unsigned
long
age
;
#ifdef CONFIG_IPV6_PRIVACY
...
...
@@ -2649,7 +2649,7 @@ static void addrconf_verify(unsigned long foo)
if
(
age
>=
ifp
->
valid_lft
)
{
spin_unlock
(
&
ifp
->
lock
);
in6_ifa_hold
(
ifp
);
write
_unlock
(
&
addrconf_hash_lock
);
read
_unlock
(
&
addrconf_hash_lock
);
ipv6_del_addr
(
ifp
);
goto
restart
;
}
else
if
(
age
>=
ifp
->
prefered_lft
)
{
...
...
@@ -2668,7 +2668,7 @@ static void addrconf_verify(unsigned long foo)
if
(
deprecate
)
{
in6_ifa_hold
(
ifp
);
write
_unlock
(
&
addrconf_hash_lock
);
read
_unlock
(
&
addrconf_hash_lock
);
ipv6_ifa_notify
(
0
,
ifp
);
in6_ifa_put
(
ifp
);
...
...
@@ -2686,7 +2686,7 @@ static void addrconf_verify(unsigned long foo)
in6_ifa_hold
(
ifp
);
in6_ifa_hold
(
ifpub
);
spin_unlock
(
&
ifp
->
lock
);
write
_unlock
(
&
addrconf_hash_lock
);
read
_unlock
(
&
addrconf_hash_lock
);
ipv6_create_tempaddr
(
ifpub
,
ifp
);
in6_ifa_put
(
ifpub
);
in6_ifa_put
(
ifp
);
...
...
@@ -2703,7 +2703,7 @@ static void addrconf_verify(unsigned long foo)
spin_unlock
(
&
ifp
->
lock
);
}
}
write
_unlock
(
&
addrconf_hash_lock
);
read
_unlock
(
&
addrconf_hash_lock
);
}
addr_chk_timer
.
expires
=
time_before
(
next
,
jiffies
+
HZ
)
?
jiffies
+
HZ
:
next
;
...
...
net/ipv6/datagram.c
浏览文件 @
1a324727
...
...
@@ -437,7 +437,7 @@ int datagram_recv_ctl(struct sock *sk, struct msghdr *msg, struct sk_buff *skb)
break
;
case
IPPROTO_AH
:
nexthdr
=
ptr
[
0
];
len
=
(
ptr
[
1
]
+
1
)
<<
2
;
len
=
(
ptr
[
1
]
+
2
)
<<
2
;
break
;
default:
nexthdr
=
ptr
[
0
];
...
...
net/ipv6/exthdrs.c
浏览文件 @
1a324727
...
...
@@ -628,6 +628,7 @@ ipv6_renew_options(struct sock *sk, struct ipv6_txoptions *opt,
if
(
!
tot_len
)
return
NULL
;
tot_len
+=
sizeof
(
*
opt2
);
opt2
=
sock_kmalloc
(
sk
,
tot_len
,
GFP_ATOMIC
);
if
(
!
opt2
)
return
ERR_PTR
(
-
ENOBUFS
);
...
...
@@ -668,7 +669,26 @@ ipv6_renew_options(struct sock *sk, struct ipv6_txoptions *opt,
return
opt2
;
out:
sock_kfree_s
(
sk
,
p
,
tot_len
);
sock_kfree_s
(
sk
,
opt2
,
opt2
->
tot_len
);
return
ERR_PTR
(
err
);
}
struct
ipv6_txoptions
*
ipv6_fixup_options
(
struct
ipv6_txoptions
*
opt_space
,
struct
ipv6_txoptions
*
opt
)
{
/*
* ignore the dest before srcrt unless srcrt is being included.
* --yoshfuji
*/
if
(
opt
&&
opt
->
dst0opt
&&
!
opt
->
srcrt
)
{
if
(
opt_space
!=
opt
)
{
memcpy
(
opt_space
,
opt
,
sizeof
(
*
opt_space
));
opt
=
opt_space
;
}
opt
->
opt_nflen
-=
ipv6_optlen
(
opt
->
dst0opt
);
opt
->
dst0opt
=
NULL
;
}
return
opt
;
}
net/ipv6/ip6_flowlabel.c
浏览文件 @
1a324727
...
...
@@ -225,20 +225,16 @@ struct ipv6_txoptions *fl6_merge_options(struct ipv6_txoptions * opt_space,
struct
ip6_flowlabel
*
fl
,
struct
ipv6_txoptions
*
fopt
)
{
struct
ipv6_txoptions
*
fl_opt
=
fl
?
fl
->
opt
:
NULL
;
if
(
fopt
==
NULL
||
fopt
->
opt_flen
==
0
)
{
if
(
!
fl_opt
||
!
fl_opt
->
dst0opt
||
fl_opt
->
srcrt
)
return
fl_opt
;
}
struct
ipv6_txoptions
*
fl_opt
=
fl
->
opt
;
if
(
fopt
==
NULL
||
fopt
->
opt_flen
==
0
)
return
fl_opt
;
if
(
fl_opt
!=
NULL
)
{
opt_space
->
hopopt
=
fl_opt
->
hopopt
;
opt_space
->
dst0opt
=
fl_opt
->
srcrt
?
fl_opt
->
dst0opt
:
NULL
;
opt_space
->
dst0opt
=
fl_opt
->
dst0opt
;
opt_space
->
srcrt
=
fl_opt
->
srcrt
;
opt_space
->
opt_nflen
=
fl_opt
->
opt_nflen
;
if
(
fl_opt
->
dst0opt
&&
!
fl_opt
->
srcrt
)
opt_space
->
opt_nflen
-=
ipv6_optlen
(
fl_opt
->
dst0opt
);
}
else
{
if
(
fopt
->
opt_nflen
==
0
)
return
fopt
;
...
...
net/ipv6/raw.c
浏览文件 @
1a324727
...
...
@@ -748,7 +748,9 @@ static int rawv6_sendmsg(struct kiocb *iocb, struct sock *sk,
}
if
(
opt
==
NULL
)
opt
=
np
->
opt
;
opt
=
fl6_merge_options
(
&
opt_space
,
flowlabel
,
opt
);
if
(
flowlabel
)
opt
=
fl6_merge_options
(
&
opt_space
,
flowlabel
,
opt
);
opt
=
ipv6_fixup_options
(
&
opt_space
,
opt
);
fl
.
proto
=
proto
;
rawv6_probe_proto_opt
(
&
fl
,
msg
);
...
...
net/ipv6/udp.c
浏览文件 @
1a324727
...
...
@@ -771,7 +771,9 @@ static int udpv6_sendmsg(struct kiocb *iocb, struct sock *sk,
}
if
(
opt
==
NULL
)
opt
=
np
->
opt
;
opt
=
fl6_merge_options
(
&
opt_space
,
flowlabel
,
opt
);
if
(
flowlabel
)
opt
=
fl6_merge_options
(
&
opt_space
,
flowlabel
,
opt
);
opt
=
ipv6_fixup_options
(
&
opt_space
,
opt
);
fl
->
proto
=
IPPROTO_UDP
;
ipv6_addr_copy
(
&
fl
->
fl6_dst
,
daddr
);
...
...
net/sched/sch_netem.c
浏览文件 @
1a324727
...
...
@@ -464,7 +464,7 @@ static int tfifo_enqueue(struct sk_buff *nskb, struct Qdisc *sch)
const
struct
netem_skb_cb
*
cb
=
(
const
struct
netem_skb_cb
*
)
skb
->
cb
;
if
(
PSCHED_TLESS
(
cb
->
time_to_send
,
n
cb
->
time_to_send
))
if
(
!
PSCHED_TLESS
(
ncb
->
time_to_send
,
cb
->
time_to_send
))
break
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录