Lines Matching refs:x
175 static int xfrm4_remove_beet_encap(struct xfrm_state *x, struct sk_buff *skb) in xfrm4_remove_beet_encap() argument
212 iph->daddr = x->sel.daddr.a4; in xfrm4_remove_beet_encap()
213 iph->saddr = x->sel.saddr.a4; in xfrm4_remove_beet_encap()
229 static int xfrm4_remove_tunnel_encap(struct xfrm_state *x, struct sk_buff *skb) in xfrm4_remove_tunnel_encap() argument
243 if (x->props.flags & XFRM_STATE_DECAP_DSCP) in xfrm4_remove_tunnel_encap()
245 if (!(x->props.flags & XFRM_STATE_NOECN)) in xfrm4_remove_tunnel_encap()
267 static int xfrm6_remove_tunnel_encap(struct xfrm_state *x, struct sk_buff *skb) in xfrm6_remove_tunnel_encap() argument
280 if (x->props.flags & XFRM_STATE_DECAP_DSCP) in xfrm6_remove_tunnel_encap()
282 if (!(x->props.flags & XFRM_STATE_NOECN)) in xfrm6_remove_tunnel_encap()
296 static int xfrm6_remove_beet_encap(struct xfrm_state *x, struct sk_buff *skb) in xfrm6_remove_beet_encap() argument
314 ip6h->daddr = x->sel.daddr.in6; in xfrm6_remove_beet_encap()
315 ip6h->saddr = x->sel.saddr.in6; in xfrm6_remove_beet_encap()
332 xfrm_inner_mode_encap_remove(struct xfrm_state *x, in xfrm_inner_mode_encap_remove() argument
339 return xfrm4_remove_beet_encap(x, skb); in xfrm_inner_mode_encap_remove()
341 return xfrm6_remove_beet_encap(x, skb); in xfrm_inner_mode_encap_remove()
345 return xfrm4_remove_tunnel_encap(x, skb); in xfrm_inner_mode_encap_remove()
347 return xfrm6_remove_tunnel_encap(x, skb); in xfrm_inner_mode_encap_remove()
355 static int xfrm_prepare_input(struct xfrm_state *x, struct sk_buff *skb) in xfrm_prepare_input() argument
357 const struct xfrm_mode *inner_mode = &x->inner_mode; in xfrm_prepare_input()
359 switch (x->outer_mode.family) { in xfrm_prepare_input()
371 if (x->sel.family == AF_UNSPEC) { in xfrm_prepare_input()
372 inner_mode = xfrm_ip2inner_mode(x, XFRM_MODE_SKB_CB(skb)->protocol); in xfrm_prepare_input()
389 return xfrm_inner_mode_encap_remove(x, inner_mode, skb); in xfrm_prepare_input()
400 static int xfrm4_transport_input(struct xfrm_state *x, struct sk_buff *skb) in xfrm4_transport_input() argument
414 static int xfrm6_transport_input(struct xfrm_state *x, struct sk_buff *skb) in xfrm6_transport_input() argument
434 static int xfrm_inner_mode_input(struct xfrm_state *x, in xfrm_inner_mode_input() argument
441 return xfrm_prepare_input(x, skb); in xfrm_inner_mode_input()
444 return xfrm4_transport_input(x, skb); in xfrm_inner_mode_input()
446 return xfrm6_transport_input(x, skb); in xfrm_inner_mode_input()
467 struct xfrm_state *x = NULL; in xfrm_input() local
479 x = xfrm_input_state(skb); in xfrm_input()
481 if (unlikely(x->km.state != XFRM_STATE_VALID)) { in xfrm_input()
482 if (x->km.state == XFRM_STATE_ACQ) in xfrm_input()
493 family = x->outer_mode.family; in xfrm_input()
517 xfrm_audit_state_icvfail(x, skb, in xfrm_input()
518 x->type->proto); in xfrm_input()
519 x->stats.integrity_failed++; in xfrm_input()
580 x = xfrm_state_lookup(net, mark, daddr, spi, nexthdr, family); in xfrm_input()
581 if (x == NULL) { in xfrm_input()
588 skb->mark = xfrm_smark_get(skb->mark, x); in xfrm_input()
590 sp->xvec[sp->len++] = x; in xfrm_input()
599 spin_lock(&x->lock); in xfrm_input()
601 if (unlikely(x->km.state != XFRM_STATE_VALID)) { in xfrm_input()
602 if (x->km.state == XFRM_STATE_ACQ) in xfrm_input()
610 if ((x->encap ? x->encap->encap_type : 0) != encap_type) { in xfrm_input()
615 if (x->repl->check(x, skb, seq)) { in xfrm_input()
620 if (xfrm_state_check_expire(x)) { in xfrm_input()
625 spin_unlock(&x->lock); in xfrm_input()
627 if (xfrm_tunnel_check(skb, x, family)) { in xfrm_input()
632 seq_hi = htonl(xfrm_replay_seqhi(x, seq)); in xfrm_input()
640 nexthdr = x->type_offload->input_tail(x, skb); in xfrm_input()
642 nexthdr = x->type->input(x, skb); in xfrm_input()
649 spin_lock(&x->lock); in xfrm_input()
652 xfrm_audit_state_icvfail(x, skb, in xfrm_input()
653 x->type->proto); in xfrm_input()
654 x->stats.integrity_failed++; in xfrm_input()
663 if (x->repl->recheck(x, skb, seq)) { in xfrm_input()
668 x->repl->advance(x, seq); in xfrm_input()
670 x->curlft.bytes += skb->len; in xfrm_input()
671 x->curlft.packets++; in xfrm_input()
673 spin_unlock(&x->lock); in xfrm_input()
677 inner_mode = &x->inner_mode; in xfrm_input()
679 if (x->sel.family == AF_UNSPEC) { in xfrm_input()
680 inner_mode = xfrm_ip2inner_mode(x, XFRM_MODE_SKB_CB(skb)->protocol); in xfrm_input()
687 if (xfrm_inner_mode_input(x, inner_mode, skb)) { in xfrm_input()
692 if (x->outer_mode.flags & XFRM_MODE_FLAG_TUNNEL) { in xfrm_input()
701 daddr = &x->id.daddr; in xfrm_input()
702 family = x->outer_mode.family; in xfrm_input()
712 err = xfrm_rcv_cb(skb, family, x->type->proto, 0); in xfrm_input()
732 afinfo = xfrm_state_afinfo_get_rcu(x->inner_mode.family); in xfrm_input()
749 spin_unlock(&x->lock); in xfrm_input()
751 xfrm_rcv_cb(skb, family, x && x->type ? x->type->proto : nexthdr, -1); in xfrm_input()