libipsec: Use CoDel queues in processor for inbound/outbound queues
diff --git a/src/libipsec/ipsec_processor.c b/src/libipsec/ipsec_processor.c index eae2ed2..b58e137 100644 --- a/src/libipsec/ipsec_processor.c +++ b/src/libipsec/ipsec_processor.c
@@ -15,11 +15,11 @@ #include "ipsec.h" #include "ipsec_processor.h" +#include "codel_queue.h" #include <utils/debug.h> #include <library.h> #include <threading/rwlock.h> -#include <collections/blocking_queue.h> #include <processing/jobs/callback_job.h> typedef struct private_ipsec_processor_t private_ipsec_processor_t; @@ -37,12 +37,12 @@ /** * Queue for inbound packets (esp_packet_t*) */ - blocking_queue_t *inbound_queue; + codel_queue_t *inbound_queue; /** * Queue for outbound packets (ip_packet_t*) */ - blocking_queue_t *outbound_queue; + codel_queue_t *outbound_queue; /** * Registered inbound callback @@ -235,13 +235,15 @@ METHOD(ipsec_processor_t, queue_inbound, void, private_ipsec_processor_t *this, esp_packet_t *packet) { - this->inbound_queue->enqueue(this->inbound_queue, packet); + this->inbound_queue->enqueue(this->inbound_queue, packet, + packet->packet.get_data(&packet->packet).len); } METHOD(ipsec_processor_t, queue_outbound, void, private_ipsec_processor_t *this, ip_packet_t *packet) { - this->outbound_queue->enqueue(this->outbound_queue, packet); + this->outbound_queue->enqueue(this->outbound_queue, packet, + packet->get_encoding(packet).len); } METHOD(ipsec_processor_t, register_inbound, void, @@ -287,10 +289,8 @@ METHOD(ipsec_processor_t, destroy, void, private_ipsec_processor_t *this) { - this->inbound_queue->destroy_offset(this->inbound_queue, - offsetof(esp_packet_t, destroy)); - this->outbound_queue->destroy_offset(this->outbound_queue, - offsetof(ip_packet_t, destroy)); + this->inbound_queue->destroy(this->inbound_queue); + this->outbound_queue->destroy(this->outbound_queue); this->lock->destroy(this->lock); free(this); } @@ -312,8 +312,10 @@ .unregister_outbound = _unregister_outbound, .destroy = _destroy, }, - .inbound_queue = blocking_queue_create(), - .outbound_queue = blocking_queue_create(), + .inbound_queue = codel_queue_create( + offsetof(esp_packet_t, destroy), 1500), + .outbound_queue = codel_queue_create( + offsetof(ip_packet_t, destroy), 1500), .lock = rwlock_create(RWLOCK_TYPE_DEFAULT), );