|
@@ -1159,6 +1159,11 @@ static struct xfrm_state *xfrm_state_clone(struct xfrm_state *orig, int *errp)
|
|
}
|
|
}
|
|
x->props.aalgo = orig->props.aalgo;
|
|
x->props.aalgo = orig->props.aalgo;
|
|
|
|
|
|
|
|
+ if (orig->aead) {
|
|
|
|
+ x->aead = xfrm_algo_aead_clone(orig->aead);
|
|
|
|
+ if (!x->aead)
|
|
|
|
+ goto error;
|
|
|
|
+ }
|
|
if (orig->ealg) {
|
|
if (orig->ealg) {
|
|
x->ealg = xfrm_algo_clone(orig->ealg);
|
|
x->ealg = xfrm_algo_clone(orig->ealg);
|
|
if (!x->ealg)
|
|
if (!x->ealg)
|
|
@@ -1201,6 +1206,9 @@ static struct xfrm_state *xfrm_state_clone(struct xfrm_state *orig, int *errp)
|
|
x->props.flags = orig->props.flags;
|
|
x->props.flags = orig->props.flags;
|
|
x->props.extra_flags = orig->props.extra_flags;
|
|
x->props.extra_flags = orig->props.extra_flags;
|
|
|
|
|
|
|
|
+ x->tfcpad = orig->tfcpad;
|
|
|
|
+ x->replay_maxdiff = orig->replay_maxdiff;
|
|
|
|
+ x->replay_maxage = orig->replay_maxage;
|
|
x->curlft.add_time = orig->curlft.add_time;
|
|
x->curlft.add_time = orig->curlft.add_time;
|
|
x->km.state = orig->km.state;
|
|
x->km.state = orig->km.state;
|
|
x->km.seq = orig->km.seq;
|
|
x->km.seq = orig->km.seq;
|