Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xiphi1978
linux
提交
9e8b4ed8
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,发现更多精彩内容 >>
提交
9e8b4ed8
编写于
4月 28, 2008
作者:
Y
YOSHIFUJI Hideaki
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
key: Introduce pfkey_sockaddr_len() for raw sockaddr{} length.
Signed-off-by:
N
YOSHIFUJI Hideaki
<
yoshfuji@linux-ipv6.org
>
上级
3de23255
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
19 addition
and
31 deletion
+19
-31
net/key/af_key.c
net/key/af_key.c
+19
-31
未找到文件。
net/key/af_key.c
浏览文件 @
9e8b4ed8
...
...
@@ -579,6 +579,19 @@ static uint8_t pfkey_proto_from_xfrm(uint8_t proto)
return
(
proto
?
proto
:
IPSEC_PROTO_ANY
);
}
static
inline
int
pfkey_sockaddr_len
(
sa_family_t
family
)
{
switch
(
family
)
{
case
AF_INET
:
return
sizeof
(
struct
sockaddr_in
);
#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
case
AF_INET6
:
return
sizeof
(
struct
sockaddr_in6
);
#endif
}
return
0
;
}
static
int
pfkey_sadb_addr2xfrm_addr
(
struct
sadb_address
*
addr
,
xfrm_address_t
*
xaddr
)
{
...
...
@@ -642,20 +655,11 @@ static struct xfrm_state *pfkey_xfrm_state_lookup(struct sadb_msg *hdr, void **
}
#define PFKEY_ALIGN8(a) (1 + (((a) - 1) | (8 - 1)))
static
int
pfkey_sockaddr_size
(
sa_family_t
family
)
{
switch
(
family
)
{
case
AF_INET
:
return
PFKEY_ALIGN8
(
sizeof
(
struct
sockaddr_in
));
#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
case
AF_INET6
:
return
PFKEY_ALIGN8
(
sizeof
(
struct
sockaddr_in6
));
#endif
default:
return
0
;
}
/* NOTREACHED */
return
PFKEY_ALIGN8
(
pfkey_sockaddr_len
(
family
));
}
static
inline
int
pfkey_mode_from_xfrm
(
int
mode
)
...
...
@@ -1952,9 +1956,7 @@ static int pfkey_xfrm_policy2msg_size(struct xfrm_policy *xp)
for
(
i
=
0
;
i
<
xp
->
xfrm_nr
;
i
++
)
{
t
=
xp
->
xfrm_vec
+
i
;
socklen
+=
(
t
->
encap_family
==
AF_INET
?
sizeof
(
struct
sockaddr_in
)
:
sizeof
(
struct
sockaddr_in6
));
socklen
+=
pfkey_sockaddr_len
(
t
->
encap_family
);
}
return
sizeof
(
struct
sadb_msg
)
+
...
...
@@ -1996,9 +1998,7 @@ static int pfkey_xfrm_policy2msg(struct sk_buff *skb, struct xfrm_policy *xp, in
int
i
;
int
size
;
int
sockaddr_size
=
pfkey_sockaddr_size
(
xp
->
family
);
int
socklen
=
(
xp
->
family
==
AF_INET
?
sizeof
(
struct
sockaddr_in
)
:
sizeof
(
struct
sockaddr_in6
));
int
socklen
=
pfkey_sockaddr_len
(
xp
->
family
);
size
=
pfkey_xfrm_policy2msg_size
(
xp
);
...
...
@@ -2122,9 +2122,7 @@ static int pfkey_xfrm_policy2msg(struct sk_buff *skb, struct xfrm_policy *xp, in
req_size
=
sizeof
(
struct
sadb_x_ipsecrequest
);
if
(
t
->
mode
==
XFRM_MODE_TUNNEL
)
req_size
+=
((
t
->
encap_family
==
AF_INET
?
sizeof
(
struct
sockaddr_in
)
:
sizeof
(
struct
sockaddr_in6
))
*
2
);
req_size
+=
pfkey_sockaddr_len
(
t
->
encap_family
)
*
2
;
else
size
-=
2
*
socklen
;
rq
=
(
void
*
)
skb_put
(
skb
,
req_size
);
...
...
@@ -2459,17 +2457,7 @@ static int key_pol_get_resp(struct sock *sk, struct xfrm_policy *xp, struct sadb
#ifdef CONFIG_NET_KEY_MIGRATE
static
int
pfkey_sockaddr_pair_size
(
sa_family_t
family
)
{
switch
(
family
)
{
case
AF_INET
:
return
PFKEY_ALIGN8
(
sizeof
(
struct
sockaddr_in
)
*
2
);
#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
case
AF_INET6
:
return
PFKEY_ALIGN8
(
sizeof
(
struct
sockaddr_in6
)
*
2
);
#endif
default:
return
0
;
}
/* NOTREACHED */
return
PFKEY_ALIGN8
(
pfkey_sockaddr_len
(
family
)
*
2
);
}
static
int
parse_sockaddr_pair
(
struct
sadb_x_ipsecrequest
*
rq
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录