From: Mats Klepsland Date: Wed, 4 May 2016 11:16:03 +0000 (+0200) Subject: http: register logger functions X-Git-Tag: suricata-3.1RC1~163 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c52fe9a5fa1761f3d8f334fbd13315f3ce921c70;p=thirdparty%2Fsuricata.git http: register logger functions --- diff --git a/src/app-layer-htp.c b/src/app-layer-htp.c index c1d68bf7b0..45c14d7d81 100644 --- a/src/app-layer-htp.c +++ b/src/app-layer-htp.c @@ -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); diff --git a/src/app-layer-htp.h b/src/app-layer-htp.h index 275bc4b7ef..d7aab93993 100644 --- a/src/app-layer-htp.h +++ b/src/app-layer-htp.h @@ -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;