#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;
/**
* 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
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,
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);
}
.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),
);