Skip to content

Commit

Permalink
[XFRM]: Fix aevent structuring to be more complete.
Browse files Browse the repository at this point in the history
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: Jamal Hadi Salim <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
  • Loading branch information
Jamal Hadi Salim authored and davem330 committed Dec 3, 2006
1 parent 02dba02 commit 2b5f6dc
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 2 deletions.
5 changes: 4 additions & 1 deletion Documentation/networking/xfrm_sync.txt
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,13 @@ aevent_id structure looks like:

struct xfrm_aevent_id {
struct xfrm_usersa_id sa_id;
xfrm_address_t saddr;
__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:
Expand Down
2 changes: 2 additions & 0 deletions include/linux/xfrm.h
Original file line number Diff line number Diff line change
Expand Up @@ -289,7 +289,9 @@ struct xfrm_usersa_id {

struct xfrm_aevent_id {
struct xfrm_usersa_id sa_id;
xfrm_address_t saddr;
__u32 flags;
__u32 reqid;
};

struct xfrm_userspi_info {
Expand Down
4 changes: 3 additions & 1 deletion net/xfrm/xfrm_user.c
Original file line number Diff line number Diff line change
Expand Up @@ -1281,10 +1281,12 @@ static int build_aevent(struct sk_buff *skb, struct xfrm_state *x, struct km_eve
id = NLMSG_DATA(nlh);
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.family = x->props.family;
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;

RTA_PUT(skb, XFRMA_REPLAY_VAL, sizeof(x->replay), &x->replay);
Expand Down

0 comments on commit 2b5f6dc

Please sign in to comment.