rust: stub out logging from rust

pull/2746/head
Jason Ish 9 years ago
parent d6d6358691
commit de5bb1f953

@ -1,3 +1,2 @@
#[test]
fn it_works() {
}
#[macro_use]
pub mod log;

@ -0,0 +1,139 @@
/* 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.
*/
extern crate libc;
use std::os::raw::c_char;
use std::ffi::{CString};
use std::path::Path;
pub enum Level {
NotSet = -1,
None = 0,
Emergency,
Alert,
Critical,
Error,
Warning,
Notice,
Info,
Perf,
Config,
Debug,
}
pub static mut LEVEL: i32 = Level::NotSet as i32;
extern {
fn SCLogMessage(level: libc::c_int,
filename: *const c_char,
line: libc::c_uint,
function: *const c_char,
code: libc::c_int,
message: *const c_char) -> libc::c_int;
}
pub fn get_log_level() -> i32 {
unsafe {
LEVEL
}
}
fn basename(filename: &str) -> &str {
let path = Path::new(filename);
for os_str in path.file_name() {
for basename in os_str.to_str() {
return basename;
}
}
return filename;
}
pub fn sclog(level: Level, file: &str, line: u32, function: &str,
code: i32, message: &str)
{
let filename = basename(file);
unsafe {
SCLogMessage(level as i32,
CString::new(filename).unwrap().as_ptr(),
line,
CString::new(function).unwrap().as_ptr(),
code,
CString::new(message).unwrap().as_ptr());
}
}
/// Return the function name, but for now just return <rust> as Rust
/// has no macro to return the function name, but may in the future,
/// see: https://github.com/rust-lang/rfcs/pull/1719
macro_rules!function {
() => {{ "<rust>" }}
}
#[macro_export]
macro_rules!do_log {
($level:expr, $file:expr, $line:expr, $function:expr, $code:expr,
$($arg:tt)*) => {
if get_log_level() >= $level as i32 {
sclog($level, $file, $line, $function, $code,
&(format!($($arg)*)));
}
}
}
#[macro_export]
macro_rules!SCLogNotice {
($($arg:tt)*) => {
do_log!(Level::Notice, file!(), line!(), function!(), 0, $($arg)*);
}
}
#[macro_export]
macro_rules!SCLogInfo {
($($arg:tt)*) => {
do_log!(Level::Info, file!(), line!(), function!(), 0, $($arg)*);
}
}
#[macro_export]
macro_rules!SCLogPerf {
($($arg:tt)*) => {
do_log!(Level::Perf, file!(), line!(), function!(), 0, $($arg)*);
}
}
#[macro_export]
macro_rules!SCLogConfig {
($($arg:tt)*) => {
do_log!(Level::Config, file!(), line!(), function!(), 0, $($arg)*);
}
}
#[macro_export]
macro_rules!SCLogDebug {
($($arg:tt)*) => {
do_log!(Level::Debug, file!(), line!(), function!(), 0, $($arg)*);
}
}
#[no_mangle]
pub extern "C" fn rs_log_init(level: i32) {
unsafe {
LEVEL = level;
}
}

@ -322,6 +322,7 @@ runmode-unittests.c runmode-unittests.h \
runmode-unix-socket.c runmode-unix-socket.h \
runmode-tile.c runmode-tile.h \
runmodes.c runmodes.h \
rust.h \
source-af-packet.c source-af-packet.h \
source-erf-dag.c source-erf-dag.h \
source-erf-file.c source-erf-file.h \

@ -0,0 +1,18 @@
/* 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.
*/
void rs_log_init(int32_t level);

@ -43,6 +43,10 @@
#include "util-unittest.h"
#include "util-syslog.h"
#ifdef HAVE_RUST
#include "rust.h"
#endif
#include "conf.h"
/* holds the string-enum mapping for the enums held in the table SCLogLevel */
@ -1256,6 +1260,10 @@ void SCLogInitLogModule(SCLogInitData *sc_lid)
//SCOutputPrint(sc_did->startup_message);
#ifdef HAVE_RUST
rs_log_init(sc_log_global_log_level);
#endif
return;
}

Loading…
Cancel
Save