]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
ssl/tls: support AppLayerTxData
authorVictor Julien <victor@inliniac.net>
Sun, 7 Jun 2020 14:16:57 +0000 (16:16 +0200)
committerVictor Julien <victor@inliniac.net>
Sat, 11 Jul 2020 06:37:40 +0000 (08:37 +0200)
src/app-layer-ssl.c
src/app-layer-ssl.h

index b1f6268151d41568e726b2fffde8a74f91ccbc74..82163af8f7cf969581206dda49fb8652ceb3bcfe 100644 (file)
@@ -276,22 +276,6 @@ static uint64_t SSLGetTxCnt(void *state)
     return 1;
 }
 
-static void SSLSetTxLogged(void *state, void *tx, LoggerId logged)
-{
-    SSLState *ssl_state = (SSLState *)state;
-    if (ssl_state)
-        ssl_state->logged = logged;
-}
-
-static LoggerId SSLGetTxLogged(void *state, void *tx)
-{
-    SSLState *ssl_state = (SSLState *)state;
-    if (ssl_state)
-        return (ssl_state->logged);
-
-    return 0;
-}
-
 static int SSLGetAlstateProgressCompletionStatus(uint8_t direction)
 {
     return TLS_STATE_FINISHED;
@@ -323,24 +307,10 @@ static int SSLGetAlstateProgress(void *tx, uint8_t direction)
     return TLS_STATE_IN_PROGRESS;
 }
 
-static uint64_t SSLGetTxDetectFlags(void *vtx, uint8_t dir)
+static AppLayerTxData *SSLGetTxData(void *vtx)
 {
     SSLState *ssl_state = (SSLState *)vtx;
-    if (dir & STREAM_TOSERVER) {
-        return ssl_state->detect_flags_ts;
-    } else {
-        return ssl_state->detect_flags_tc;
-    }
-}
-
-static void SSLSetTxDetectFlags(void *vtx, uint8_t dir, uint64_t flags)
-{
-    SSLState *ssl_state = (SSLState *)vtx;
-    if (dir & STREAM_TOSERVER) {
-        ssl_state->detect_flags_ts = flags;
-    } else {
-        ssl_state->detect_flags_tc = flags;
-    }
+    return &ssl_state->tx_data;
 }
 
 void SSLVersionToString(uint16_t version, char *buffer)
@@ -3005,15 +2975,12 @@ void RegisterSSLParsers(void)
                                                SSLGetTxDetectState, SSLSetTxDetectState);
 
         AppLayerParserRegisterGetTx(IPPROTO_TCP, ALPROTO_TLS, SSLGetTx);
+        AppLayerParserRegisterTxDataFunc(IPPROTO_TCP, ALPROTO_TLS, SSLGetTxData);
 
         AppLayerParserRegisterGetTxCnt(IPPROTO_TCP, ALPROTO_TLS, SSLGetTxCnt);
 
         AppLayerParserRegisterGetStateProgressFunc(IPPROTO_TCP, ALPROTO_TLS, SSLGetAlstateProgress);
 
-        AppLayerParserRegisterLoggerFuncs(IPPROTO_TCP, ALPROTO_TLS, SSLGetTxLogged, SSLSetTxLogged);
-        AppLayerParserRegisterDetectFlagsFuncs(IPPROTO_TCP, ALPROTO_TLS,
-                SSLGetTxDetectFlags, SSLSetTxDetectFlags);
-
         AppLayerParserRegisterGetStateProgressCompletionStatus(ALPROTO_TLS,
                                                                SSLGetAlstateProgressCompletionStatus);
 
index 8b287e34718fd63be57c23c2675852a5211c6eff..fc299c8762e8e0a82dbad70188d29fb85ceb8fca 100644 (file)
@@ -233,16 +233,11 @@ typedef struct SSLStateConnp_ {
 typedef struct SSLState_ {
     Flow *f;
 
+    AppLayerTxData tx_data;
+
     /* holds some state flags we need */
     uint32_t flags;
 
-    /* specifies which loggers are done logging */
-    uint32_t logged;
-
-    /* detect flags */
-    uint64_t detect_flags_ts;
-    uint64_t detect_flags_tc;
-
     /* there might be a better place to store this*/
     uint16_t hb_record_len;