Page MenuHomeFreeBSD

D36536.diff
No OneTemporary

D36536.diff

diff --git a/sys/net/if_ipsec.c b/sys/net/if_ipsec.c
--- a/sys/net/if_ipsec.c
+++ b/sys/net/if_ipsec.c
@@ -1017,6 +1017,8 @@
struct epoch_tracker et;
struct secpolicy *sp[IPSEC_SPCOUNT];
int i;
+ u_int family = src->sa_family;
+ struct secasindex *saidx;
sx_assert(&ipsec_ioctl_sx, SA_XLOCKED);
@@ -1032,8 +1034,9 @@
ipsec_delete_tunnel(sc);
for (i = 0; i < IPSEC_SPCOUNT; i++)
sc->sp[i] = sp[i];
- sc->family = src->sa_family;
- CK_LIST_INSERT_HEAD(ipsec_srchash(src), sc, srchash);
+ sc->family = family;
+ saidx = ipsec_getsaidx(sc, IPSEC_DIR_OUTBOUND, sc->family);
+ CK_LIST_INSERT_HEAD(ipsec_srchash(&saidx->src.sa), sc, srchash);
} else {
sc->ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
return (ENOMEM);

File Metadata

Mime Type
text/plain
Expires
Sun, May 24, 3:46 AM (17 h, 23 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33463676
Default Alt Text
D36536.diff (742 B)

Event Timeline