X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=include%2Fnet%2Fxfrm.h;h=fb5654a8ca3cee1c65923c105f3760d607eaa1de;hb=8ab47d3ec77d94ad9a6bb01efd696e1e34cfe80d;hp=afa5730fb3bd2ff810f63f861f1b52b29e34c965;hpb=53d8ab29f8f6d67e37857b68189b38fa3d87dd8e;p=~andy%2Flinux diff --git a/include/net/xfrm.h b/include/net/xfrm.h index afa5730fb3b..fb5654a8ca3 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h @@ -1648,6 +1648,11 @@ static inline int xfrm_aevent_is_on(struct net *net) } #endif +static inline int aead_len(struct xfrm_algo_aead *alg) +{ + return sizeof(*alg) + ((alg->alg_key_len + 7) / 8); +} + static inline int xfrm_alg_len(const struct xfrm_algo *alg) { return sizeof(*alg) + ((alg->alg_key_len + 7) / 8); @@ -1686,6 +1691,12 @@ static inline int xfrm_replay_clone(struct xfrm_state *x, return 0; } +static inline struct xfrm_algo_aead *xfrm_algo_aead_clone(struct xfrm_algo_aead *orig) +{ + return kmemdup(orig, aead_len(orig), GFP_KERNEL); +} + + static inline struct xfrm_algo *xfrm_algo_clone(struct xfrm_algo *orig) { return kmemdup(orig, xfrm_alg_len(orig), GFP_KERNEL);