rust: use LoggerFlags type to track logged state

pull/2746/head
Jason Ish 8 years ago
parent b588b49779
commit c54fc7f98f

@ -0,0 +1,40 @@
/* Copyright (C) 2017 Open Information Security Foundation
*
* You can copy, redistribute or modify this Program under the terms of
* the GNU General Public License version 2 as published by the Free
* Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* version 2 along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301, USA.
*/
/// LoggerFlags tracks which loggers have already been executed.
#[derive(Debug)]
pub struct LoggerFlags {
flags: u32,
}
impl LoggerFlags {
pub fn new() -> LoggerFlags {
return LoggerFlags{
flags: 0,
}
}
pub fn set_logged(&mut self, logger: u32) {
self.flags |= logger;
}
pub fn is_logged(&self, logger: u32) -> bool {
self.flags & logger != 0
}
}

@ -22,6 +22,7 @@ use std;
use std::mem::transmute;
use log::*;
use applayer::LoggerFlags;
use core;
use dns::parser;
@ -142,7 +143,7 @@ pub struct DNSTransaction {
pub id: u64,
pub request: Option<DNSRequest>,
pub response: Option<DNSResponse>,
pub logged: u32,
pub logged: LoggerFlags,
pub de_state: Option<*mut core::DetectEngineState>,
pub events: *mut core::AppLayerDecoderEvents,
}
@ -154,7 +155,7 @@ impl DNSTransaction {
id: 0,
request: None,
response: None,
logged: 0,
logged: LoggerFlags::new(),
de_state: None,
events: std::ptr::null_mut(),
}
@ -575,7 +576,7 @@ pub extern "C" fn rs_dns_tx_set_logged(_state: &mut DNSState,
tx: &mut DNSTransaction,
logger: libc::uint32_t)
{
tx.logged |= logger;
tx.logged.set_logged(logger);
}
#[no_mangle]
@ -584,7 +585,7 @@ pub extern "C" fn rs_dns_tx_get_logged(_state: &mut DNSState,
logger: libc::uint32_t)
-> i8
{
if tx.logged & logger != 0 {
if tx.logged.is_logged(logger) {
return 1;
}
return 0;

@ -24,6 +24,7 @@ pub mod log;
pub mod core;
pub mod conf;
pub mod json;
pub mod applayer;
#[cfg(feature = "lua")]
pub mod lua;

Loading…
Cancel
Save