@@ -48,6 +48,8 @@ limitations under the License.
4848#include < chisel/chisel_fields_info.h>
4949#endif
5050
51+ #include " filterchecks/sinsp_filtercheck_syslog.h"
52+
5153#include " utils/sinsp_opener.h"
5254#include " utils/plugin_utils.h"
5355#include " utils/supported_events.h"
@@ -696,19 +698,15 @@ std::vector<std::string> split_nextrun_args(std::string na)
696698//
697699// Event processing loop
698700//
699- captureinfo do_inspect (sinsp* inspector,
700- sinsp_cycledumper* dumper,
701- uint64_t cnt,
702- uint64_t duration_to_tot_ns,
703- bool quiet,
704- bool json,
705- bool do_flush,
706- bool reset_colors,
707- bool print_progress,
708- std::unique_ptr<sinsp_filter> display_filter,
709- std::vector<summary_table_entry> &summary_table,
710- sinsp_evt_formatter* syscall_evt_formatter,
711- sinsp_evt_formatter* plugin_evt_formatter)
701+ captureinfo do_inspect (sinsp *inspector, sinsp_cycledumper *dumper,
702+ uint64_t cnt, uint64_t duration_to_tot_ns, bool quiet,
703+ bool json, bool do_flush, bool reset_colors,
704+ bool print_progress,
705+ std::unique_ptr<sinsp_filter> display_filter,
706+ std::vector<summary_table_entry> &summary_table,
707+ sinsp_evt_formatter *syscall_evt_formatter,
708+ sinsp_evt_formatter *plugin_evt_formatter,
709+ std::shared_ptr<sinsp_syslog_decoder> syslog_decoder)
712710{
713711 captureinfo retval;
714712 int32_t res;
@@ -745,7 +743,10 @@ captureinfo do_inspect(sinsp* inspector,
745743 handle_end_of_file (inspector, print_progress, reset_colors, formatter);
746744 break ;
747745 }
746+ syslog_decoder->reset ();
748747 res = inspector->next (&ev);
748+ syslog_decoder->parse (ev);
749+
749750 if (dumper && ev && res != SCAP_EOF)
750751 {
751752 dumper->dump (ev);
@@ -825,9 +826,9 @@ captureinfo do_inspect(sinsp* inspector,
825826#ifdef HAS_CHISELS
826827 if (!g_chisels.empty ())
827828 {
828- for (std::vector<sinsp_chisel*>::iterator it = g_chisels. begin (); it != g_chisels. end (); ++it )
829+ for (const auto & chisel : g_chisels)
829830 {
830- if ((*it) ->run (ev) == false )
831+ if (chisel ->run (ev) == false )
831832 {
832833 continue ;
833834 }
@@ -1008,6 +1009,7 @@ sysdig_init_res sysdig_init(int argc, char **argv)
10081009 std::shared_ptr<sinsp_filter_factory> filter_factory;
10091010 color_term_out color_flag = COLOR;
10101011 bool user_defined_format = false ;
1012+ std::shared_ptr<sinsp_syslog_decoder> syslog_decoder = std::make_shared<sinsp_syslog_decoder>();
10111013
10121014 // These variables are for the cycle_writer engine
10131015 int duration_seconds = 0 ;
@@ -1085,6 +1087,7 @@ sysdig_init_res sysdig_init(int argc, char **argv)
10851087 inspector->set_hostname_and_port_resolution_mode (false );
10861088
10871089 filter_list.reset (new sinsp_filter_check_list ());
1090+ filter_list->add_filter_check (std::make_unique<sinsp_filter_check_syslog>(syslog_decoder));
10881091 filter_factory.reset (new sinsp_filter_factory (inspector.get (), *filter_list.get ()));
10891092
10901093#ifdef HAS_CHISELS
@@ -1148,6 +1151,7 @@ sysdig_init_res sysdig_init(int argc, char **argv)
11481151
11491152 // TODO(therealbobo): add plugins filterchecks
11501153 auto filter_list = std::make_shared<sinsp_filter_check_list>();
1154+ filter_list->add_filter_check (std::make_unique<sinsp_filter_check_syslog>(syslog_decoder));
11511155
11521156 for (auto plugin : inspector->m_plugin_manager ->plugins ())
11531157 {
@@ -1158,7 +1162,7 @@ sysdig_init_res sysdig_init(int argc, char **argv)
11581162 }
11591163 }
11601164 auto tmp_filter_factory = std::make_shared<sinsp_filter_factory>(inspector.get (), *filter_list.get ());
1161- sinsp_chisel* ch = new sinsp_chisel (inspector.get (), chisel);
1165+ sinsp_chisel* ch = new sinsp_chisel (inspector.get (), chisel, filter_list );
11621166 parse_chisel_args (ch, tmp_filter_factory, optind, argc, argv, &n_filterargs);
11631167 g_chisels.push_back (ch);
11641168 }
@@ -1701,6 +1705,7 @@ sysdig_init_res sysdig_init(int argc, char **argv)
17011705 for (auto &ch : g_chisels)
17021706 {
17031707 auto filter_list = std::make_shared<sinsp_filter_check_list>();
1708+ filter_list->add_filter_check (std::make_unique<sinsp_filter_check_syslog>(syslog_decoder));
17041709
17051710 for (auto plugin : inspector->m_plugin_manager ->plugins ())
17061711 {
@@ -1905,19 +1910,14 @@ sysdig_init_res sysdig_init(int argc, char **argv)
19051910 // from messing up the output and possibly the shell line after program termination.
19061911 disable_tty_echo ();
19071912#endif
1908- cinfo = do_inspect (inspector.get (),
1909- dumper.get (),
1910- cnt,
1911- uint64_t (duration_to_tot*ONE_SECOND_IN_NS),
1912- quiet,
1913- jflag,
1914- unbuf_flag,
1915- reset_colors,
1916- opener.options .print_progress ,
1917- std::move (display_filter),
1918- summary_table,
1919- &syscall_evt_formatter,
1920- &plugin_evt_formatter);
1913+ cinfo = do_inspect (
1914+ inspector.get (), dumper.get (), cnt,
1915+ uint64_t (duration_to_tot * ONE_SECOND_IN_NS), quiet,
1916+ jflag, unbuf_flag, reset_colors,
1917+ opener.options .print_progress ,
1918+ std::move (display_filter), summary_table,
1919+ &syscall_evt_formatter, &plugin_evt_formatter,
1920+ syslog_decoder);
19211921
19221922 duration = ((double )clock ()) / CLOCKS_PER_SEC - duration;
19231923
0 commit comments