chiark / gitweb /
networkd: link - clean up state files
[elogind.git] / src / core / busname.h
index 6debd48551b8aa2a87d38e9d81b6f6ff1d25be03..ab3082bb05ed8ba3d2b8ee9e92cf96120ceb7c1b 100644 (file)
 ***/
 
 typedef struct BusName BusName;
+typedef struct BusNamePolicy BusNamePolicy;
 
 #include "unit.h"
 
 typedef enum BusNameState {
         BUSNAME_DEAD,
+        BUSNAME_REGISTERED,
         BUSNAME_LISTENING,
         BUSNAME_RUNNING,
         BUSNAME_FAILED,
@@ -48,12 +50,45 @@ struct BusName {
         char *name;
         int starter_fd;
 
+        bool activating;
+        bool accept_fd;
+
         UnitRef service;
 
         BusNameState state, deserialized_state;
         BusNameResult result;
 
         sd_event_source *event_source;
+
+        LIST_HEAD(BusNamePolicy, policy);
+};
+
+typedef enum BusNamePolicyType {
+        BUSNAME_POLICY_TYPE_USER,
+        BUSNAME_POLICY_TYPE_GROUP,
+        BUSNAME_POLICY_TYPE_WORLD,
+        _BUSNAME_POLICY_TYPE_MAX,
+        _BUSNAME_POLICY_TYPE_INVALID = -1
+} BusNamePolicyType;
+
+typedef enum BusNamePolicyAccess {
+        BUSNAME_POLICY_ACCESS_SEE,
+        BUSNAME_POLICY_ACCESS_TALK,
+        BUSNAME_POLICY_ACCESS_OWN,
+        _BUSNAME_POLICY_ACCESS_MAX,
+        _BUSNAME_POLICY_ACCESS_INVALID = -1
+} BusNamePolicyAccess;
+
+struct BusNamePolicy {
+        BusNamePolicyType type;
+        BusNamePolicyAccess access;
+
+        union {
+                uid_t uid;
+                gid_t gid;
+        };
+
+        LIST_FIELDS(BusNamePolicy, policy);
 };
 
 extern const UnitVTable busname_vtable;
@@ -63,3 +98,6 @@ BusNameState busname_state_from_string(const char *s) _pure_;
 
 const char* busname_result_to_string(BusNameResult i) _const_;
 BusNameResult busname_result_from_string(const char *s) _pure_;
+
+const char* busname_policy_access_to_string(BusNamePolicyAccess i) _const_;
+BusNamePolicyAccess busname_policy_access_from_string(const char *s) _pure_;