Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
c5baa80a
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
160
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看板
提交
c5baa80a
编写于
5月 08, 2012
作者:
D
David S. Miller
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'fixes' of
git://git.kernel.org/pub/scm/linux/kernel/git/jesse/openvswitch
上级
1c430a72
072ae631
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
19 addition
and
11 deletion
+19
-11
net/openvswitch/datapath.c
net/openvswitch/datapath.c
+17
-10
net/openvswitch/flow.c
net/openvswitch/flow.c
+2
-1
未找到文件。
net/openvswitch/datapath.c
浏览文件 @
c5baa80a
...
...
@@ -421,6 +421,19 @@ static int validate_sample(const struct nlattr *attr,
return
validate_actions
(
actions
,
key
,
depth
+
1
);
}
static
int
validate_tp_port
(
const
struct
sw_flow_key
*
flow_key
)
{
if
(
flow_key
->
eth
.
type
==
htons
(
ETH_P_IP
))
{
if
(
flow_key
->
ipv4
.
tp
.
src
&&
flow_key
->
ipv4
.
tp
.
dst
)
return
0
;
}
else
if
(
flow_key
->
eth
.
type
==
htons
(
ETH_P_IPV6
))
{
if
(
flow_key
->
ipv6
.
tp
.
src
&&
flow_key
->
ipv6
.
tp
.
dst
)
return
0
;
}
return
-
EINVAL
;
}
static
int
validate_set
(
const
struct
nlattr
*
a
,
const
struct
sw_flow_key
*
flow_key
)
{
...
...
@@ -462,18 +475,13 @@ static int validate_set(const struct nlattr *a,
if
(
flow_key
->
ip
.
proto
!=
IPPROTO_TCP
)
return
-
EINVAL
;
if
(
!
flow_key
->
ipv4
.
tp
.
src
||
!
flow_key
->
ipv4
.
tp
.
dst
)
return
-
EINVAL
;
break
;
return
validate_tp_port
(
flow_key
);
case
OVS_KEY_ATTR_UDP
:
if
(
flow_key
->
ip
.
proto
!=
IPPROTO_UDP
)
return
-
EINVAL
;
if
(
!
flow_key
->
ipv4
.
tp
.
src
||
!
flow_key
->
ipv4
.
tp
.
dst
)
return
-
EINVAL
;
break
;
return
validate_tp_port
(
flow_key
);
default:
return
-
EINVAL
;
...
...
@@ -1641,10 +1649,9 @@ static int ovs_vport_cmd_set(struct sk_buff *skb, struct genl_info *info)
reply
=
ovs_vport_cmd_build_info
(
vport
,
info
->
snd_pid
,
info
->
snd_seq
,
OVS_VPORT_CMD_NEW
);
if
(
IS_ERR
(
reply
))
{
err
=
PTR_ERR
(
reply
);
netlink_set_err
(
init_net
.
genl_sock
,
0
,
ovs_dp_vport_multicast_group
.
id
,
err
);
return
0
;
ovs_dp_vport_multicast_group
.
id
,
PTR_ERR
(
reply
)
);
goto
exit_unlock
;
}
genl_notify
(
reply
,
genl_info_net
(
info
),
info
->
snd_pid
,
...
...
net/openvswitch/flow.c
浏览文件 @
c5baa80a
...
...
@@ -183,7 +183,8 @@ void ovs_flow_used(struct sw_flow *flow, struct sk_buff *skb)
u8
tcp_flags
=
0
;
if
(
flow
->
key
.
eth
.
type
==
htons
(
ETH_P_IP
)
&&
flow
->
key
.
ip
.
proto
==
IPPROTO_TCP
)
{
flow
->
key
.
ip
.
proto
==
IPPROTO_TCP
&&
likely
(
skb
->
len
>=
skb_transport_offset
(
skb
)
+
sizeof
(
struct
tcphdr
)))
{
u8
*
tcp
=
(
u8
*
)
tcp_hdr
(
skb
);
tcp_flags
=
*
(
tcp
+
TCP_FLAGS_OFFSET
)
&
TCP_FLAG_MASK
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录