aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2011-08-10 16:57:59 +0200
committerMartin Willi <martin@revosec.ch>2011-08-19 09:16:16 +0200
commit61cf9f512c8c0130fcc39c9e89ca9968afa99ef2 (patch)
tree4d9088fc42975f816ec1cfca0ca80a142fdc1976
parent5c0ab65cae318f8aa229fab8a674487231393e53 (diff)
downloadstrongswan-61cf9f512c8c0130fcc39c9e89ca9968afa99ef2.tar.bz2
strongswan-61cf9f512c8c0130fcc39c9e89ca9968afa99ef2.tar.xz
Try to detect Windows Clients by looking for INTERNAL_IP4/6_SERVER attribute
-rw-r--r--src/libcharon/sa/ike_sa.h5
-rw-r--r--src/libcharon/sa/tasks/ike_config.c5
2 files changed, 10 insertions, 0 deletions
diff --git a/src/libcharon/sa/ike_sa.h b/src/libcharon/sa/ike_sa.h
index 703f38474..cf23de300 100644
--- a/src/libcharon/sa/ike_sa.h
+++ b/src/libcharon/sa/ike_sa.h
@@ -97,6 +97,11 @@ enum ike_extension_t {
* peer supports EAP-only authentication, draft-eronen-ipsec-ikev2-eap-auth
*/
EXT_EAP_ONLY_AUTHENTICATION = (1<<5),
+
+ /**
+ * peer is probably a Windows 7 RAS client
+ */
+ EXT_MS_WINDOWS = (1<<6),
};
/**
diff --git a/src/libcharon/sa/tasks/ike_config.c b/src/libcharon/sa/tasks/ike_config.c
index a61663c48..84247117c 100644
--- a/src/libcharon/sa/tasks/ike_config.c
+++ b/src/libcharon/sa/tasks/ike_config.c
@@ -174,6 +174,11 @@ static void process_attribute(private_ike_config_t *this,
}
break;
}
+ case INTERNAL_IP4_SERVER:
+ case INTERNAL_IP6_SERVER:
+ /* assume it's a Windows client if we see proprietary attributes */
+ this->ike_sa->enable_extension(this->ike_sa, EXT_MS_WINDOWS);
+ /* fall */
default:
{
if (this->initiator)