Lines Matching refs:x
171 static int xfrm4_remove_beet_encap(struct xfrm_state *x, struct sk_buff *skb) in xfrm4_remove_beet_encap() argument
208 iph->daddr = x->sel.daddr.a4; in xfrm4_remove_beet_encap()
209 iph->saddr = x->sel.saddr.a4; in xfrm4_remove_beet_encap()
225 static int xfrm4_remove_tunnel_encap(struct xfrm_state *x, struct sk_buff *skb) in xfrm4_remove_tunnel_encap() argument
239 if (x->props.flags & XFRM_STATE_DECAP_DSCP) in xfrm4_remove_tunnel_encap()
241 if (!(x->props.flags & XFRM_STATE_NOECN)) in xfrm4_remove_tunnel_encap()
263 static int xfrm6_remove_tunnel_encap(struct xfrm_state *x, struct sk_buff *skb) in xfrm6_remove_tunnel_encap() argument
276 if (x->props.flags & XFRM_STATE_DECAP_DSCP) in xfrm6_remove_tunnel_encap()
279 if (!(x->props.flags & XFRM_STATE_NOECN)) in xfrm6_remove_tunnel_encap()
293 static int xfrm6_remove_beet_encap(struct xfrm_state *x, struct sk_buff *skb) in xfrm6_remove_beet_encap() argument
311 ip6h->daddr = x->sel.daddr.in6; in xfrm6_remove_beet_encap()
312 ip6h->saddr = x->sel.saddr.in6; in xfrm6_remove_beet_encap()
329 xfrm_inner_mode_encap_remove(struct xfrm_state *x, in xfrm_inner_mode_encap_remove() argument
336 return xfrm4_remove_beet_encap(x, skb); in xfrm_inner_mode_encap_remove()
338 return xfrm6_remove_beet_encap(x, skb); in xfrm_inner_mode_encap_remove()
342 return xfrm4_remove_tunnel_encap(x, skb); in xfrm_inner_mode_encap_remove()
344 return xfrm6_remove_tunnel_encap(x, skb); in xfrm_inner_mode_encap_remove()
352 static int xfrm_prepare_input(struct xfrm_state *x, struct sk_buff *skb) in xfrm_prepare_input() argument
354 const struct xfrm_mode *inner_mode = &x->inner_mode; in xfrm_prepare_input()
359 afinfo = xfrm_state_afinfo_get_rcu(x->outer_mode.family); in xfrm_prepare_input()
361 err = afinfo->extract_input(x, skb); in xfrm_prepare_input()
367 if (x->sel.family == AF_UNSPEC) { in xfrm_prepare_input()
368 inner_mode = xfrm_ip2inner_mode(x, XFRM_MODE_SKB_CB(skb)->protocol); in xfrm_prepare_input()
385 return xfrm_inner_mode_encap_remove(x, inner_mode, skb); in xfrm_prepare_input()
396 static int xfrm4_transport_input(struct xfrm_state *x, struct sk_buff *skb) in xfrm4_transport_input() argument
410 static int xfrm6_transport_input(struct xfrm_state *x, struct sk_buff *skb) in xfrm6_transport_input() argument
430 static int xfrm_inner_mode_input(struct xfrm_state *x, in xfrm_inner_mode_input() argument
437 return xfrm_prepare_input(x, skb); in xfrm_inner_mode_input()
440 return xfrm4_transport_input(x, skb); in xfrm_inner_mode_input()
442 return xfrm6_transport_input(x, skb); in xfrm_inner_mode_input()
463 struct xfrm_state *x = NULL; in xfrm_input() local
475 x = xfrm_input_state(skb); in xfrm_input()
477 if (unlikely(x->km.state != XFRM_STATE_VALID)) { in xfrm_input()
478 if (x->km.state == XFRM_STATE_ACQ) in xfrm_input()
489 family = x->outer_mode.family; in xfrm_input()
513 xfrm_audit_state_icvfail(x, skb, in xfrm_input()
514 x->type->proto); in xfrm_input()
515 x->stats.integrity_failed++; in xfrm_input()
576 x = xfrm_state_lookup(net, mark, daddr, spi, nexthdr, family); in xfrm_input()
577 if (x == NULL) { in xfrm_input()
584 skb->mark = xfrm_smark_get(skb->mark, x); in xfrm_input()
586 sp->xvec[sp->len++] = x; in xfrm_input()
595 spin_lock(&x->lock); in xfrm_input()
597 if (unlikely(x->km.state != XFRM_STATE_VALID)) { in xfrm_input()
598 if (x->km.state == XFRM_STATE_ACQ) in xfrm_input()
606 if ((x->encap ? x->encap->encap_type : 0) != encap_type) { in xfrm_input()
611 if (x->repl->check(x, skb, seq)) { in xfrm_input()
616 if (xfrm_state_check_expire(x)) { in xfrm_input()
621 spin_unlock(&x->lock); in xfrm_input()
623 if (xfrm_tunnel_check(skb, x, family)) { in xfrm_input()
628 seq_hi = htonl(xfrm_replay_seqhi(x, seq)); in xfrm_input()
636 nexthdr = x->type_offload->input_tail(x, skb); in xfrm_input()
638 nexthdr = x->type->input(x, skb); in xfrm_input()
645 spin_lock(&x->lock); in xfrm_input()
648 xfrm_audit_state_icvfail(x, skb, in xfrm_input()
649 x->type->proto); in xfrm_input()
650 x->stats.integrity_failed++; in xfrm_input()
659 if (async && x->repl->recheck(x, skb, seq)) { in xfrm_input()
664 x->repl->advance(x, seq); in xfrm_input()
666 x->curlft.bytes += skb->len; in xfrm_input()
667 x->curlft.packets++; in xfrm_input()
669 spin_unlock(&x->lock); in xfrm_input()
673 inner_mode = &x->inner_mode; in xfrm_input()
675 if (x->sel.family == AF_UNSPEC) { in xfrm_input()
676 inner_mode = xfrm_ip2inner_mode(x, XFRM_MODE_SKB_CB(skb)->protocol); in xfrm_input()
683 if (xfrm_inner_mode_input(x, inner_mode, skb)) { in xfrm_input()
688 if (x->outer_mode.flags & XFRM_MODE_FLAG_TUNNEL) { in xfrm_input()
697 daddr = &x->id.daddr; in xfrm_input()
698 family = x->outer_mode.family; in xfrm_input()
708 err = xfrm_rcv_cb(skb, family, x->type->proto, 0); in xfrm_input()
728 afinfo = xfrm_state_afinfo_get_rcu(x->inner_mode.family); in xfrm_input()
745 spin_unlock(&x->lock); in xfrm_input()
747 xfrm_rcv_cb(skb, family, x && x->type ? x->type->proto : nexthdr, -1); in xfrm_input()