xfrm_state_afinfo
int xfrm_state_register_afinfo(struct xfrm_state_afinfo *afinfo);
int xfrm_state_unregister_afinfo(struct xfrm_state_afinfo *afinfo);
struct xfrm_state_afinfo *xfrm_state_get_afinfo(unsigned int family);
struct xfrm_state_afinfo *xfrm_state_afinfo_get_rcu(unsigned int family);
static struct xfrm_state_afinfo xfrm4_state_afinfo = {
static struct xfrm_state_afinfo xfrm6_state_afinfo = {
const struct xfrm_state_afinfo *afinfo;
struct xfrm_state_afinfo *afinfo;
const struct xfrm_state_afinfo *afinfo;
static struct xfrm_state_afinfo __rcu *xfrm_state_afinfo[NPROTO];
struct xfrm_state_afinfo *afinfo = xfrm_state_get_afinfo(family);
struct xfrm_state_afinfo *afinfo = xfrm_state_get_afinfo(family);
int xfrm_state_register_afinfo(struct xfrm_state_afinfo *afinfo)
if (unlikely(xfrm_state_afinfo[afinfo->family] != NULL))
rcu_assign_pointer(xfrm_state_afinfo[afinfo->family], afinfo);
int xfrm_state_unregister_afinfo(struct xfrm_state_afinfo *afinfo)
if (likely(xfrm_state_afinfo[afinfo->family] != NULL)) {
if (rcu_access_pointer(xfrm_state_afinfo[family]) != afinfo)
RCU_INIT_POINTER(xfrm_state_afinfo[afinfo->family], NULL);
struct xfrm_state_afinfo *xfrm_state_afinfo_get_rcu(unsigned int family)
return rcu_dereference(xfrm_state_afinfo[family]);
struct xfrm_state_afinfo *xfrm_state_get_afinfo(unsigned int family)
struct xfrm_state_afinfo *afinfo;
afinfo = rcu_dereference(xfrm_state_afinfo[family]);
struct xfrm_state_afinfo *afinfo;
struct xfrm_state_afinfo *afinfo = xfrm_state_get_afinfo(family);
struct xfrm_state_afinfo *afinfo = xfrm_state_get_afinfo(family);
struct xfrm_state_afinfo *afinfo;