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