Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
9259c483
K
Kernel
项目概览
openeuler
/
Kernel
大约 1 年 前同步成功
通知
5
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
9259c483
编写于
3月 07, 2012
作者:
D
David S. Miller
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'fixes' of
git://git.kernel.org/pub/scm/linux/kernel/git/jesse/openvswitch
上级
d47775c4
81e5d41d
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
35 addition
and
12 deletion
+35
-12
net/openvswitch/actions.c
net/openvswitch/actions.c
+32
-12
net/openvswitch/datapath.c
net/openvswitch/datapath.c
+3
-0
未找到文件。
net/openvswitch/actions.c
浏览文件 @
9259c483
/*
* Copyright (c) 2007-201
1
Nicira Networks.
* Copyright (c) 2007-201
2
Nicira Networks.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of version 2 of the GNU General Public
...
...
@@ -145,9 +145,16 @@ static void set_ip_addr(struct sk_buff *skb, struct iphdr *nh,
inet_proto_csum_replace4
(
&
tcp_hdr
(
skb
)
->
check
,
skb
,
*
addr
,
new_addr
,
1
);
}
else
if
(
nh
->
protocol
==
IPPROTO_UDP
)
{
if
(
likely
(
transport_len
>=
sizeof
(
struct
udphdr
)))
inet_proto_csum_replace4
(
&
udp_hdr
(
skb
)
->
check
,
skb
,
*
addr
,
new_addr
,
1
);
if
(
likely
(
transport_len
>=
sizeof
(
struct
udphdr
)))
{
struct
udphdr
*
uh
=
udp_hdr
(
skb
);
if
(
uh
->
check
||
skb
->
ip_summed
==
CHECKSUM_PARTIAL
)
{
inet_proto_csum_replace4
(
&
uh
->
check
,
skb
,
*
addr
,
new_addr
,
1
);
if
(
!
uh
->
check
)
uh
->
check
=
CSUM_MANGLED_0
;
}
}
}
csum_replace4
(
&
nh
->
check
,
*
addr
,
new_addr
);
...
...
@@ -197,8 +204,22 @@ static void set_tp_port(struct sk_buff *skb, __be16 *port,
skb
->
rxhash
=
0
;
}
static
int
set_udp_port
(
struct
sk_buff
*
skb
,
const
struct
ovs_key_udp
*
udp_port_key
)
static
void
set_udp_port
(
struct
sk_buff
*
skb
,
__be16
*
port
,
__be16
new_port
)
{
struct
udphdr
*
uh
=
udp_hdr
(
skb
);
if
(
uh
->
check
&&
skb
->
ip_summed
!=
CHECKSUM_PARTIAL
)
{
set_tp_port
(
skb
,
port
,
new_port
,
&
uh
->
check
);
if
(
!
uh
->
check
)
uh
->
check
=
CSUM_MANGLED_0
;
}
else
{
*
port
=
new_port
;
skb
->
rxhash
=
0
;
}
}
static
int
set_udp
(
struct
sk_buff
*
skb
,
const
struct
ovs_key_udp
*
udp_port_key
)
{
struct
udphdr
*
uh
;
int
err
;
...
...
@@ -210,16 +231,15 @@ static int set_udp_port(struct sk_buff *skb,
uh
=
udp_hdr
(
skb
);
if
(
udp_port_key
->
udp_src
!=
uh
->
source
)
set_
tp_port
(
skb
,
&
uh
->
source
,
udp_port_key
->
udp_src
,
&
uh
->
check
);
set_
udp_port
(
skb
,
&
uh
->
source
,
udp_port_key
->
udp_src
);
if
(
udp_port_key
->
udp_dst
!=
uh
->
dest
)
set_
tp_port
(
skb
,
&
uh
->
dest
,
udp_port_key
->
udp_dst
,
&
uh
->
check
);
set_
udp_port
(
skb
,
&
uh
->
dest
,
udp_port_key
->
udp_dst
);
return
0
;
}
static
int
set_tcp_port
(
struct
sk_buff
*
skb
,
const
struct
ovs_key_tcp
*
tcp_port_key
)
static
int
set_tcp
(
struct
sk_buff
*
skb
,
const
struct
ovs_key_tcp
*
tcp_port_key
)
{
struct
tcphdr
*
th
;
int
err
;
...
...
@@ -328,11 +348,11 @@ static int execute_set_action(struct sk_buff *skb,
break
;
case
OVS_KEY_ATTR_TCP
:
err
=
set_tcp
_port
(
skb
,
nla_data
(
nested_attr
));
err
=
set_tcp
(
skb
,
nla_data
(
nested_attr
));
break
;
case
OVS_KEY_ATTR_UDP
:
err
=
set_udp
_port
(
skb
,
nla_data
(
nested_attr
));
err
=
set_udp
(
skb
,
nla_data
(
nested_attr
));
break
;
}
...
...
net/openvswitch/datapath.c
浏览文件 @
9259c483
...
...
@@ -1521,6 +1521,9 @@ static struct vport *lookup_vport(struct ovs_header *ovs_header,
vport
=
ovs_vport_locate
(
nla_data
(
a
[
OVS_VPORT_ATTR_NAME
]));
if
(
!
vport
)
return
ERR_PTR
(
-
ENODEV
);
if
(
ovs_header
->
dp_ifindex
&&
ovs_header
->
dp_ifindex
!=
get_dpifindex
(
vport
->
dp
))
return
ERR_PTR
(
-
ENODEV
);
return
vport
;
}
else
if
(
a
[
OVS_VPORT_ATTR_PORT_NO
])
{
u32
port_no
=
nla_get_u32
(
a
[
OVS_VPORT_ATTR_PORT_NO
]);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录