Add alerts for sent/received message retransmissions and timeout
This commit is contained in:
@@ -99,6 +99,12 @@ enum alert_t {
|
|||||||
/** received IKE message with invalid body, argument is message_t*,
|
/** received IKE message with invalid body, argument is message_t*,
|
||||||
* followed by a status_t result returned by message_t.parse_body(). */
|
* followed by a status_t result returned by message_t.parse_body(). */
|
||||||
ALERT_PARSE_ERROR_BODY,
|
ALERT_PARSE_ERROR_BODY,
|
||||||
|
/** sending a retransmit for a message, argument is packet_t */
|
||||||
|
ALERT_RETRANSMIT_SEND,
|
||||||
|
/** sending retransmits timed out, argument is packet_t */
|
||||||
|
ALERT_RETRANSMIT_SEND_TIMEOUT,
|
||||||
|
/** received a retransmit for a message, argument is message_t */
|
||||||
|
ALERT_RETRANSMIT_RECEIVE,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -293,6 +293,7 @@ static status_t retransmit_packet(private_task_manager_t *this, u_int32_t seqnr,
|
|||||||
if (retransmitted > this->retransmit_tries)
|
if (retransmitted > this->retransmit_tries)
|
||||||
{
|
{
|
||||||
DBG1(DBG_IKE, "giving up after %u retransmits", retransmitted - 1);
|
DBG1(DBG_IKE, "giving up after %u retransmits", retransmitted - 1);
|
||||||
|
charon->bus->alert(charon->bus, ALERT_RETRANSMIT_SEND_TIMEOUT, packet);
|
||||||
return DESTROY_ME;
|
return DESTROY_ME;
|
||||||
}
|
}
|
||||||
t = (u_int32_t)(this->retransmit_timeout * 1000.0 *
|
t = (u_int32_t)(this->retransmit_timeout * 1000.0 *
|
||||||
@@ -302,6 +303,7 @@ static status_t retransmit_packet(private_task_manager_t *this, u_int32_t seqnr,
|
|||||||
DBG1(DBG_IKE, "sending retransmit %u of %s message ID %u, seq %u",
|
DBG1(DBG_IKE, "sending retransmit %u of %s message ID %u, seq %u",
|
||||||
retransmitted, seqnr < RESPONDING_SEQ ? "request" : "response",
|
retransmitted, seqnr < RESPONDING_SEQ ? "request" : "response",
|
||||||
mid, seqnr < RESPONDING_SEQ ? seqnr : seqnr - RESPONDING_SEQ);
|
mid, seqnr < RESPONDING_SEQ ? seqnr : seqnr - RESPONDING_SEQ);
|
||||||
|
charon->bus->alert(charon->bus, ALERT_RETRANSMIT_SEND, packet);
|
||||||
}
|
}
|
||||||
charon->sender->send(charon->sender, packet->clone(packet));
|
charon->sender->send(charon->sender, packet->clone(packet));
|
||||||
lib->scheduler->schedule_job_ms(lib->scheduler, (job_t*)
|
lib->scheduler->schedule_job_ms(lib->scheduler, (job_t*)
|
||||||
@@ -1167,6 +1169,7 @@ METHOD(task_manager_t, process_message, status_t,
|
|||||||
DBG1(DBG_IKE, "received retransmit of request with ID %u, "
|
DBG1(DBG_IKE, "received retransmit of request with ID %u, "
|
||||||
"but no response to retransmit", mid);
|
"but no response to retransmit", mid);
|
||||||
}
|
}
|
||||||
|
charon->bus->alert(charon->bus, ALERT_RETRANSMIT_RECEIVE, msg);
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
if (msg->get_exchange_type(msg) == TRANSACTION &&
|
if (msg->get_exchange_type(msg) == TRANSACTION &&
|
||||||
|
|||||||
@@ -257,6 +257,8 @@ METHOD(task_manager_t, retransmit, status_t,
|
|||||||
{
|
{
|
||||||
DBG1(DBG_IKE, "giving up after %d retransmits",
|
DBG1(DBG_IKE, "giving up after %d retransmits",
|
||||||
this->initiating.retransmitted - 1);
|
this->initiating.retransmitted - 1);
|
||||||
|
charon->bus->alert(charon->bus, ALERT_RETRANSMIT_SEND_TIMEOUT,
|
||||||
|
this->initiating.packet);
|
||||||
return DESTROY_ME;
|
return DESTROY_ME;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -264,6 +266,8 @@ METHOD(task_manager_t, retransmit, status_t,
|
|||||||
{
|
{
|
||||||
DBG1(DBG_IKE, "retransmit %d of request with message ID %d",
|
DBG1(DBG_IKE, "retransmit %d of request with message ID %d",
|
||||||
this->initiating.retransmitted, message_id);
|
this->initiating.retransmitted, message_id);
|
||||||
|
charon->bus->alert(charon->bus, ALERT_RETRANSMIT_SEND,
|
||||||
|
this->initiating.packet);
|
||||||
}
|
}
|
||||||
packet = this->initiating.packet->clone(this->initiating.packet);
|
packet = this->initiating.packet->clone(this->initiating.packet);
|
||||||
charon->sender->send(charon->sender, packet);
|
charon->sender->send(charon->sender, packet);
|
||||||
@@ -1136,6 +1140,7 @@ METHOD(task_manager_t, process_message, status_t,
|
|||||||
|
|
||||||
DBG1(DBG_IKE, "received retransmit of request with ID %d, "
|
DBG1(DBG_IKE, "received retransmit of request with ID %d, "
|
||||||
"retransmitting response", mid);
|
"retransmitting response", mid);
|
||||||
|
charon->bus->alert(charon->bus, ALERT_RETRANSMIT_RECEIVE, msg);
|
||||||
clone = this->responding.packet->clone(this->responding.packet);
|
clone = this->responding.packet->clone(this->responding.packet);
|
||||||
host = msg->get_destination(msg);
|
host = msg->get_destination(msg);
|
||||||
clone->set_source(clone, host->clone(host));
|
clone->set_source(clone, host->clone(host));
|
||||||
|
|||||||
Reference in New Issue
Block a user