http: register logger functions

pull/2081/head
Mats Klepsland 10 years ago committed by Victor Julien
parent d484812d05
commit c52fe9a5fa

@ -2634,6 +2634,24 @@ static void *HTPStateGetTx(void *alstate, uint64_t tx_id)
return NULL;
}
static void HTPStateSetTxLogged(void *alstate, void *vtx, uint32_t logger)
{
htp_tx_t *tx = (htp_tx_t *)vtx;
HtpTxUserData *tx_ud = (HtpTxUserData *) htp_tx_get_user_data(tx);
if (tx_ud)
tx_ud->logged |= logger;
}
static int HTPStateGetTxLogged(void *alstate, void *vtx, uint32_t logger)
{
htp_tx_t *tx = (htp_tx_t *)vtx;
HtpTxUserData *tx_ud = (HtpTxUserData *) htp_tx_get_user_data(tx);
if (tx_ud && (tx_ud->logged & logger))
return 1;
return 0;
}
static int HTPStateGetAlstateProgressCompletionStatus(uint8_t direction)
{
return (direction & STREAM_TOSERVER) ? HTP_REQUEST_COMPLETE : HTP_RESPONSE_COMPLETE;
@ -2769,6 +2787,8 @@ void RegisterHTPParsers(void)
AppLayerParserRegisterGetStateProgressFunc(IPPROTO_TCP, ALPROTO_HTTP, HTPStateGetAlstateProgress);
AppLayerParserRegisterGetTxCnt(IPPROTO_TCP, ALPROTO_HTTP, HTPStateGetTxCnt);
AppLayerParserRegisterGetTx(IPPROTO_TCP, ALPROTO_HTTP, HTPStateGetTx);
AppLayerParserRegisterLoggerFuncs(IPPROTO_TCP, ALPROTO_HTTP, HTPStateGetTxLogged,
HTPStateSetTxLogged);
AppLayerParserRegisterGetStateProgressCompletionStatus(ALPROTO_HTTP,
HTPStateGetAlstateProgressCompletionStatus);
AppLayerParserRegisterHasEventsFunc(IPPROTO_TCP, ALPROTO_HTTP, HTPHasEvents);

@ -205,6 +205,10 @@ typedef struct HtpTxUserData_ {
/* Body of the request (if any) */
uint8_t request_body_init;
uint8_t response_body_init;
/* indicates which loggers that have logged */
uint32_t logged;
HtpBody request_body;
HtpBody response_body;

Loading…
Cancel
Save