Skip to content

Commit ccf9b3b

Browse files
klassertdavem330
authored andcommitted
xfrm: Add a XFRM_STATE_AF_UNSPEC flag to xfrm_usersa_info
Add a XFRM_STATE_AF_UNSPEC flag to handle the AF_UNSPEC behavior for the selector family. Userspace applications can set this flag to leave the selector family of the xfrm_state unspecified. This can be used to to handle inter family tunnels if the selector is not set from userspace. Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com> Acked-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 0ce2855 commit ccf9b3b

File tree

2 files changed

+2
-2
lines changed

2 files changed

+2
-2
lines changed

include/linux/xfrm.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,7 @@ struct xfrm_usersa_info {
339339
#define XFRM_STATE_NOPMTUDISC 4
340340
#define XFRM_STATE_WILDRECV 8
341341
#define XFRM_STATE_ICMP 16
342+
#define XFRM_STATE_AF_UNSPEC 32
342343
};
343344

344345
struct xfrm_usersa_id {

net/xfrm/xfrm_user.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -277,9 +277,8 @@ static void copy_from_user_state(struct xfrm_state *x, struct xfrm_usersa_info *
277277
memcpy(&x->props.saddr, &p->saddr, sizeof(x->props.saddr));
278278
x->props.flags = p->flags;
279279

280-
if (!x->sel.family)
280+
if (!x->sel.family && !(p->flags & XFRM_STATE_AF_UNSPEC))
281281
x->sel.family = p->family;
282-
283282
}
284283

285284
/*

0 commit comments

Comments
 (0)