+
+ 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);