diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2009-12-09 14:45:25 +0000 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2009-12-09 14:45:25 +0000 |
commit | 770bfbbb3473fc0574bd47944aea00a7eb53caf3 (patch) | |
tree | fb35f0089953cb892de92d8275337d3f3d73bec1 | |
parent | 58c4a2ed5b63919fd9a7d78a14bd2b93eca96b05 (diff) | |
download | aports-770bfbbb3473fc0574bd47944aea00a7eb53caf3.tar.bz2 aports-770bfbbb3473fc0574bd47944aea00a7eb53caf3.tar.xz |
main/ipsec-tools: initial contact fix
Reset remote node contacted state if all related security associates
are purged.
Fixes issues with unstable internet connections.
-rw-r--r-- | main/ipsec-tools/APKBUILD | 8 | ||||
-rw-r--r-- | main/ipsec-tools/initial-contact-fix.diff | 69 |
2 files changed, 75 insertions, 2 deletions
diff --git a/main/ipsec-tools/APKBUILD b/main/ipsec-tools/APKBUILD index ef2e24923c..4a5203d988 100644 --- a/main/ipsec-tools/APKBUILD +++ b/main/ipsec-tools/APKBUILD @@ -2,7 +2,7 @@ pkgname=ipsec-tools pkgver=0.8_alpha20090903 _myver=0.8-alpha20090903 -pkgrel=2 +pkgrel=3 pkgdesc="User-space IPsec tools for various IPsec implementations" url="http://ipsec-tools.sourceforge.net/" license="BSD" @@ -14,6 +14,7 @@ source="http://downloads.sourceforge.net/$pkgname/$pkgname-$_myver.tar.gz racoon.confd 50-reverse-connect.patch 60-debug-quick.patch + initial-contact-fix.diff " build() { @@ -22,6 +23,8 @@ build() { msg "Applying $i..." patch -p1 -i $i || return 1 done + patch -p0 -i "$srcdir"/initial-contact-fix.diff || return 1 + sed -i 's:-Werror::g' configure ./configure --prefix=/usr \ @@ -48,4 +51,5 @@ md5sums="8ec28d4e89c0f5e49ae2caa7463fbcfd ipsec-tools-0.8-alpha20090903.tar.gz 860e8ca1d8c793dc3055b94fd88f02a3 racoon.initd 2d00250cf72da7f2f559c91b65a48747 racoon.confd 13bda94a598aabf593280e04ea16065d 50-reverse-connect.patch -baa13d7f0f48955c792f7fcd42a8587a 60-debug-quick.patch" +baa13d7f0f48955c792f7fcd42a8587a 60-debug-quick.patch +fa96631e4471096d93af0e74968f6d16 initial-contact-fix.diff" diff --git a/main/ipsec-tools/initial-contact-fix.diff b/main/ipsec-tools/initial-contact-fix.diff new file mode 100644 index 0000000000..8eef373156 --- /dev/null +++ b/main/ipsec-tools/initial-contact-fix.diff @@ -0,0 +1,69 @@ +Index: src/racoon/admin.c +=================================================================== +RCS file: /cvsroot/src/crypto/dist/ipsec-tools/src/racoon/admin.c,v +retrieving revision 1.32 +diff -u -r1.32 admin.c +--- src/racoon/admin.c 3 Sep 2009 09:29:07 -0000 1.32 ++++ src/racoon/admin.c 9 Dec 2009 12:58:48 -0000 +@@ -299,9 +299,8 @@ + break; + + case ADMIN_DELETE_SA: { +- struct ph1handle *iph1; +- struct ph1selector sel; + char *loc, *rem; ++ struct ph1selector sel; + + memset(&sel, 0, sizeof(sel)); + sel.local = (struct sockaddr *) +@@ -319,6 +318,7 @@ + plog(LLV_INFO, LOCATION, NULL, + "admin delete-sa %s %s\n", loc, rem); + enumph1(&sel, admin_ph1_delete_sa, NULL); ++ remcontacted(sel.remote); + + racoon_free(loc); + racoon_free(rem); +Index: src/racoon/handler.c +=================================================================== +RCS file: /cvsroot/src/crypto/dist/ipsec-tools/src/racoon/handler.c,v +retrieving revision 1.31 +diff -u -r1.31 handler.c +--- src/racoon/handler.c 22 Nov 2009 19:34:55 -0000 1.31 ++++ src/racoon/handler.c 9 Dec 2009 12:58:48 -0000 +@@ -966,6 +966,20 @@ + } + + void ++remcontacted(remote) ++ struct sockaddr *remote; ++{ ++ struct contacted *p; ++ ++ LIST_FOREACH(p, &ctdtree, chain) { ++ if (cmpsaddr(remote, p->remote) == 0) { ++ LIST_REMOVE(p, chain); ++ break; ++ } ++ } ++} ++ ++void + initctdtree() + { + LIST_INIT(&ctdtree); +Index: src/racoon/handler.h +=================================================================== +RCS file: /cvsroot/src/crypto/dist/ipsec-tools/src/racoon/handler.h,v +retrieving revision 1.22 +diff -u -r1.22 handler.h +--- src/racoon/handler.h 3 Sep 2009 09:29:07 -0000 1.22 ++++ src/racoon/handler.h 9 Dec 2009 12:58:48 -0000 +@@ -518,6 +518,7 @@ + + extern struct contacted *getcontacted __P((struct sockaddr *)); + extern int inscontacted __P((struct sockaddr *)); ++extern void remcontacted __P((struct sockaddr *)); + extern void initctdtree __P((void)); + + extern int check_recvdpkt __P((struct sockaddr *, |