summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Fietkau2025-05-28 11:03:14 +0000
committerFelix Fietkau2025-05-28 11:03:17 +0000
commit37847fee4fe74cdbc0565567129c5a463556ed91 (patch)
tree4a35c433a7d22252f90d4cc0856dcac82acc7928
parent891094aefcb28a376a43b7c539f599a8e0987e4d (diff)
downloadprocd-37847fee4fe74cdbc0565567129c5a463556ed91.tar.gz
instance: convert jail feature flags to bitmap
Reduces the amount of boilerplate code Signed-off-by: Felix Fietkau <nbd@nbd.name>
-rw-r--r--service/instance.c35
-rw-r--r--service/instance.h23
2 files changed, 16 insertions, 42 deletions
diff --git a/service/instance.c b/service/instance.c
index 1d04041..df8c09b 100644
--- a/service/instance.c
+++ b/service/instance.c
@@ -1032,31 +1032,7 @@ instance_config_changed(struct service_instance *in, struct service_instance *in
if (string_changed(in->jail.pidfile, in_new->jail.pidfile))
return true;
- if (in->jail.procfs != in_new->jail.procfs)
- return true;
-
- if (in->jail.sysfs != in_new->jail.sysfs)
- return true;
-
- if (in->jail.ubus != in_new->jail.ubus)
- return true;
-
- if (in->jail.log != in_new->jail.log)
- return true;
-
- if (in->jail.ronly != in_new->jail.ronly)
- return true;
-
- if (in->jail.netns != in_new->jail.netns)
- return true;
-
- if (in->jail.userns != in_new->jail.userns)
- return true;
-
- if (in->jail.cgroupsns != in_new->jail.cgroupsns)
- return true;
-
- if (in->jail.console != in_new->jail.console)
+ if (in->jail.flags != in_new->jail.flags)
return true;
if (in->watchdog.mode != in_new->watchdog.mode)
@@ -1548,14 +1524,7 @@ instance_config_move(struct service_instance *in, struct service_instance *in_sr
in->gr_gid = in_src->gr_gid;
in->has_jail = in_src->has_jail;
- in->jail.procfs = in_src->jail.procfs;
- in->jail.sysfs = in_src->jail.sysfs;
- in->jail.ubus = in_src->jail.ubus;
- in->jail.log = in_src->jail.log;
- in->jail.ronly = in_src->jail.ronly;
- in->jail.netns = in_src->jail.netns;
- in->jail.cgroupsns = in_src->jail.cgroupsns;
- in->jail.console = in_src->jail.console;
+ in->jail.flags = in_src->jail.flags;
in->jail.argc = in_src->jail.argc;
instance_config_move_strdup(&in->pidfile, in_src->pidfile);
diff --git a/service/instance.h b/service/instance.h
index 15eb997..215cbc7 100644
--- a/service/instance.h
+++ b/service/instance.h
@@ -24,15 +24,20 @@
#define SIGNALLED_OFFSET 128
struct jail {
- bool procfs;
- bool sysfs;
- bool ubus;
- bool log;
- bool ronly;
- bool netns;
- bool userns;
- bool cgroupsns;
- bool console;
+ union {
+ struct {
+ uint32_t procfs:1;
+ uint32_t sysfs:1;
+ uint32_t ubus:1;
+ uint32_t log:1;
+ uint32_t ronly:1;
+ uint32_t netns:1;
+ uint32_t userns:1;
+ uint32_t cgroupsns:1;
+ uint32_t console:1;
+ };
+ uint32_t flags;
+ };
char *name;
char *hostname;
char *pidfile;