diff options
author | Steffen Klassert <steffen.klassert@secunet.com> | 2011-03-07 19:08:32 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-03-13 23:22:30 -0400 |
commit | 9fdc4883d92d20842c5acea77a4a21bb1574b495 (patch) | |
tree | 87019e64093d90a4f2b42149231d0ad3a864c5f9 /include/net/xfrm.h | |
parent | d212a4c29096484e5e83b5006e695add126260af (diff) |
xfrm: Move IPsec replay detection functions to a separate file
To support multiple versions of replay detection, we move the replay
detection functions to a separate file and make them accessible
via function pointers contained in the struct xfrm_replay.
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/xfrm.h')
-rw-r--r-- | include/net/xfrm.h | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/include/net/xfrm.h b/include/net/xfrm.h index cb6d9b3fc55e..41def092b824 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h | |||
@@ -192,6 +192,9 @@ struct xfrm_state { | |||
192 | struct xfrm_replay_state preplay; | 192 | struct xfrm_replay_state preplay; |
193 | struct xfrm_replay_state_esn *preplay_esn; | 193 | struct xfrm_replay_state_esn *preplay_esn; |
194 | 194 | ||
195 | /* The functions for replay detection. */ | ||
196 | struct xfrm_replay *repl; | ||
197 | |||
195 | /* internal flag that only holds state for delayed aevent at the | 198 | /* internal flag that only holds state for delayed aevent at the |
196 | * moment | 199 | * moment |
197 | */ | 200 | */ |
@@ -261,6 +264,15 @@ struct km_event { | |||
261 | struct net *net; | 264 | struct net *net; |
262 | }; | 265 | }; |
263 | 266 | ||
267 | struct xfrm_replay { | ||
268 | void (*advance)(struct xfrm_state *x, __be32 net_seq); | ||
269 | int (*check)(struct xfrm_state *x, | ||
270 | struct sk_buff *skb, | ||
271 | __be32 net_seq); | ||
272 | void (*notify)(struct xfrm_state *x, int event); | ||
273 | int (*overflow)(struct xfrm_state *x, struct sk_buff *skb); | ||
274 | }; | ||
275 | |||
264 | struct net_device; | 276 | struct net_device; |
265 | struct xfrm_type; | 277 | struct xfrm_type; |
266 | struct xfrm_dst; | 278 | struct xfrm_dst; |
@@ -693,6 +705,8 @@ extern void xfrm_audit_state_delete(struct xfrm_state *x, int result, | |||
693 | u32 auid, u32 ses, u32 secid); | 705 | u32 auid, u32 ses, u32 secid); |
694 | extern void xfrm_audit_state_replay_overflow(struct xfrm_state *x, | 706 | extern void xfrm_audit_state_replay_overflow(struct xfrm_state *x, |
695 | struct sk_buff *skb); | 707 | struct sk_buff *skb); |
708 | extern void xfrm_audit_state_replay(struct xfrm_state *x, | ||
709 | struct sk_buff *skb, __be32 net_seq); | ||
696 | extern void xfrm_audit_state_notfound_simple(struct sk_buff *skb, u16 family); | 710 | extern void xfrm_audit_state_notfound_simple(struct sk_buff *skb, u16 family); |
697 | extern void xfrm_audit_state_notfound(struct sk_buff *skb, u16 family, | 711 | extern void xfrm_audit_state_notfound(struct sk_buff *skb, u16 family, |
698 | __be32 net_spi, __be32 net_seq); | 712 | __be32 net_spi, __be32 net_seq); |
@@ -725,6 +739,11 @@ static inline void xfrm_audit_state_replay_overflow(struct xfrm_state *x, | |||
725 | { | 739 | { |
726 | } | 740 | } |
727 | 741 | ||
742 | static inline void xfrm_audit_state_replay(struct xfrm_state *x, | ||
743 | struct sk_buff *skb, __be32 net_seq) | ||
744 | { | ||
745 | } | ||
746 | |||
728 | static inline void xfrm_audit_state_notfound_simple(struct sk_buff *skb, | 747 | static inline void xfrm_audit_state_notfound_simple(struct sk_buff *skb, |
729 | u16 family) | 748 | u16 family) |
730 | { | 749 | { |
@@ -1408,10 +1427,7 @@ extern int xfrm_state_delete(struct xfrm_state *x); | |||
1408 | extern int xfrm_state_flush(struct net *net, u8 proto, struct xfrm_audit *audit_info); | 1427 | extern int xfrm_state_flush(struct net *net, u8 proto, struct xfrm_audit *audit_info); |
1409 | extern void xfrm_sad_getinfo(struct net *net, struct xfrmk_sadinfo *si); | 1428 | extern void xfrm_sad_getinfo(struct net *net, struct xfrmk_sadinfo *si); |
1410 | extern void xfrm_spd_getinfo(struct net *net, struct xfrmk_spdinfo *si); | 1429 | extern void xfrm_spd_getinfo(struct net *net, struct xfrmk_spdinfo *si); |
1411 | extern int xfrm_replay_check(struct xfrm_state *x, | 1430 | extern int xfrm_init_replay(struct xfrm_state *x); |
1412 | struct sk_buff *skb, __be32 seq); | ||
1413 | extern void xfrm_replay_advance(struct xfrm_state *x, __be32 seq); | ||
1414 | extern void xfrm_replay_notify(struct xfrm_state *x, int event); | ||
1415 | extern int xfrm_state_mtu(struct xfrm_state *x, int mtu); | 1431 | extern int xfrm_state_mtu(struct xfrm_state *x, int mtu); |
1416 | extern int xfrm_init_state(struct xfrm_state *x); | 1432 | extern int xfrm_init_state(struct xfrm_state *x); |
1417 | extern int xfrm_prepare_input(struct xfrm_state *x, struct sk_buff *skb); | 1433 | extern int xfrm_prepare_input(struct xfrm_state *x, struct sk_buff *skb); |