@ -778,28 +778,40 @@ static int AlertJson(ThreadVars *tv, JsonAlertLogThread *aft, const Packet *p)
static int AlertJsonDecoderEvent ( ThreadVars * tv , JsonAlertLogThread * aft , const Packet * p )
{
AlertJsonOutputCtx * json_output_ctx = aft - > json_output_ctx ;
char timebuf [ 64 ] ;
if ( p - > alerts . cnt = = 0 )
return TM_ECODE_OK ;
CreateIsoTimeString ( p - > ts , timebuf , sizeof ( timebuf ) ) ;
for ( int i = 0 ; i < p - > alerts . cnt ; i + + ) {
const PacketAlert * pa = & p - > alerts . alerts [ i ] ;
if ( unlikely ( pa - > s = = NULL ) ) {
continue ;
}
JsonBuilder * jb = jb_new_object ( ) ;
if ( unlikely ( jb = = NULL ) ) {
JsonBuilder * jb =
CreateEveHeader ( p , LOG_DIR_PACKET , " alert " , NULL , json_output_ctx - > eve_ctx ) ;
if ( unlikely ( jb = = NULL ) )
return TM_ECODE_OK ;
AlertJsonHeader ( p , pa , jb , json_output_ctx - > flags , NULL , NULL ) ;
if ( PacketIsTunnel ( p ) ) {
AlertJsonTunnel ( p , jb ) ;
}
/* just the timestamp, no tuple */
jb_set_string ( jb , " timestamp " , timebuf ) ;
/* base64-encoded full packet */
if ( json_output_ctx - > flags & LOG_JSON_PACKET ) {
EvePacket ( p , jb , 0 ) ;
}
AlertJsonHeader ( p , pa , jb , json_output_ctx - > flags , NULL , NULL ) ;
char * pcap_filename = PcapLogGetFilename ( ) ;
if ( pcap_filename ! = NULL ) {
jb_set_string ( jb , " capture_file " , pcap_filename ) ;
}
if ( json_output_ctx - > flags & LOG_JSON_VERDICT ) {
EveAddVerdict ( jb , p ) ;
}
OutputJsonBuilderBuffer ( tv , p , p - > flow , jb , aft - > ctx ) ;
jb_free ( jb ) ;