config: implement max_cpu_num in PB
authorRobert Swiecki <robert@swiecki.net>
Mon, 19 Jun 2017 15:05:01 +0000 (17:05 +0200)
committerRobert Swiecki <robert@swiecki.net>
Mon, 19 Jun 2017 15:05:01 +0000 (17:05 +0200)
cmdline.c
config.c
config.proto
configs/bash-with-fake-geteuid.cfg

index ff14f324b66c4d78b4f597934aa3ac7c5bda32d5..dc43d2e85f928907c668d70501c99a008fc9d856 100644 (file)
--- a/cmdline.c
+++ b/cmdline.c
@@ -213,7 +213,7 @@ void cmdlineLogParams(struct nsjconf_t *nsjconf)
              "max_conns_per_ip:%u, time_limit:%ld, personality:%#lx, daemonize:%s, "
              "clone_newnet:%s, clone_newuser:%s, clone_newns:%s, clone_newpid:%s, "
              "clone_newipc:%s, clonew_newuts:%s, clone_newcgroup:%s, keep_caps:%s, "
-             "tmpfs_size:%zu, disable_no_new_privs:%s",
+             "tmpfs_size:%zu, disable_no_new_privs:%s, max_cpu_num:%zu",
              nsjconf->hostname, nsjconf->chroot ? nsjconf->chroot : "[NULL]", nsjconf->argv[0],
              nsjconf->bindhost, nsjconf->port, nsjconf->max_conns_per_ip, nsjconf->tlimit,
              nsjconf->personality, logYesNo(nsjconf->daemonize), logYesNo(nsjconf->clone_newnet),
@@ -221,7 +221,7 @@ void cmdlineLogParams(struct nsjconf_t *nsjconf)
              logYesNo(nsjconf->clone_newpid), logYesNo(nsjconf->clone_newipc),
              logYesNo(nsjconf->clone_newuts), logYesNo(nsjconf->clone_newcgroup),
              logYesNo(nsjconf->keep_caps), nsjconf->tmpfs_size,
-             logYesNo(nsjconf->disable_no_new_privs));
+             logYesNo(nsjconf->disable_no_new_privs), nsjconf->max_cpu_num);
 
        {
                struct mounts_t *p;
index 7abffc62fa7972a25d101b4bf0e9d317a0a34669..512d3621b6d37443b0d1177e8a3c33bc2f186520 100644 (file)
--- a/config.c
+++ b/config.c
@@ -67,6 +67,7 @@ static bool configParseInternal(struct nsjconf_t *nsjconf, Nsjail__NsJailConfig
        nsjconf->bindhost = utilStrDup(njc->bindhost);
        nsjconf->max_conns_per_ip = njc->max_conns_per_ip;
        nsjconf->tlimit = njc->time_limit;
+       nsjconf->max_cpu_num = njc->max_cpu_num;
        nsjconf->daemonize = njc->daemon;
 
        if (njc->has_log_fd) {
index d5d9d6b03bbccf9223450493864781aa6d40e40e..39a28deb0fcd58fa511768c443b5f0ea20affbc4 100644 (file)
@@ -89,6 +89,8 @@ message NsJailConfig
     required uint32 time_limit = 13 [ default = 600 ];
     /* Should nsjail go into background? */
     required bool daemon = 14 [ default = false ];
+    /* Maximum number of CPUs to use: 0 - no limit */
+    required uint32 max_cpu_num = 62;
 
     /* FD to log to. */
     optional int32 log_fd = 61;
index 927eb58bea3bdfa1963cb9da06e251e1554f453f..5b71e495be3f341b5d107b6d5d70c7c759ad9938 100644 (file)
@@ -19,6 +19,7 @@ port: 31337
 
 time_limit: 100
 daemon: false
+max_cpu_num: 1
 
 keep_env: false
 envar: "ENVAR1=VALUE1"