Skip to content

Commit

Permalink
fix: multiple definitions for scap_engine_handle
Browse files Browse the repository at this point in the history
Signed-off-by: Federico Aponte <federico.aponte@sysdig.com>
  • Loading branch information
federico-sysdig authored and poiana committed Aug 14, 2024
1 parent 874e573 commit a5e94e9
Show file tree
Hide file tree
Showing 11 changed files with 99 additions and 103 deletions.
38 changes: 19 additions & 19 deletions userspace/libscap/engine/bpf/scap_bpf.c
Original file line number Diff line number Diff line change
Expand Up @@ -1163,23 +1163,23 @@ int32_t scap_bpf_stop_capture(struct scap_engine_handle engine)
static int32_t calibrate_socket_file_ops(struct scap_engine_handle engine)
{
/* We just need to enable the socket syscall for the socket calibration */
engine.m_handle->curr_sc_set.ppm_sc[PPM_SC_SOCKET] = 1;
((SCAP_HANDLE_T*)engine.m_handle)->curr_sc_set.ppm_sc[PPM_SC_SOCKET] = 1;
if(scap_bpf_start_capture(engine) != SCAP_SUCCESS)
{
return scap_errprintf(engine.m_handle->m_lasterr, errno, "unable to set the socket syscall for the calibration");
return scap_errprintf(((SCAP_HANDLE_T*)engine.m_handle)->m_lasterr, errno, "unable to set the socket syscall for the calibration");
}

int fd = socket(AF_INET, SOCK_DGRAM, 0);
if(fd == -1)
{
return scap_errprintf(engine.m_handle->m_lasterr, errno, "unable to create a socket for the calibration");
return scap_errprintf(((SCAP_HANDLE_T*)engine.m_handle)->m_lasterr, errno, "unable to create a socket for the calibration");
}
close(fd);

/* We need to stop the capture */
if(scap_bpf_stop_capture(engine) != SCAP_SUCCESS)
{
return scap_errprintf(engine.m_handle->m_lasterr, errno, "unable to stop the capture after the calibration");
return scap_errprintf(((SCAP_HANDLE_T*)engine.m_handle)->m_lasterr, errno, "unable to stop the capture after the calibration");
}

return SCAP_SUCCESS;
Expand Down Expand Up @@ -1890,7 +1890,7 @@ int32_t scap_bpf_get_n_tracepoint_hit(struct scap_engine_handle engine, long* re

static int32_t next(struct scap_engine_handle engine, scap_evt **pevent, uint16_t *pdevid, uint32_t *pflags)
{
return ringbuffer_next(&engine.m_handle->m_dev_set, pevent, pdevid, pflags);
return ringbuffer_next(&((SCAP_HANDLE_T*)engine.m_handle)->m_dev_set, pevent, pdevid, pflags);
}

static int32_t unsupported_config(struct scap_engine_handle engine, const char* msg)
Expand Down Expand Up @@ -1985,7 +1985,7 @@ static int32_t init(scap_t* handle, scap_open_args *oargs)
struct scap_bpf_engine_params *params = oargs->engine_params;
strlcpy(bpf_probe_buf, params->bpf_probe, SCAP_MAX_PATH_SIZE);

if(check_buffer_bytes_dim(engine.m_handle->m_lasterr, params->buffer_bytes_dim) != SCAP_SUCCESS)
if(check_buffer_bytes_dim(((SCAP_HANDLE_T*)engine.m_handle)->m_lasterr, params->buffer_bytes_dim) != SCAP_SUCCESS)
{
return SCAP_FAILURE;
}
Expand All @@ -1996,18 +1996,18 @@ static int32_t init(scap_t* handle, scap_open_args *oargs)
ssize_t num_cpus = sysconf(_SC_NPROCESSORS_CONF);
if(num_cpus == -1)
{
return scap_errprintf(engine.m_handle->m_lasterr, errno, "cannot obtain the number of available CPUs from '_SC_NPROCESSORS_CONF'");
return scap_errprintf(((SCAP_HANDLE_T*)engine.m_handle)->m_lasterr, errno, "cannot obtain the number of available CPUs from '_SC_NPROCESSORS_CONF'");
}

engine.m_handle->m_ncpus = num_cpus;
((SCAP_HANDLE_T*)engine.m_handle)->m_ncpus = num_cpus;

ssize_t num_devs = sysconf(_SC_NPROCESSORS_ONLN);
if(num_devs == -1)
{
return scap_errprintf(engine.m_handle->m_lasterr, errno, "cannot obtain the number of online CPUs from '_SC_NPROCESSORS_ONLN'");
return scap_errprintf(((SCAP_HANDLE_T*)engine.m_handle)->m_lasterr, errno, "cannot obtain the number of online CPUs from '_SC_NPROCESSORS_ONLN'");
}

rc = devset_init(&engine.m_handle->m_dev_set, num_devs, engine.m_handle->m_lasterr);
rc = devset_init(&((SCAP_HANDLE_T*)engine.m_handle)->m_dev_set, num_devs, ((SCAP_HANDLE_T*)engine.m_handle)->m_lasterr);
if(rc != SCAP_SUCCESS)
{
return rc;
Expand All @@ -2028,32 +2028,32 @@ static int32_t init(scap_t* handle, scap_open_args *oargs)
}

/* Store interesting sc codes */
memcpy(&engine.m_handle->curr_sc_set, &oargs->ppm_sc_of_interest, sizeof(interesting_ppm_sc_set));
memcpy(&((SCAP_HANDLE_T*)engine.m_handle)->curr_sc_set, &oargs->ppm_sc_of_interest, sizeof(interesting_ppm_sc_set));

engine.m_handle->m_flags = 0;
((SCAP_HANDLE_T*)engine.m_handle)->m_flags = 0;
if(scap_get_bpf_stats_enabled())
{
engine.m_handle->m_flags |= ENGINE_FLAG_BPF_STATS_ENABLED;
((SCAP_HANDLE_T*)engine.m_handle)->m_flags |= ENGINE_FLAG_BPF_STATS_ENABLED;
}

return SCAP_SUCCESS;
}

static uint64_t get_flags(struct scap_engine_handle engine)
{
return engine.m_handle->m_flags;
return ((SCAP_HANDLE_T*)engine.m_handle)->m_flags;
}

static uint32_t get_n_devs(struct scap_engine_handle engine)
{
return engine.m_handle->m_dev_set.m_ndevs;
return ((SCAP_HANDLE_T*)engine.m_handle)->m_dev_set.m_ndevs;
}

static uint64_t get_max_buf_used(struct scap_engine_handle engine)
{
uint64_t i;
uint64_t max = 0;
struct scap_device_set *devset = &engine.m_handle->m_dev_set;
struct scap_device_set *devset = &((SCAP_HANDLE_T*)engine.m_handle)->m_dev_set;

for(i = 0; i < devset->m_ndevs; i++)
{
Expand All @@ -2066,19 +2066,19 @@ static uint64_t get_max_buf_used(struct scap_engine_handle engine)

uint64_t scap_bpf_get_api_version(struct scap_engine_handle engine)
{
return engine.m_handle->m_api_version;
return ((SCAP_HANDLE_T*)engine.m_handle)->m_api_version;
}

uint64_t scap_bpf_get_schema_version(struct scap_engine_handle engine)
{
return engine.m_handle->m_schema_version;
return ((SCAP_HANDLE_T*)engine.m_handle)->m_schema_version;
}

const struct scap_vtable scap_bpf_engine = {
.name = BPF_ENGINE,
.savefile_ops = NULL,

.alloc_handle = alloc_handle,
.alloc_handle = (void* (*)(scap_t*, char*))alloc_handle,
.init = init,
.get_flags = get_flags,
.free_handle = free_handle,
Expand Down
18 changes: 9 additions & 9 deletions userspace/libscap/engine/gvisor/gvisor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -149,34 +149,34 @@ SCAP_HANDLE_T* gvisor_alloc_handle(scap_t* main_handle, char* lasterr_ptr)

int32_t gvisor_init(scap_t* main_handle, scap_open_args* oargs)
{
scap_gvisor::engine *gv = main_handle->m_engine.m_handle;
auto gv = (SCAP_HANDLE_T*)main_handle->m_engine.m_handle;
auto params = (scap_gvisor_engine_params*)oargs->engine_params;
return gv->init(params->gvisor_config_path, params->gvisor_root_path, params->no_events, params->gvisor_epoll_timeout, params->gvisor_platform);
}

void gvisor_free_handle(scap_engine_handle engine)
{
delete engine.m_handle;
delete (SCAP_HANDLE_T*)engine.m_handle;
}

int32_t gvisor_start_capture(scap_engine_handle engine)
{
return engine.m_handle->start_capture();
return ((SCAP_HANDLE_T*)engine.m_handle)->start_capture();
}

int32_t gvisor_close(scap_engine_handle engine)
{
return engine.m_handle->close();
return ((SCAP_HANDLE_T*)engine.m_handle)->close();
}

int32_t gvisor_stop_capture(scap_engine_handle engine)
{
return engine.m_handle->stop_capture();
return ((SCAP_HANDLE_T*)engine.m_handle)->stop_capture();
}

int32_t gvisor_next(scap_engine_handle engine, scap_evt** pevent, uint16_t* pdevid, uint32_t* pflags)
{
return engine.m_handle->next(pevent, pdevid, pflags);
return ((SCAP_HANDLE_T*)engine.m_handle)->next(pevent, pdevid, pflags);
}

int32_t gvisor_configure(scap_engine_handle engine, scap_setting setting, unsigned long arg1, unsigned long arg2)
Expand All @@ -186,12 +186,12 @@ int32_t gvisor_configure(scap_engine_handle engine, scap_setting setting, unsign

int32_t gvisor_get_stats(scap_engine_handle engine, scap_stats* stats)
{
return engine.m_handle->get_stats(stats);
return ((SCAP_HANDLE_T*)engine.m_handle)->get_stats(stats);
}

const metrics_v2* gvisor_get_stats_v2(scap_engine_handle engine, uint32_t flags, uint32_t* nstats, int32_t* rc)
{
return engine.m_handle->get_stats_v2(flags, nstats, rc);
return ((SCAP_HANDLE_T*)engine.m_handle)->get_stats_v2(flags, nstats, rc);
}

int32_t gvisor_get_n_tracepoint_hit(scap_engine_handle engine, long* ret)
Expand All @@ -215,7 +215,7 @@ extern const scap_vtable scap_gvisor_engine = {
.name = GVISOR_ENGINE,
.savefile_ops = nullptr,

.alloc_handle = gvisor_alloc_handle,
.alloc_handle = (void* (*)(scap_t*, char*))gvisor_alloc_handle,
.init = gvisor_init,
.get_flags = nullptr,
.free_handle = gvisor_free_handle,
Expand Down
Loading

0 comments on commit a5e94e9

Please sign in to comment.