service: optimize relaying stdio output of daemons a bit.
[project/procd.git] / service / instance.h
index 65b670e..3fb33e9 100644 (file)
 
 #include <libubox/vlist.h>
 #include <libubox/uloop.h>
+#include <libubox/ustream.h>
 #include "../utils/utils.h"
 
 #define RESPAWN_ERROR  (5 * 60)
 
+struct jail {
+       bool procfs;
+       bool sysfs;
+       bool ubus;
+       bool log;
+       char *name;
+       char *root;
+       struct blobmsg_list mount;
+       int argc;
+};
+
 struct service_instance {
        struct vlist_node node;
        struct service *srv;
@@ -29,12 +41,20 @@ struct service_instance {
        int8_t nice;
        bool valid;
 
+       uid_t uid;
+       gid_t gid;
+
        bool halt;
        bool restart;
        bool respawn;
        int respawn_count;
        struct timespec start;
 
+       bool trace;
+       bool has_jail;
+       struct jail jail;
+       char *seccomp;
+
        uint32_t respawn_timeout;
        uint32_t respawn_threshold;
        uint32_t respawn_retry;
@@ -42,6 +62,8 @@ struct service_instance {
        struct blob_attr *config;
        struct uloop_process proc;
        struct uloop_timeout timeout;
+       struct ustream_fd _stdout;
+       struct ustream_fd _stderr;
 
        struct blob_attr *command;
        struct blob_attr *trigger;
@@ -49,6 +71,8 @@ struct service_instance {
        struct blobmsg_list data;
        struct blobmsg_list netdev;
        struct blobmsg_list file;
+       struct blobmsg_list limits;
+       struct blobmsg_list errors;
 };
 
 void instance_start(struct service_instance *in);