libgtp: implement gtp_clear_queues to clear req/resp queue

Clearing the request and response queue is useful for debugging
to reset "some" state. Otherwise some tests will get un-expected
packets.

Change-Id: I279d1d7cbf5d37dd5609c2b968f317fe9a0e348d
This commit is contained in:
Alexander Couzens 2018-09-16 05:10:03 +02:00 committed by Harald Welte
parent d1e2342f91
commit e1412d9493
2 changed files with 20 additions and 0 deletions

View File

@ -496,6 +496,24 @@ static int gtp_req(struct gsn_t *gsn, uint8_t version, struct pdp_t *pdp,
return 0;
}
/**
* @brief clear the request and response queue. Useful for debugging to reset "some" state.
* @param gsn The GGSN instance
*/
void gtp_clear_queues(struct gsn_t *gsn)
{
struct qmsg_t *qmsg;
while (!queue_getfirst(gsn->queue_req, &qmsg)) {
queue_freemsg(gsn->queue_req, qmsg);
}
while (!queue_getfirst(gsn->queue_resp, &qmsg)) {
queue_freemsg(gsn->queue_resp, qmsg);
}
}
/* gtp_conf
* Remove signalling packet from retransmission queue.
* return 0 on success, EOF if packet was not found */

View File

@ -369,6 +369,8 @@ int gtp_set_cb_recovery2(struct gsn_t *gsn,
struct pdp_t * pdp,
uint8_t recovery));
void gtp_clear_queues(struct gsn_t *gsn);
/* Internal functions (not part of the API */
extern int gtp_echo_req(struct gsn_t *gsn, int version, void *cbp,