instance: convert jail feature flags to bitmap
authorFelix Fietkau <nbd@nbd.name>
Wed, 28 May 2025 11:03:14 +0000 (13:03 +0200)
committerFelix Fietkau <nbd@nbd.name>
Wed, 28 May 2025 11:03:17 +0000 (13:03 +0200)
Reduces the amount of boilerplate code

Signed-off-by: Felix Fietkau <nbd@nbd.name>
service/instance.c
service/instance.h

index 1d04041e44f0a0720aa6c8179e13b9615688865f..df8c09b0fcb022be3014d65d4a1f98abbd5d6f7f 100644 (file)
@@ -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);
index 15eb99714c65bffd51d46d046b0bd19d0ada503a..215cbc77ed8aa5af30f7f326ece53b2a97fd8415 100644 (file)
 #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;