aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndreas Steffen <andreas.steffen@strongswan.org>2012-03-09 10:20:44 +0100
committerAndreas Steffen <andreas.steffen@strongswan.org>2012-03-13 16:27:17 +0100
commit595f44e9a3e48d84931287aca533ba7e2d2b604b (patch)
tree7f04ef05ac9b90e768548fabeb747301d9707bef /src
parentd1a311f631f98821f259522f430fa2942fc629a9 (diff)
downloadstrongswan-595f44e9a3e48d84931287aca533ba7e2d2b604b.tar.bz2
strongswan-595f44e9a3e48d84931287aca533ba7e2d2b604b.tar.xz
apply maximum RADIUS attribute size to outbound EAP messages
Diffstat (limited to 'src')
-rw-r--r--src/libcharon/plugins/tnc_pdp/tnc_pdp.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/libcharon/plugins/tnc_pdp/tnc_pdp.c b/src/libcharon/plugins/tnc_pdp/tnc_pdp.c
index 6daae8fc7..1ef87f24f 100644
--- a/src/libcharon/plugins/tnc_pdp/tnc_pdp.c
+++ b/src/libcharon/plugins/tnc_pdp/tnc_pdp.c
@@ -189,6 +189,15 @@ static void send_response(private_tnc_pdp_t *this,
if (eap)
{
data = eap->get_data(eap);
+ DBG3(DBG_CFG, "%N payload %B", eap_type_names, this->type, &data);
+
+ /* fragment data suitable for RADIUS */
+ while (data.len > MAX_RADIUS_ATTRIBUTE_SIZE)
+ {
+ response->add(response, RAT_EAP_MESSAGE,
+ chunk_create(data.ptr,MAX_RADIUS_ATTRIBUTE_SIZE));
+ data = chunk_skip(data, MAX_RADIUS_ATTRIBUTE_SIZE);
+ }
response->add(response, RAT_EAP_MESSAGE, data);
}
response->set_identifier(response, request->get_identifier(request));