aboutgitcodebugslistschat
path: root/passt.c
diff options
context:
space:
mode:
authorStefano Brivio <sbrivio@redhat.com>2021-03-18 11:36:55 +0100
committerStefano Brivio <sbrivio@redhat.com>2021-03-18 12:58:07 +0100
commitef25cb39a9cb9e36a8872dcd252686023eaec959 (patch)
treeab4df444b0336e44da7b9991d999c55be80ce087 /passt.c
parent48ca38c6068bd15a94b1ecf2977d3f0160bbe63b (diff)
downloadpasst-ef25cb39a9cb9e36a8872dcd252686023eaec959.tar
passt-ef25cb39a9cb9e36a8872dcd252686023eaec959.tar.gz
passt-ef25cb39a9cb9e36a8872dcd252686023eaec959.tar.bz2
passt-ef25cb39a9cb9e36a8872dcd252686023eaec959.tar.lz
passt-ef25cb39a9cb9e36a8872dcd252686023eaec959.tar.xz
passt-ef25cb39a9cb9e36a8872dcd252686023eaec959.tar.zst
passt-ef25cb39a9cb9e36a8872dcd252686023eaec959.zip
passt: Set soft limit for number of open files to hard limit
Default value for /proc/sys/fs/nr_open is 2^20, which is more than enough: set this hard limit as current (soft) limit on start, and drop the 'ulimit -n' from the demo script. Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'passt.c')
-rw-r--r--passt.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/passt.c b/passt.c
index 9786221..6b160c0 100644
--- a/passt.c
+++ b/passt.c
@@ -18,6 +18,7 @@
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/ioctl.h>
+#include <sys/resource.h>
#include <sys/un.h>
#include <ifaddrs.h>
#include <linux/if_ether.h>
@@ -513,6 +514,7 @@ int main(int argc, char **argv)
struct timespec last_time;
struct ctx c = { 0 };
int nfds, i, fd_unix;
+ struct rlimit limit;
if (argc != 1)
usage(argv[0]);
@@ -528,6 +530,16 @@ int main(int argc, char **argv)
exit(EXIT_FAILURE);
}
+ if (getrlimit(RLIMIT_NOFILE, &limit)) {
+ perror("getrlimit");
+ exit(EXIT_FAILURE);
+ }
+ limit.rlim_cur = limit.rlim_max;
+ if (setrlimit(RLIMIT_NOFILE, &limit)) {
+ perror("setrlimit");
+ exit(EXIT_FAILURE);
+ }
+
if (icmp_sock_init(&c) || tcp_sock_init(&c) || udp_sock_init(&c))
exit(EXIT_FAILURE);