Skip to content

Commit 430d0c2

Browse files
committed
fix: various fixes
Signed-off-by: Roberto Scolaro <[email protected]>
1 parent 3ceac12 commit 430d0c2

File tree

7 files changed

+54
-38
lines changed

7 files changed

+54
-38
lines changed

userspace/chisel/chisel.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ void chiselinfo::set_callback_precise_interval(uint64_t interval)
251251
///////////////////////////////////////////////////////////////////////////////
252252
// chisel implementation
253253
///////////////////////////////////////////////////////////////////////////////
254-
sinsp_chisel::sinsp_chisel(sinsp* inspector, std::string filename, bool is_file)
254+
sinsp_chisel::sinsp_chisel(sinsp* inspector, std::string filename, std::shared_ptr<sinsp_filter_check_list> filter_list, bool is_file)
255255
{
256256
m_inspector = inspector;
257257
m_ls = NULL;
@@ -261,6 +261,7 @@ sinsp_chisel::sinsp_chisel(sinsp* inspector, std::string filename, bool is_file)
261261
m_lua_last_interval_sample_time = 0;
262262
m_lua_last_interval_ts = 0;
263263
m_udp_socket = 0;
264+
m_filter_check_list = std::move(filter_list);
264265

265266
load(filename, is_file);
266267
}

userspace/chisel/chisel.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ class chiselinfo
135135
class sinsp_chisel
136136
{
137137
public:
138-
sinsp_chisel(sinsp* inspector, std::string filename, bool is_file = true);
138+
sinsp_chisel(sinsp* inspector, std::string filename, std::shared_ptr<sinsp_filter_check_list> filter_list, bool is_file = true);
139139
~sinsp_chisel();
140140

141141
static void add_lua_package_path(lua_State* ls, const std::string& path);

userspace/chisel/chisel_api.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1152,7 +1152,7 @@ int lua_cbacks::get_container_table(lua_State *ls)
11521152
// Go through the list
11531153
//
11541154
if(ctable != nullptr) {
1155-
auto fld_id = ctable->get_field<std::string>("container_id");
1155+
auto fld_id = ctable->get_field<std::string>("id");
11561156
auto fld_name = ctable->get_field<std::string>("name");
11571157
auto fld_image = ctable->get_field<std::string>("image");
11581158
auto fld_type = ctable->get_field<int>("type");
@@ -1178,6 +1178,9 @@ int lua_cbacks::get_container_table(lua_State *ls)
11781178
lua_pushliteral(ls, "type");
11791179
switch (type)
11801180
{
1181+
case container_type::CT_HOST:
1182+
lua_pushstring(ls, "");
1183+
break;
11811184
case container_type::CT_DOCKER:
11821185
lua_pushstring(ls, "docker");
11831186
break;

userspace/sinspui/cursescomponents.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,12 @@ const char* spy_text_renderer::process_event_spy(sinsp_evt* evt, int64_t* len)
129129
//
130130
// Get and validate the length
131131
//
132-
const sinsp_evt_param* parinfo = evt->get_param(0);
132+
const sinsp_evt_param* parinfo;
133+
try {
134+
parinfo = evt->get_param(0);
135+
} catch (...) {
136+
return NULL;
137+
}
133138
ASSERT(parinfo->m_len == sizeof(int64_t));
134139
*len = *(int64_t*)parinfo->m_val;
135140
if(*len <= 0)

userspace/sysdig/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,16 @@ else()
4545
endif()
4646

4747
list(APPEND SOURCE_FILES
48+
filterchecks/sinsp_filtercheck_syslog.cpp
49+
utils/sinsp_syslog.cpp
4850
utils/sinsp_opener.cpp
4951
utils/plugin_utils.cpp
5052
utils/supported_events.cpp
5153
utils/supported_fields.cpp)
5254

5355
list(APPEND SOURCE_FILES_CSYSDIG
56+
filterchecks/sinsp_filtercheck_syslog.cpp
57+
utils/sinsp_syslog.cpp
5458
utils/sinsp_opener.cpp
5559
utils/plugin_utils.cpp
5660
utils/supported_events.cpp

userspace/sysdig/csysdig.cpp

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ limitations under the License.
4444
#include "utils/plugin_utils.h"
4545
#include "utils/sinsp_opener.h"
4646
#include "utils/supported_fields.h"
47+
#include "filterchecks/sinsp_filtercheck_syslog.h"
4748

4849
#ifdef _WIN32
4950
#include "win32/getopt.h"
@@ -258,7 +259,8 @@ static void print_views(chisel_view_manager* view_manager)
258259
captureinfo do_inspect(sinsp* inspector,
259260
uint64_t cnt,
260261
sinsp_cursesui* ui,
261-
const chisel_table::output_type& output_type)
262+
const chisel_table::output_type& output_type,
263+
std::shared_ptr<sinsp_syslog_decoder> syslog_decoder)
262264
{
263265
captureinfo retval;
264266
int32_t res;
@@ -279,7 +281,9 @@ captureinfo do_inspect(sinsp* inspector,
279281
break;
280282
}
281283

284+
syslog_decoder->reset();
282285
res = inspector->next(&ev);
286+
syslog_decoder->parse(ev);
283287

284288
if(res == SCAP_TIMEOUT || res == SCAP_FILTERED_EVENT)
285289
{
@@ -352,6 +356,7 @@ sysdig_init_res csysdig_init(int argc, char **argv)
352356
int32_t json_last_row = 0;
353357
int32_t sorting_col = -1;
354358
bool list_views = false;
359+
std::shared_ptr<sinsp_syslog_decoder> syslog_decoder = std::make_shared<sinsp_syslog_decoder>();
355360

356361
#ifndef _WIN32
357362
chisel_table::output_type output_type = chisel_table::OT_CURSES;
@@ -643,6 +648,7 @@ sysdig_init_res csysdig_init(int argc, char **argv)
643648

644649
// TODO(therealbobo): add plugins filterchecks
645650
filter_list = std::make_shared<sinsp_filter_check_list>();
651+
filter_list->add_filter_check(std::make_unique<sinsp_filter_check_syslog>(syslog_decoder));
646652
plugins.init_loaded_plugins(inspector, filter_list.get());
647653

648654
for (auto plugin : inspector->m_plugin_manager->plugins())
@@ -895,10 +901,7 @@ sysdig_init_res csysdig_init(int argc, char **argv)
895901
//
896902
// Start the capture loop
897903
//
898-
cinfo = do_inspect(inspector,
899-
cnt,
900-
&ui,
901-
output_type);
904+
cinfo = do_inspect(inspector, cnt, &ui, output_type, syslog_decoder);
902905

903906
if(output_type == chisel_table::OT_JSON)
904907
{

userspace/sysdig/sysdig.cpp

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)