提交 2b5f6dcc 编写于 作者: J Jamal Hadi Salim 提交者: David S. Miller

[XFRM]: Fix aevent structuring to be more complete.

aevents can not uniquely identify an SA. We break the ABI with this
patch, but consensus is that since it is not yet utilized by any
(known) application then it is fine (better do it now than later).
Signed-off-by: NJamal Hadi Salim <hadi@cyberus.ca>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 02dba025
...@@ -47,10 +47,13 @@ aevent_id structure looks like: ...@@ -47,10 +47,13 @@ aevent_id structure looks like:
struct xfrm_aevent_id { struct xfrm_aevent_id {
struct xfrm_usersa_id sa_id; struct xfrm_usersa_id sa_id;
xfrm_address_t saddr;
__u32 flags; __u32 flags;
__u32 reqid;
}; };
xfrm_usersa_id in this message layout identifies the SA. The unique SA is identified by the combination of xfrm_usersa_id,
reqid and saddr.
flags are used to indicate different things. The possible flags are used to indicate different things. The possible
flags are: flags are:
......
...@@ -289,7 +289,9 @@ struct xfrm_usersa_id { ...@@ -289,7 +289,9 @@ struct xfrm_usersa_id {
struct xfrm_aevent_id { struct xfrm_aevent_id {
struct xfrm_usersa_id sa_id; struct xfrm_usersa_id sa_id;
xfrm_address_t saddr;
__u32 flags; __u32 flags;
__u32 reqid;
}; };
struct xfrm_userspi_info { struct xfrm_userspi_info {
......
...@@ -1281,10 +1281,12 @@ static int build_aevent(struct sk_buff *skb, struct xfrm_state *x, struct km_eve ...@@ -1281,10 +1281,12 @@ static int build_aevent(struct sk_buff *skb, struct xfrm_state *x, struct km_eve
id = NLMSG_DATA(nlh); id = NLMSG_DATA(nlh);
nlh->nlmsg_flags = 0; nlh->nlmsg_flags = 0;
id->sa_id.daddr = x->id.daddr; memcpy(&id->sa_id.daddr, &x->id.daddr,sizeof(x->id.daddr));
id->sa_id.spi = x->id.spi; id->sa_id.spi = x->id.spi;
id->sa_id.family = x->props.family; id->sa_id.family = x->props.family;
id->sa_id.proto = x->id.proto; id->sa_id.proto = x->id.proto;
memcpy(&id->saddr, &x->props.saddr,sizeof(x->props.saddr));
id->reqid = x->props.reqid;
id->flags = c->data.aevent; id->flags = c->data.aevent;
RTA_PUT(skb, XFRMA_REPLAY_VAL, sizeof(x->replay), &x->replay); RTA_PUT(skb, XFRMA_REPLAY_VAL, sizeof(x->replay), &x->replay);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册