Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
1b003be3
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
1b003be3
编写于
6月 09, 2009
作者:
D
David S. Miller
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
sctp: Use frag list abstraction interfaces.
Signed-off-by:
N
David S. Miller
<
davem@davemloft.net
>
上级
5c313e9a
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
8 addition
and
9 deletion
+8
-9
net/sctp/input.c
net/sctp/input.c
+2
-2
net/sctp/socket.c
net/sctp/socket.c
+3
-3
net/sctp/ulpevent.c
net/sctp/ulpevent.c
+3
-4
未找到文件。
net/sctp/input.c
浏览文件 @
1b003be3
...
@@ -81,13 +81,13 @@ static void sctp_add_backlog(struct sock *sk, struct sk_buff *skb);
...
@@ -81,13 +81,13 @@ static void sctp_add_backlog(struct sock *sk, struct sk_buff *skb);
/* Calculate the SCTP checksum of an SCTP packet. */
/* Calculate the SCTP checksum of an SCTP packet. */
static
inline
int
sctp_rcv_checksum
(
struct
sk_buff
*
skb
)
static
inline
int
sctp_rcv_checksum
(
struct
sk_buff
*
skb
)
{
{
struct
sk_buff
*
list
=
skb_shinfo
(
skb
)
->
frag_list
;
struct
sctphdr
*
sh
=
sctp_hdr
(
skb
);
struct
sctphdr
*
sh
=
sctp_hdr
(
skb
);
__le32
cmp
=
sh
->
checksum
;
__le32
cmp
=
sh
->
checksum
;
struct
sk_buff
*
list
;
__le32
val
;
__le32
val
;
__u32
tmp
=
sctp_start_cksum
((
__u8
*
)
sh
,
skb_headlen
(
skb
));
__u32
tmp
=
sctp_start_cksum
((
__u8
*
)
sh
,
skb_headlen
(
skb
));
for
(;
list
;
list
=
list
->
nex
t
)
skb_walk_frags
(
skb
,
lis
t
)
tmp
=
sctp_update_cksum
((
__u8
*
)
list
->
data
,
skb_headlen
(
list
),
tmp
=
sctp_update_cksum
((
__u8
*
)
list
->
data
,
skb_headlen
(
list
),
tmp
);
tmp
);
...
...
net/sctp/socket.c
浏览文件 @
1b003be3
...
@@ -1881,7 +1881,7 @@ static int sctp_skb_pull(struct sk_buff *skb, int len)
...
@@ -1881,7 +1881,7 @@ static int sctp_skb_pull(struct sk_buff *skb, int len)
len
-=
skb_len
;
len
-=
skb_len
;
__skb_pull
(
skb
,
skb_len
);
__skb_pull
(
skb
,
skb_len
);
for
(
list
=
skb_shinfo
(
skb
)
->
frag_list
;
list
;
list
=
list
->
nex
t
)
{
skb_walk_frags
(
skb
,
lis
t
)
{
rlen
=
sctp_skb_pull
(
list
,
len
);
rlen
=
sctp_skb_pull
(
list
,
len
);
skb
->
len
-=
(
len
-
rlen
);
skb
->
len
-=
(
len
-
rlen
);
skb
->
data_len
-=
(
len
-
rlen
);
skb
->
data_len
-=
(
len
-
rlen
);
...
@@ -6660,7 +6660,7 @@ static void sctp_sock_rfree_frag(struct sk_buff *skb)
...
@@ -6660,7 +6660,7 @@ static void sctp_sock_rfree_frag(struct sk_buff *skb)
goto
done
;
goto
done
;
/* Don't forget the fragments. */
/* Don't forget the fragments. */
for
(
frag
=
skb_shinfo
(
skb
)
->
frag_list
;
frag
;
frag
=
frag
->
next
)
skb_walk_frags
(
skb
,
frag
)
sctp_sock_rfree_frag
(
frag
);
sctp_sock_rfree_frag
(
frag
);
done:
done:
...
@@ -6675,7 +6675,7 @@ static void sctp_skb_set_owner_r_frag(struct sk_buff *skb, struct sock *sk)
...
@@ -6675,7 +6675,7 @@ static void sctp_skb_set_owner_r_frag(struct sk_buff *skb, struct sock *sk)
goto
done
;
goto
done
;
/* Don't forget the fragments. */
/* Don't forget the fragments. */
for
(
frag
=
skb_shinfo
(
skb
)
->
frag_list
;
frag
;
frag
=
frag
->
next
)
skb_walk_frags
(
skb
,
frag
)
sctp_skb_set_owner_r_frag
(
frag
,
sk
);
sctp_skb_set_owner_r_frag
(
frag
,
sk
);
done:
done:
...
...
net/sctp/ulpevent.c
浏览文件 @
1b003be3
...
@@ -976,9 +976,8 @@ static void sctp_ulpevent_receive_data(struct sctp_ulpevent *event,
...
@@ -976,9 +976,8 @@ static void sctp_ulpevent_receive_data(struct sctp_ulpevent *event,
* In general, the skb passed from IP can have only 1 level of
* In general, the skb passed from IP can have only 1 level of
* fragments. But we allow multiple levels of fragments.
* fragments. But we allow multiple levels of fragments.
*/
*/
for
(
frag
=
skb_shinfo
(
skb
)
->
frag_list
;
frag
;
frag
=
frag
->
next
)
{
skb_walk_frags
(
skb
,
frag
)
sctp_ulpevent_receive_data
(
sctp_skb2event
(
frag
),
asoc
);
sctp_ulpevent_receive_data
(
sctp_skb2event
(
frag
),
asoc
);
}
}
}
/* Do accounting for bytes just read by user and release the references to
/* Do accounting for bytes just read by user and release the references to
...
@@ -1003,7 +1002,7 @@ static void sctp_ulpevent_release_data(struct sctp_ulpevent *event)
...
@@ -1003,7 +1002,7 @@ static void sctp_ulpevent_release_data(struct sctp_ulpevent *event)
goto
done
;
goto
done
;
/* Don't forget the fragments. */
/* Don't forget the fragments. */
for
(
frag
=
skb_shinfo
(
skb
)
->
frag_list
;
frag
;
frag
=
frag
->
next
)
{
skb_walk_frags
(
skb
,
frag
)
{
/* NOTE: skb_shinfos are recursive. Although IP returns
/* NOTE: skb_shinfos are recursive. Although IP returns
* skb's with only 1 level of fragments, SCTP reassembly can
* skb's with only 1 level of fragments, SCTP reassembly can
* increase the levels.
* increase the levels.
...
@@ -1026,7 +1025,7 @@ static void sctp_ulpevent_release_frag_data(struct sctp_ulpevent *event)
...
@@ -1026,7 +1025,7 @@ static void sctp_ulpevent_release_frag_data(struct sctp_ulpevent *event)
goto
done
;
goto
done
;
/* Don't forget the fragments. */
/* Don't forget the fragments. */
for
(
frag
=
skb_shinfo
(
skb
)
->
frag_list
;
frag
;
frag
=
frag
->
next
)
{
skb_walk_frags
(
skb
,
frag
)
{
/* NOTE: skb_shinfos are recursive. Although IP returns
/* NOTE: skb_shinfos are recursive. Although IP returns
* skb's with only 1 level of fragments, SCTP reassembly can
* skb's with only 1 level of fragments, SCTP reassembly can
* increase the levels.
* increase the levels.
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录