Lines Matching refs:afinfo

102 	struct xfrm_policy_afinfo *afinfo;  in xfrm_policy_get_afinfo()  local
107 afinfo = rcu_dereference(xfrm_policy_afinfo[family]); in xfrm_policy_get_afinfo()
108 if (unlikely(!afinfo)) in xfrm_policy_get_afinfo()
110 return afinfo; in xfrm_policy_get_afinfo()
113 static void xfrm_policy_put_afinfo(struct xfrm_policy_afinfo *afinfo) in xfrm_policy_put_afinfo() argument
123 struct xfrm_policy_afinfo *afinfo; in __xfrm_dst_lookup() local
126 afinfo = xfrm_policy_get_afinfo(family); in __xfrm_dst_lookup()
127 if (unlikely(afinfo == NULL)) in __xfrm_dst_lookup()
130 dst = afinfo->dst_lookup(net, tos, saddr, daddr); in __xfrm_dst_lookup()
132 xfrm_policy_put_afinfo(afinfo); in __xfrm_dst_lookup()
1383 struct xfrm_policy_afinfo *afinfo = xfrm_policy_get_afinfo(family); in xfrm_get_saddr() local
1385 if (unlikely(afinfo == NULL)) in xfrm_get_saddr()
1387 err = afinfo->get_saddr(net, local, remote); in xfrm_get_saddr()
1388 xfrm_policy_put_afinfo(afinfo); in xfrm_get_saddr()
1494 struct xfrm_policy_afinfo *afinfo = xfrm_policy_get_afinfo(family); in xfrm_get_tos() local
1497 if (!afinfo) in xfrm_get_tos()
1500 tos = afinfo->get_tos(fl); in xfrm_get_tos()
1502 xfrm_policy_put_afinfo(afinfo); in xfrm_get_tos()
1559 struct xfrm_policy_afinfo *afinfo = xfrm_policy_get_afinfo(family); in xfrm_alloc_dst() local
1563 if (!afinfo) in xfrm_alloc_dst()
1585 if (afinfo->init_dst) in xfrm_alloc_dst()
1586 afinfo->init_dst(net, xdst); in xfrm_alloc_dst()
1590 xfrm_policy_put_afinfo(afinfo); in xfrm_alloc_dst()
1598 struct xfrm_policy_afinfo *afinfo = in xfrm_init_path() local
1602 if (!afinfo) in xfrm_init_path()
1605 err = afinfo->init_path(path, dst, nfheader_len); in xfrm_init_path()
1607 xfrm_policy_put_afinfo(afinfo); in xfrm_init_path()
1615 struct xfrm_policy_afinfo *afinfo = in xfrm_fill_dst() local
1619 if (!afinfo) in xfrm_fill_dst()
1622 err = afinfo->fill_dst(xdst, dev, fl); in xfrm_fill_dst()
1624 xfrm_policy_put_afinfo(afinfo); in xfrm_fill_dst()
1712 dst1->output = inner_mode->afinfo->output; in xfrm_bundle_create()
2168 struct xfrm_policy_afinfo *afinfo = xfrm_policy_get_afinfo(family); in make_blackhole() local
2171 if (!afinfo) { in make_blackhole()
2175 ret = afinfo->blackhole_route(net, dst_orig); in make_blackhole()
2177 xfrm_policy_put_afinfo(afinfo); in make_blackhole()
2418 struct xfrm_policy_afinfo *afinfo = xfrm_policy_get_afinfo(family); in __xfrm_decode_session() local
2421 if (unlikely(afinfo == NULL)) in __xfrm_decode_session()
2424 afinfo->decode_session(skb, fl, reverse); in __xfrm_decode_session()
2426 xfrm_policy_put_afinfo(afinfo); in __xfrm_decode_session()
2807 int xfrm_policy_register_afinfo(struct xfrm_policy_afinfo *afinfo) in xfrm_policy_register_afinfo() argument
2810 if (unlikely(afinfo == NULL)) in xfrm_policy_register_afinfo()
2812 if (unlikely(afinfo->family >= NPROTO)) in xfrm_policy_register_afinfo()
2815 if (unlikely(xfrm_policy_afinfo[afinfo->family] != NULL)) in xfrm_policy_register_afinfo()
2818 struct dst_ops *dst_ops = afinfo->dst_ops; in xfrm_policy_register_afinfo()
2833 if (likely(afinfo->garbage_collect == NULL)) in xfrm_policy_register_afinfo()
2834 afinfo->garbage_collect = xfrm_garbage_collect_deferred; in xfrm_policy_register_afinfo()
2835 rcu_assign_pointer(xfrm_policy_afinfo[afinfo->family], afinfo); in xfrm_policy_register_afinfo()
2843 int xfrm_policy_unregister_afinfo(struct xfrm_policy_afinfo *afinfo) in xfrm_policy_unregister_afinfo() argument
2846 if (unlikely(afinfo == NULL)) in xfrm_policy_unregister_afinfo()
2848 if (unlikely(afinfo->family >= NPROTO)) in xfrm_policy_unregister_afinfo()
2851 if (likely(xfrm_policy_afinfo[afinfo->family] != NULL)) { in xfrm_policy_unregister_afinfo()
2852 if (unlikely(xfrm_policy_afinfo[afinfo->family] != afinfo)) in xfrm_policy_unregister_afinfo()
2855 RCU_INIT_POINTER(xfrm_policy_afinfo[afinfo->family], in xfrm_policy_unregister_afinfo()
2860 struct dst_ops *dst_ops = afinfo->dst_ops; in xfrm_policy_unregister_afinfo()
2868 afinfo->garbage_collect = NULL; in xfrm_policy_unregister_afinfo()