From: Andreas Steffen Date: Wed, 11 Jul 2012 07:23:45 +0000 (+0200) Subject: make maximum PB-TNC batch size configurable X-Git-Tag: 5.0.1~423 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d7dcbc95a9db12537a2b972087052afa95da41c2;p=thirdparty%2Fstrongswan.git make maximum PB-TNC batch size configurable --- diff --git a/man/strongswan.conf.5.in b/man/strongswan.conf.5.in index 08dda25834..4abd065405 100644 --- a/man/strongswan.conf.5.in +++ b/man/strongswan.conf.5.in @@ -500,6 +500,9 @@ certificates even if they don't contain a CA basic constraint. .BR charon.plugins.stroke.max_concurrent " [4]" Maximum number of stroke messages handled concurrently .TP +.BR charon.plugins.tnccs-20.max_batch_size " [65522]" +Maximum size of a PB-TNC batch (upper limit via PT-EAP = 65529) +.TP .BR charon.plugins.tnc-ifmap.device_name Unique name of strongSwan as a PEP and/or PDP device .TP diff --git a/src/libcharon/plugins/tnccs_20/tnccs_20.c b/src/libcharon/plugins/tnccs_20/tnccs_20.c index 576cd825b6..ea33d46ba2 100644 --- a/src/libcharon/plugins/tnccs_20/tnccs_20.c +++ b/src/libcharon/plugins/tnccs_20/tnccs_20.c @@ -35,6 +35,7 @@ #include #include +#include #include #include #include @@ -76,6 +77,11 @@ struct private_tnccs_20_t { */ pb_tnc_batch_type_t batch_type; + /** + * Maximum PA-TNC batch size + */ + size_t max_batch_len; + /** * Mutex locking the batch in construction */ @@ -649,7 +655,7 @@ METHOD(tls_t, build, status_t, msg->build(msg); msg_value = msg->get_encoding(msg); batch_len += PB_TNC_HEADER_SIZE + msg_value.len; - if (batch_len > *buflen) + if (batch_len > min(this->max_batch_len, *buflen)) { /* message does not fit into batch of maximum size */ break; @@ -674,7 +680,7 @@ METHOD(tls_t, build, status_t, msg_count = this->messages->get_count(this->messages); if (msg_count) { - DBG2(DBG_TNC, "%d PB-TNC message%s for %N batch queued", + DBG2(DBG_TNC, "queued %d PB-TNC message%s for next %N batch", msg_count, (msg_count == 1) ? "" : "s", pb_tnc_batch_type_names, this->batch_type); } @@ -768,6 +774,9 @@ tls_t *tnccs_20_create(bool is_server) .state_machine = pb_tnc_state_machine_create(is_server), .mutex = mutex_create(MUTEX_TYPE_DEFAULT), .messages = linked_list_create(), + .max_batch_len = lib->settings->get_int(lib->settings, + "%s.plugins.tnccs-20.max_batch_size", 65522, + charon->name), ); return &this->public;