>From 2831af26b9783da9b311e8442b0cd19df3f4b422 Mon Sep 17 00:00:00 2001 From: Alex Badea Date: Thu, 18 Jun 2009 16:41:06 +0300 Subject: [PATCH] xfrm: move xfrm_replay_{check,advance} to their own source file --- src/net/xfrm/Makefile | 2 +- src/net/xfrm/xfrm_replay.c | 46 ++++++++++++++++++++++++++++++++++++++++++++ src/net/xfrm/xfrm_state.c | 44 ------------------------------------------ 3 files changed, 47 insertions(+), 45 deletions(-) create mode 100644 src/net/xfrm/xfrm_replay.c diff --git a/src/net/xfrm/Makefile b/src/net/xfrm/Makefile index 3d076b5..5540fc5 100644 --- a/src/net/xfrm/Makefile +++ b/src/net/xfrm/Makefile @@ -3,6 +3,6 @@ # obj-$(CONFIG_CAVIUM) += xfrm_cavium_stub.o obj-$(CONFIG_XFRM) += xfrm_policy.o xfrm_state.o xfrm_input.o xfrm_algo.o xfrm_output.o \ - xfrm_export.o + xfrm_replay.o xfrm_export.o obj-$(CONFIG_XFRM_USER) += xfrm_user.o diff --git a/src/net/xfrm/xfrm_replay.c b/src/net/xfrm/xfrm_replay.c new file mode 100644 index 0000000..6a7350d --- /dev/null +++ b/src/net/xfrm/xfrm_replay.c @@ -0,0 +1,46 @@ +#include + +int xfrm_replay_check(struct xfrm_state *x, u32 seq) +{ + u32 diff; + + seq = ntohl(seq); + + if (unlikely(seq == 0)) + return -EINVAL; + + if (likely(seq > x->replay.seq)) + return 0; + + diff = x->replay.seq - seq; + if (diff >= x->props.replay_window) { + x->stats.replay_window++; + return -EINVAL; + } + + if (x->replay.bitmap & (1U << diff)) { + x->stats.replay++; + return -EINVAL; + } + return 0; +} + +void xfrm_replay_advance(struct xfrm_state *x, u32 seq) +{ + u32 diff; + + seq = ntohl(seq); + + if (seq > x->replay.seq) { + diff = seq - x->replay.seq; + if (diff < x->props.replay_window) + x->replay.bitmap = ((x->replay.bitmap) << diff) | 1; + else + x->replay.bitmap = 1; + x->replay.seq = seq; + } else { + diff = x->replay.seq - seq; + x->replay.bitmap |= (1U << diff); + } +} + diff --git a/src/net/xfrm/xfrm_state.c b/src/net/xfrm/xfrm_state.c index e43c5e3..3afa72a 100644 --- a/src/net/xfrm/xfrm_state.c +++ b/src/net/xfrm/xfrm_state.c @@ -671,50 +671,6 @@ out: } -int xfrm_replay_check(struct xfrm_state *x, u32 seq) -{ - u32 diff; - - seq = ntohl(seq); - - if (unlikely(seq == 0)) - return -EINVAL; - - if (likely(seq > x->replay.seq)) - return 0; - - diff = x->replay.seq - seq; - if (diff >= x->props.replay_window) { - x->stats.replay_window++; - return -EINVAL; - } - - if (x->replay.bitmap & (1U << diff)) { - x->stats.replay++; - return -EINVAL; - } - return 0; -} - -void xfrm_replay_advance(struct xfrm_state *x, u32 seq) -{ - u32 diff; - - seq = ntohl(seq); - - if (seq > x->replay.seq) { - diff = seq - x->replay.seq; - if (diff < x->props.replay_window) - x->replay.bitmap = ((x->replay.bitmap) << diff) | 1; - else - x->replay.bitmap = 1; - x->replay.seq = seq; - } else { - diff = x->replay.seq - seq; - x->replay.bitmap |= (1U << diff); - } -} - int xfrm_check_selectors(struct xfrm_state **x, int n, struct flowi *fl) { int i; -- 1.5.4.3