xfrm_translator
extern int xfrm_register_translator(struct xfrm_translator *xtr);
extern int xfrm_unregister_translator(struct xfrm_translator *xtr);
extern struct xfrm_translator *xfrm_get_translator(void);
extern void xfrm_put_translator(struct xfrm_translator *xtr);
static inline struct xfrm_translator *xfrm_get_translator(void)
static inline void xfrm_put_translator(struct xfrm_translator *xtr)
static struct xfrm_translator xfrm_translator = {
return xfrm_register_translator(&xfrm_translator);
xfrm_unregister_translator(&xfrm_translator);
static struct xfrm_translator __rcu *xfrm_translator;
struct xfrm_translator *xfrm_get_translator(void)
struct xfrm_translator *xtr;
xtr = rcu_dereference(xfrm_translator);
void xfrm_put_translator(struct xfrm_translator *xtr)
int xfrm_register_translator(struct xfrm_translator *xtr)
if (unlikely(xfrm_translator != NULL))
rcu_assign_pointer(xfrm_translator, xtr);
int xfrm_unregister_translator(struct xfrm_translator *xtr)
if (likely(xfrm_translator != NULL)) {
if (rcu_access_pointer(xfrm_translator) != xtr)
RCU_INIT_POINTER(xfrm_translator, NULL);
struct xfrm_translator *xtr = xfrm_get_translator();
struct xfrm_translator *xtr;
struct xfrm_translator *xtr;
struct xfrm_translator *xtr;
struct xfrm_translator *xtr;
struct xfrm_translator *xtr = xfrm_get_translator();