Module Name: src
Committed By: tteras
Date: Tue Sep 1 12:22:09 UTC 2009
Modified Files:
src/crypto/dist/ipsec-tools/src/racoon: nattraversal.c racoon.conf.5
vendorid.c
Log Message:
Check nat_traversal configuration from remote configuration candidates
when acting as responder. Enable NAT-T if any of the remote candidates
have NAT-T enabled.
To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 \
src/crypto/dist/ipsec-tools/src/racoon/nattraversal.c
cvs rdiff -u -r1.57 -r1.58 \
src/crypto/dist/ipsec-tools/src/racoon/racoon.conf.5
cvs rdiff -u -r1.7 -r1.8 src/crypto/dist/ipsec-tools/src/racoon/vendorid.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/crypto/dist/ipsec-tools/src/racoon/nattraversal.c
diff -u src/crypto/dist/ipsec-tools/src/racoon/nattraversal.c:1.12 src/crypto/dist/ipsec-tools/src/racoon/nattraversal.c:1.13
--- src/crypto/dist/ipsec-tools/src/racoon/nattraversal.c:1.12 Fri Jul 3 06:41:46 2009
+++ src/crypto/dist/ipsec-tools/src/racoon/nattraversal.c Tue Sep 1 12:22:09 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: nattraversal.c,v 1.12 2009/07/03 06:41:46 tteras Exp $ */
+/* $NetBSD: nattraversal.c,v 1.13 2009/09/01 12:22:09 tteras Exp $ */
/*
* Copyright (C) 2004 SuSE Linux AG, Nuernberg, Germany.
@@ -308,9 +308,28 @@
natt_keepalive_add_ph1 (iph1);
}
+static int
+natt_is_enabled (struct remoteconf *rmconf, void *args)
+{
+ if (rmconf->nat_traversal)
+ return 1;
+ return 0;
+}
+
void
natt_handle_vendorid (struct ph1handle *iph1, int vid_numeric)
{
+ if (iph1->rmconf == NULL) {
+ /* Check if any candidate remote conf allows nat-t */
+ struct rmconfselector rmconf;
+ rmconf_selector_from_ph1(&rmconf, iph1);
+ if (enumrmconf(&rmconf, natt_is_enabled, NULL) == 0)
+ return;
+ } else {
+ if (!iph1->rmconf->nat_traversal)
+ return;
+ }
+
if (! iph1->natt_options)
iph1->natt_options = racoon_calloc (1, sizeof (*iph1->natt_options));
Index: src/crypto/dist/ipsec-tools/src/racoon/racoon.conf.5
diff -u src/crypto/dist/ipsec-tools/src/racoon/racoon.conf.5:1.57 src/crypto/dist/ipsec-tools/src/racoon/racoon.conf.5:1.58
--- src/crypto/dist/ipsec-tools/src/racoon/racoon.conf.5:1.57 Tue Sep 1 09:24:21 2009
+++ src/crypto/dist/ipsec-tools/src/racoon/racoon.conf.5 Tue Sep 1 12:22:09 2009
@@ -1,4 +1,4 @@
-.\" $NetBSD: racoon.conf.5,v 1.57 2009/09/01 09:24:21 tteras Exp $
+.\" $NetBSD: racoon.conf.5,v 1.58 2009/09/01 12:22:09 tteras Exp $
.\"
.\" Id: racoon.conf.5,v 1.54 2006/08/22 18:17:17 manubsd Exp
.\"
@@ -420,6 +420,9 @@
parameter specifies whether or not remote block matches.
.El
.Pp
+Similarly, NAT-T is enabled if any of the initial remote configuration
+candidates allow NAT-T.
+.Pp
Sections with
.Ic inherit Ar parent
statements (where
Index: src/crypto/dist/ipsec-tools/src/racoon/vendorid.c
diff -u src/crypto/dist/ipsec-tools/src/racoon/vendorid.c:1.7 src/crypto/dist/ipsec-tools/src/racoon/vendorid.c:1.8
--- src/crypto/dist/ipsec-tools/src/racoon/vendorid.c:1.7 Thu Mar 12 10:57:26 2009
+++ src/crypto/dist/ipsec-tools/src/racoon/vendorid.c Tue Sep 1 12:22:09 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: vendorid.c,v 1.7 2009/03/12 10:57:26 tteras Exp $ */
+/* $NetBSD: vendorid.c,v 1.8 2009/09/01 12:22:09 tteras Exp $ */
/* Id: vendorid.c,v 1.10 2006/02/22 16:10:21 vanhu Exp */
@@ -260,8 +260,7 @@
iph1->vendorid_mask |= BIT(vid_numeric);
#ifdef ENABLE_NATT
- if ((iph1->rmconf == NULL || iph1->rmconf->nat_traversal) &&
- natt_vendorid(vid_numeric))
+ if (natt_vendorid(vid_numeric))
natt_handle_vendorid(iph1, vid_numeric);
#endif
#ifdef ENABLE_HYBRID