aboutsummaryrefslogtreecommitdiffstats
path: root/src/libcharon/plugins/eap_radius
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2015-06-22 11:36:15 +0200
committerTobias Brunner <tobias@strongswan.org>2015-08-17 11:23:33 +0200
commitec490e68ae375056e42004d63f2e8dd96a4a5ae8 (patch)
tree2e54428e6235656d52a1a1a2f71ec04d68b9dc9a /src/libcharon/plugins/eap_radius
parent6d9cd1d66b9817c2975b63b49ef9e6b8ef9fc30e (diff)
downloadstrongswan-ec490e68ae375056e42004d63f2e8dd96a4a5ae8.tar.bz2
strongswan-ec490e68ae375056e42004d63f2e8dd96a4a5ae8.tar.xz
eap-radius: Add support for some basic IPv6-specific RADIUS attributes
These are defined in RFC 6911. Fixes #1001.
Diffstat (limited to 'src/libcharon/plugins/eap_radius')
-rw-r--r--src/libcharon/plugins/eap_radius/eap_radius.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/libcharon/plugins/eap_radius/eap_radius.c b/src/libcharon/plugins/eap_radius/eap_radius.c
index 60d12dc1d..8618ecfcf 100644
--- a/src/libcharon/plugins/eap_radius/eap_radius.c
+++ b/src/libcharon/plugins/eap_radius/eap_radius.c
@@ -434,6 +434,9 @@ static void add_nameserver_attribute(eap_radius_provider_t *provider,
case 31: /* MS-Secondary-NBNS-Server */
provider->add_attribute(provider, id, INTERNAL_IP4_NBNS, data);
break;
+ case RAT_FRAMED_IPV6_DNS_SERVER:
+ provider->add_attribute(provider, id, INTERNAL_IP6_DNS, data);
+ break;
}
}
@@ -515,7 +518,8 @@ static void process_cfg_attributes(radius_message_t *msg)
enumerator = msg->create_enumerator(msg);
while (enumerator->enumerate(enumerator, &type, &data))
{
- if (type == RAT_FRAMED_IP_ADDRESS && data.len == 4)
+ if ((type == RAT_FRAMED_IP_ADDRESS && data.len == 4) ||
+ (type == RAT_FRAMED_IPV6_ADDRESS && data.len == 16))
{
host = host_create_from_chunk(AF_INET, data, 0);
if (host)
@@ -529,6 +533,11 @@ static void process_cfg_attributes(radius_message_t *msg)
provider->add_attribute(provider, ike_sa->get_unique_id(ike_sa),
INTERNAL_IP4_NETMASK, data);
}
+ else if (type == RAT_FRAMED_IPV6_DNS_SERVER && data.len == 16)
+ {
+ add_nameserver_attribute(provider,
+ ike_sa->get_unique_id(ike_sa), type, data);
+ }
}
enumerator->destroy(enumerator);