Lines Matching refs:afinfo
24 int xfrm_input_register_afinfo(struct xfrm_input_afinfo *afinfo) in xfrm_input_register_afinfo() argument
28 if (unlikely(afinfo == NULL)) in xfrm_input_register_afinfo()
30 if (unlikely(afinfo->family >= NPROTO)) in xfrm_input_register_afinfo()
33 if (unlikely(xfrm_input_afinfo[afinfo->family] != NULL)) in xfrm_input_register_afinfo()
36 rcu_assign_pointer(xfrm_input_afinfo[afinfo->family], afinfo); in xfrm_input_register_afinfo()
42 int xfrm_input_unregister_afinfo(struct xfrm_input_afinfo *afinfo) in xfrm_input_unregister_afinfo() argument
46 if (unlikely(afinfo == NULL)) in xfrm_input_unregister_afinfo()
48 if (unlikely(afinfo->family >= NPROTO)) in xfrm_input_unregister_afinfo()
51 if (likely(xfrm_input_afinfo[afinfo->family] != NULL)) { in xfrm_input_unregister_afinfo()
52 if (unlikely(xfrm_input_afinfo[afinfo->family] != afinfo)) in xfrm_input_unregister_afinfo()
55 RCU_INIT_POINTER(xfrm_input_afinfo[afinfo->family], NULL); in xfrm_input_unregister_afinfo()
65 struct xfrm_input_afinfo *afinfo; in xfrm_input_get_afinfo() local
70 afinfo = rcu_dereference(xfrm_input_afinfo[family]); in xfrm_input_get_afinfo()
71 if (unlikely(!afinfo)) in xfrm_input_get_afinfo()
73 return afinfo; in xfrm_input_get_afinfo()
76 static void xfrm_input_put_afinfo(struct xfrm_input_afinfo *afinfo) in xfrm_input_put_afinfo() argument
85 struct xfrm_input_afinfo *afinfo = xfrm_input_get_afinfo(family); in xfrm_rcv_cb() local
87 if (!afinfo) in xfrm_rcv_cb()
90 ret = afinfo->callback(skb, protocol, err); in xfrm_rcv_cb()
91 xfrm_input_put_afinfo(afinfo); in xfrm_rcv_cb()
167 err = x->outer_mode->afinfo->extract_input(x, skb); in xfrm_prepare_input()
177 skb->protocol = inner_mode->afinfo->eth_proto; in xfrm_prepare_input()
201 family = x->outer_mode->afinfo->family; in xfrm_input()
357 family = x->outer_mode->afinfo->family; in xfrm_input()
377 return x->inner_mode->afinfo->transport_finish(skb, async); in xfrm_input()