XFRM_POLICY_OUT
if (dir != XFRM_POLICY_OUT && family == AF_INET) {
if (!READ_ONCE(net->xfrm.policy_count[XFRM_POLICY_OUT]) &&
READ_ONCE(net->xfrm.policy_default[XFRM_POLICY_OUT]) == XFRM_USERPOLICY_ACCEPT)
if (dir == XFRM_POLICY_OUT)
XFRM_POLICY_OUT);
pol->sadb_x_policy_dir = XFRM_POLICY_OUT + 1;
[NFTA_XFRM_DIR] = NLA_POLICY_MAX(NLA_U8, XFRM_POLICY_OUT),
case XFRM_POLICY_OUT:
case XFRM_POLICY_OUT:
case XFRM_POLICY_OUT:
case XFRM_POLICY_OUT:
if ((dir & XFRM_POLICY_MASK) == XFRM_POLICY_OUT) {
if ((dir & XFRM_POLICY_MASK) == XFRM_POLICY_OUT) {
case XFRM_POLICY_OUT:
XFRM_POLICY_OUT,
u8 dir = XFRM_POLICY_OUT;
if (sk && sk->sk_policy[XFRM_POLICY_OUT]) {
pols[0] = xfrm_sk_policy_lookup(sk, XFRM_POLICY_OUT, fl, family,
!READ_ONCE(net->xfrm.policy_count[XFRM_POLICY_OUT])))
net->xfrm.policy_default[XFRM_POLICY_OUT] = XFRM_USERPOLICY_ACCEPT;
si->outcnt = READ_ONCE(net->xfrm.policy_count[XFRM_POLICY_OUT]);
si->outscnt = READ_ONCE(net->xfrm.policy_count[XFRM_POLICY_OUT+XFRM_POLICY_MAX]);
xfrm_sk_policy_insert(sk, XFRM_POLICY_OUT, NULL);
case XFRM_POLICY_OUT:
if (ut[i].optional && dir == XFRM_POLICY_OUT) {
up->out = READ_ONCE(net->xfrm.policy_default[XFRM_POLICY_OUT]);
WRITE_ONCE(net->xfrm.policy_default[XFRM_POLICY_OUT], up->out);
r_up->out = READ_ONCE(net->xfrm.policy_default[XFRM_POLICY_OUT]);
copy_to_user_policy(xp, &ua->policy, XFRM_POLICY_OUT);
if (p->dir > XFRM_POLICY_OUT)
XFRM_POLICY_OUT, tunsrc, tundst, proto)) {
XFRM_POLICY_OUT, tunsrc, tundst)) {
XFRM_POLICY_OUT, tunsrc, tundst, desc->proto)) {
req.expire.pol.dir = XFRM_POLICY_OUT;
policy.dir = XFRM_POLICY_OUT;