diff --git a/userspace/libscap/scap.c b/userspace/libscap/scap.c index 417920671b..e095b962ff 100644 --- a/userspace/libscap/scap.c +++ b/userspace/libscap/scap.c @@ -430,7 +430,7 @@ scap_t* scap_open_nodriver_int(char *error, handle->m_machine_info.reserved3 = 0; handle->m_machine_info.reserved4 = 0; handle->m_driver_procinfo = NULL; - handle->m_fd_lookup_limit = 20; // fd lookup is limited here because is very expensive + handle->m_fd_lookup_limit = SCAP_NODRIVER_MAX_FD_LOOKUP; // fd lookup is limited here because is very expensive // // Create the interface list diff --git a/userspace/libscap/scap_fds.c b/userspace/libscap/scap_fds.c index 9498bb0858..def0881ddb 100644 --- a/userspace/libscap/scap_fds.c +++ b/userspace/libscap/scap_fds.c @@ -1413,6 +1413,14 @@ int32_t scap_fd_scan_fd_dir(scap_t *handle, char *procdir, scap_threadinfo *tinf { continue; } + + // In no driver mode to limit cpu usage we just parse sockets + // because we are interested only on them + if(handle->m_mode == SCAP_MODE_NODRIVER && !S_ISSOCK(sb.st_mode)) + { + continue; + } + switch(sb.st_mode & S_IFMT) { case S_IFIFO: diff --git a/userspace/libscap/settings.h b/userspace/libscap/settings.h index cbc0b5787e..20a18b1fe5 100644 --- a/userspace/libscap/settings.h +++ b/userspace/libscap/settings.h @@ -5,3 +5,5 @@ #define INCLUDE_UNKNOWN_SOCKET_FDS #define USE_ZLIB + +#define SCAP_NODRIVER_MAX_FD_LOOKUP 20 \ No newline at end of file