diff options
Diffstat (limited to 'net/xfrm/xfrm_state.c')
-rw-r--r-- | net/xfrm/xfrm_state.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c index a26ef6952c30..622e92a08d0b 100644 --- a/net/xfrm/xfrm_state.c +++ b/net/xfrm/xfrm_state.c | |||
@@ -728,6 +728,44 @@ xfrm_find_acq(u8 mode, u32 reqid, u8 proto, | |||
728 | } | 728 | } |
729 | EXPORT_SYMBOL(xfrm_find_acq); | 729 | EXPORT_SYMBOL(xfrm_find_acq); |
730 | 730 | ||
731 | #ifdef CONFIG_XFRM_SUB_POLICY | ||
732 | int | ||
733 | xfrm_tmpl_sort(struct xfrm_tmpl **dst, struct xfrm_tmpl **src, int n, | ||
734 | unsigned short family) | ||
735 | { | ||
736 | int err = 0; | ||
737 | struct xfrm_state_afinfo *afinfo = xfrm_state_get_afinfo(family); | ||
738 | if (!afinfo) | ||
739 | return -EAFNOSUPPORT; | ||
740 | |||
741 | spin_lock_bh(&xfrm_state_lock); | ||
742 | if (afinfo->tmpl_sort) | ||
743 | err = afinfo->tmpl_sort(dst, src, n); | ||
744 | spin_unlock_bh(&xfrm_state_lock); | ||
745 | xfrm_state_put_afinfo(afinfo); | ||
746 | return err; | ||
747 | } | ||
748 | EXPORT_SYMBOL(xfrm_tmpl_sort); | ||
749 | |||
750 | int | ||
751 | xfrm_state_sort(struct xfrm_state **dst, struct xfrm_state **src, int n, | ||
752 | unsigned short family) | ||
753 | { | ||
754 | int err = 0; | ||
755 | struct xfrm_state_afinfo *afinfo = xfrm_state_get_afinfo(family); | ||
756 | if (!afinfo) | ||
757 | return -EAFNOSUPPORT; | ||
758 | |||
759 | spin_lock_bh(&xfrm_state_lock); | ||
760 | if (afinfo->state_sort) | ||
761 | err = afinfo->state_sort(dst, src, n); | ||
762 | spin_unlock_bh(&xfrm_state_lock); | ||
763 | xfrm_state_put_afinfo(afinfo); | ||
764 | return err; | ||
765 | } | ||
766 | EXPORT_SYMBOL(xfrm_state_sort); | ||
767 | #endif | ||
768 | |||
731 | /* Silly enough, but I'm lazy to build resolution list */ | 769 | /* Silly enough, but I'm lazy to build resolution list */ |
732 | 770 | ||
733 | static struct xfrm_state *__xfrm_find_acq_byseq(u32 seq) | 771 | static struct xfrm_state *__xfrm_find_acq_byseq(u32 seq) |