diff options
| author | Jiri Kosina <jkosina@suse.cz> | 2011-04-26 04:22:15 -0400 |
|---|---|---|
| committer | Jiri Kosina <jkosina@suse.cz> | 2011-04-26 04:22:59 -0400 |
| commit | 07f9479a40cc778bc1462ada11f95b01360ae4ff (patch) | |
| tree | 0676cf38df3844004bb3ebfd99dfa67a4a8998f5 /net/xfrm/xfrm_state.c | |
| parent | 9d5e6bdb3013acfb311ab407eeca0b6a6a3dedbf (diff) | |
| parent | cd2e49e90f1cae7726c9a2c54488d881d7f1cd1c (diff) | |
Merge branch 'master' into for-next
Fast-forwarded to current state of Linus' tree as there are patches to be
applied for files that didn't exist on the old branch.
Diffstat (limited to 'net/xfrm/xfrm_state.c')
| -rw-r--r-- | net/xfrm/xfrm_state.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c index d575f0534868..dd78536d40de 100644 --- a/net/xfrm/xfrm_state.c +++ b/net/xfrm/xfrm_state.c | |||
| @@ -1181,6 +1181,12 @@ static struct xfrm_state *xfrm_state_clone(struct xfrm_state *orig, int *errp) | |||
| 1181 | goto error; | 1181 | goto error; |
| 1182 | } | 1182 | } |
| 1183 | 1183 | ||
| 1184 | if (orig->replay_esn) { | ||
| 1185 | err = xfrm_replay_clone(x, orig); | ||
| 1186 | if (err) | ||
| 1187 | goto error; | ||
| 1188 | } | ||
| 1189 | |||
| 1184 | memcpy(&x->mark, &orig->mark, sizeof(x->mark)); | 1190 | memcpy(&x->mark, &orig->mark, sizeof(x->mark)); |
| 1185 | 1191 | ||
| 1186 | err = xfrm_init_state(x); | 1192 | err = xfrm_init_state(x); |
| @@ -1907,7 +1913,7 @@ int xfrm_state_mtu(struct xfrm_state *x, int mtu) | |||
| 1907 | return res; | 1913 | return res; |
| 1908 | } | 1914 | } |
| 1909 | 1915 | ||
| 1910 | int xfrm_init_state(struct xfrm_state *x) | 1916 | int __xfrm_init_state(struct xfrm_state *x, bool init_replay) |
| 1911 | { | 1917 | { |
| 1912 | struct xfrm_state_afinfo *afinfo; | 1918 | struct xfrm_state_afinfo *afinfo; |
| 1913 | struct xfrm_mode *inner_mode; | 1919 | struct xfrm_mode *inner_mode; |
| @@ -1980,12 +1986,25 @@ int xfrm_init_state(struct xfrm_state *x) | |||
| 1980 | if (x->outer_mode == NULL) | 1986 | if (x->outer_mode == NULL) |
| 1981 | goto error; | 1987 | goto error; |
| 1982 | 1988 | ||
| 1989 | if (init_replay) { | ||
| 1990 | err = xfrm_init_replay(x); | ||
| 1991 | if (err) | ||
| 1992 | goto error; | ||
| 1993 | } | ||
| 1994 | |||
| 1983 | x->km.state = XFRM_STATE_VALID; | 1995 | x->km.state = XFRM_STATE_VALID; |
| 1984 | 1996 | ||
| 1985 | error: | 1997 | error: |
| 1986 | return err; | 1998 | return err; |
| 1987 | } | 1999 | } |
| 1988 | 2000 | ||
| 2001 | EXPORT_SYMBOL(__xfrm_init_state); | ||
| 2002 | |||
| 2003 | int xfrm_init_state(struct xfrm_state *x) | ||
| 2004 | { | ||
| 2005 | return __xfrm_init_state(x, true); | ||
| 2006 | } | ||
| 2007 | |||
| 1989 | EXPORT_SYMBOL(xfrm_init_state); | 2008 | EXPORT_SYMBOL(xfrm_init_state); |
| 1990 | 2009 | ||
| 1991 | int __net_init xfrm_state_init(struct net *net) | 2010 | int __net_init xfrm_state_init(struct net *net) |
