[systemd-devel] [PATCH v4 3/4] unit: add UnitMask enum and get unit scope(mask) api from property

Lennart Poettering lennart at poettering.net
Wed Dec 3 10:43:00 PST 2014


On Tue, 02.12.14 23:29, WaLyong Cho (walyong.cho at samsung.com) wrote:

Hmm, what's the rationale for this? Can you elaborate?

> ---
>  Makefile.am                          |   7 ++
>  src/shared/.gitignore                |   1 +
>  src/shared/unit-name.c               |  22 ++++
>  src/shared/unit-name.h               |  26 +++++
>  src/shared/unit-property-scope.gperf | 202 +++++++++++++++++++++++++++++++++++
>  5 files changed, 258 insertions(+)
>  create mode 100644 src/shared/unit-property-scope.gperf
> 
> diff --git a/Makefile.am b/Makefile.am
> index 38d320f..3cec5fb 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -819,6 +819,7 @@ libsystemd_shared_la_SOURCES = \
>  	src/shared/cgroup-show.h \
>  	src/shared/unit-name.c \
>  	src/shared/unit-name.h \
> +	src/shared/unit-property-scope.c \
>  	src/shared/utmp-wtmp.h \
>  	src/shared/watchdog.c \
>  	src/shared/watchdog.h \
> @@ -907,6 +908,12 @@ libsystemd_shared_la_CFLAGS = \
>  	$(SECCOMP_CFLAGS) \
>  	-pthread
>  
> +EXTRA_DIST += \
> +	src/shared/unit-property-scope.gperf
> +
> +CLEANFILES += \
> +	src/shared/unit-property-scope.c
> +
>  libsystemd_shared_la_LIBADD = \
>  	$(CAP_LIBS)
>  
> diff --git a/src/shared/.gitignore b/src/shared/.gitignore
> index 61709e8..e7faa23 100644
> --- a/src/shared/.gitignore
> +++ b/src/shared/.gitignore
> @@ -10,3 +10,4 @@
>  /arphrd-from-name.h
>  /arphrd-list.txt
>  /arphrd-to-name.h
> +/unit-property-scope.c
> diff --git a/src/shared/unit-name.c b/src/shared/unit-name.c
> index 21b6691..7cf0160 100644
> --- a/src/shared/unit-name.c
> +++ b/src/shared/unit-name.c
> @@ -602,3 +602,25 @@ static const char* const unit_dependency_table[_UNIT_DEPENDENCY_MAX] = {
>  };
>  
>  DEFINE_STRING_TABLE_LOOKUP(unit_dependency, UnitDependency);
> +
> +static UnitMask unit_get_mask_from_property(const char *property) {
> +        const unit_property_scope_mapping *m;
> +
> +        assert(property);
> +
> +        m = unit_property_scope_mapping_lookup(property, strlen(property));
> +        if (m)
> +                return m->scope;
> +
> +        return _UNIT_MASK_MAX;
> +
> +}
> +
> +bool unit_can_have_property(UnitType t, const char *property) {
> +        UnitMask m;
> +
> +        assert(property);
> +
> +        m = unit_get_mask_from_property(property);
> +        return !!((1ULL << t) & m);
> +}
> diff --git a/src/shared/unit-name.h b/src/shared/unit-name.h
> index 6f139cc..191c930 100644
> --- a/src/shared/unit-name.h
> +++ b/src/shared/unit-name.h
> @@ -28,6 +28,7 @@
>  #define UNIT_NAME_MAX 256
>  
>  typedef enum UnitType UnitType;
> +typedef enum UnitMask UnitMask;
>  typedef enum UnitLoadState UnitLoadState;
>  typedef enum UnitDependency UnitDependency;
>  
> @@ -49,6 +50,23 @@ enum UnitType {
>          _UNIT_TYPE_INVALID = -1
>  };
>  
> +enum UnitMask {
> +        UNIT_MASK_SERVICE       = 1ULL << UNIT_SERVICE,
> +        UNIT_MASK_SOCKET        = 1ULL << UNIT_SOCKET,
> +        UNIT_MASK_BUSNAME       = 1ULL << UNIT_BUSNAME,
> +        UNIT_MASK_TARGET        = 1ULL << UNIT_TARGET,
> +        UNIT_MASK_SNAPSHOT      = 1ULL << UNIT_SNAPSHOT,
> +        UNIT_MASK_DEVICE        = 1ULL << UNIT_DEVICE,
> +        UNIT_MASK_MOUNT         = 1ULL << UNIT_MOUNT,
> +        UNIT_MASK_AUTOMOUNT     = 1ULL << UNIT_AUTOMOUNT,
> +        UNIT_MASK_SWAP          = 1ULL << UNIT_SWAP,
> +        UNIT_MASK_TIMER         = 1ULL << UNIT_TIMER,
> +        UNIT_MASK_PATH          = 1ULL << UNIT_PATH,
> +        UNIT_MASK_SLICE         = 1ULL << UNIT_SLICE,
> +        UNIT_MASK_SCOPE         = 1ULL << UNIT_SCOPE,
> +        _UNIT_MASK_MAX          = 1ULL <<_UNIT_TYPE_MAX,
> +};
> +
>  enum UnitLoadState {
>          UNIT_STUB = 0,
>          UNIT_LOADED,
> @@ -165,3 +183,11 @@ int build_subslice(const char *slice, const char*name, char **subslice);
>  
>  const char *unit_dependency_to_string(UnitDependency i) _const_;
>  UnitDependency unit_dependency_from_string(const char *s) _pure_;
> +
> +struct unit_property_scope_mapping {
> +        const char* property;
> +        UnitMask scope;
> +};
> +typedef struct unit_property_scope_mapping unit_property_scope_mapping;
> +const unit_property_scope_mapping* unit_property_scope_mapping_lookup (register const char *str, register unsigned int len);
> +bool unit_can_have_property(UnitType t, const char *property);
> diff --git a/src/shared/unit-property-scope.gperf b/src/shared/unit-property-scope.gperf
> new file mode 100644
> index 0000000..bbcfcba
> --- /dev/null
> +++ b/src/shared/unit-property-scope.gperf
> @@ -0,0 +1,202 @@
> +%{
> +#include "unit-name.h"
> +#include "bus-util.h"
> +%}
> +unit_property_scope_mapping;
> +%null_strings
> +%language=ANSI-C
> +%define slot-name property
> +%define hash-function-name bus_property_scope_mapping_hash
> +%define lookup-function-name unit_property_scope_mapping_lookup
> +%readonly-tables
> +%omit-struct-type
> +%struct-type
> +%includes
> +%%
> +Description,                    UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +Documentation,                  UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +Requires,                       UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +RequiresOverridable,            UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +Requisite,                      UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +RequisiteOverridable,           UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +Wants,                          UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +BindsTo,                        UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +PartOf,                         UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +Conflicts,                      UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +Before,                         UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +After,                          UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +OnFailure,                      UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +PropagatesReloadTo,             UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +ReloadPropagatedFrom,           UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +JoinsNamespaceOf,               UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +RequiresMountsFor,              UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +OnFailureJobMode,               UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +IgnoreOnIsolate,                UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +IgnoreOnSnapshot,               UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +StopWhenUnneeded,               UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +RefuseManualStart,              UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +RefuseManualStop,               UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +AllowIsolate,                   UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +DefaultDependencies,            UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +JobTimeoutSec,                  UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +JobTimeoutAction,               UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +JobTimeoutRebootArgument,       UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +ConditionArchitecture,          UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +ConditionVirtualization,        UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +ConditionHost,                  UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +ConditionKernelCommandLine,     UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +ConditionSecurity,              UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +ConditionCapability,            UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +ConditionACPower,               UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +ConditionNeedsUpdate,           UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +ConditionFirstBoot,             UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +ConditionPathExists,            UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +ConditionPathExistsGlob,        UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +ConditionPathIsDirectory,       UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +ConditionPathIsSymbolicLink,    UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +ConditionPathIsMountPoint,      UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +ConditionPathIsReadWrite,       UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +ConditionDirectoryNotEmpty,     UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +ConditionFileNotEmpty,          UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +ConditionFileIsExecutable,      UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +ConditionNull,                  UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +SourcePath,                     UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +Alias,                          UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +WantedBy,                       UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +RequiredBy,                     UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +Also,                           UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +DefaultInstance,                UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_DEVICE|UNIT_MASK_MOUNT|UNIT_MASK_AUTOMOUNT|UNIT_MASK_SWAP|UNIT_MASK_TARGET|UNIT_MASK_PATH|UNIT_MASK_TIMER|UNIT_MASK_SNAPSHOT|UNIT_MASK_SLICE|UNIT_MASK_SCOPE
> +#
> +Type,                           UNIT_MASK_SERVICE
> +RemainAfterExit,                UNIT_MASK_SERVICE
> +GuessMainPID,                   UNIT_MASK_SERVICE
> +PIDFile,                        UNIT_MASK_SERVICE
> +BusName,                        UNIT_MASK_SERVICE
> +BusPolicy,                      UNIT_MASK_SERVICE
> +ExecStart,                      UNIT_MASK_SERVICE
> +ExecStartPre,                   UNIT_MASK_SERVICE
> +ExecStartPost,                  UNIT_MASK_SERVICE
> +ExecReload,                     UNIT_MASK_SERVICE
> +ExecStop,                       UNIT_MASK_SERVICE
> +ExecStopPost,                   UNIT_MASK_SERVICE
> +RestartSec,                     UNIT_MASK_SERVICE
> +TimeoutStartSec,                UNIT_MASK_SERVICE
> +TimeoutStopSec,                 UNIT_MASK_SERVICE
> +TimeoutSec,                     UNIT_MASK_SERVICE
> +WatchdogSec,                    UNIT_MASK_SERVICE
> +Restart,                        UNIT_MASK_SERVICE
> +SuccessExitStatus,              UNIT_MASK_SERVICE
> +RestartPreventExitStatus,       UNIT_MASK_SERVICE
> +RestartForceExitStatus,         UNIT_MASK_SERVICE
> +PermissionsStartOnly,           UNIT_MASK_SERVICE
> +RootDirectoryStartOnly,         UNIT_MASK_SERVICE
> +NonBlocking,                    UNIT_MASK_SERVICE
> +NotifyAccess,                   UNIT_MASK_SERVICE
> +Sockets,                        UNIT_MASK_SERVICE
> +StartLimitInterval,             UNIT_MASK_SERVICE
> +StartLimitBurst,                UNIT_MASK_SERVICE
> +StartLimitAction,               UNIT_MASK_SERVICE
> +FailureAction,                  UNIT_MASK_SERVICE
> +RebootArgument,                 UNIT_MASK_SERVICE
> +SysVStartPriority,              UNIT_MASK_SERVICE
> +#
> +OnActiveSec,                    UNIT_MASK_TIMER
> +OnBootSec,                      UNIT_MASK_TIMER
> +OnStartupSec,                   UNIT_MASK_TIMER
> +OnUnitActiveSec,                UNIT_MASK_TIMER
> +OnUnitInactiveSec,              UNIT_MASK_TIMER
> +OnCalendar,                     UNIT_MASK_TIMER
> +AccuracySec,                    UNIT_MASK_TIMER
> +Unit,                           UNIT_MASK_TIMER
> +Persistent,                     UNIT_MASK_TIMER
> +WakeSystem,                     UNIT_MASK_TIMER
> +#
> +CPUAccounting,                  UNIT_MASK_SLICE|UNIT_MASK_SCOPE|UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +CPUShares,                      UNIT_MASK_SLICE|UNIT_MASK_SCOPE|UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +StartupCPUShares,               UNIT_MASK_SLICE|UNIT_MASK_SCOPE|UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +CPUQuota,                       UNIT_MASK_SLICE|UNIT_MASK_SCOPE|UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +MemoryAccounting,               UNIT_MASK_SLICE|UNIT_MASK_SCOPE|UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +MemoryLimit,                    UNIT_MASK_SLICE|UNIT_MASK_SCOPE|UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +BlockIOAccounting,              UNIT_MASK_SLICE|UNIT_MASK_SCOPE|UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +BlockIOWeight,                  UNIT_MASK_SLICE|UNIT_MASK_SCOPE|UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +StartupBlockIOWeight,           UNIT_MASK_SLICE|UNIT_MASK_SCOPE|UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +BlockIODeviceWeight,            UNIT_MASK_SLICE|UNIT_MASK_SCOPE|UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +BlockIOReadBandwidth,           UNIT_MASK_SLICE|UNIT_MASK_SCOPE|UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +BlockIOWriteBandwidth,          UNIT_MASK_SLICE|UNIT_MASK_SCOPE|UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +DeviceAllow,                    UNIT_MASK_SLICE|UNIT_MASK_SCOPE|UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +DevicePolicy,                   UNIT_MASK_SLICE|UNIT_MASK_SCOPE|UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +Slice,                          UNIT_MASK_SLICE|UNIT_MASK_SCOPE|UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +#
> +WorkingDirectory,               UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +RootDirectory,                  UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +Group,                          UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +SupplementaryGroups,            UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +Nice,                           UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +OOMScoreAdjust,                 UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +IOSchedulingClass,              UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +IOSchedulingPriority,           UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +CPUSchedulingPolicy,            UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +CPUSchedulingPriority,          UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +CPUSchedulingResetOnFork,       UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +CPUAffinity,                    UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +UMask,                          UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +Environment,                    UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +EnvironmentFile,                UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +StandardInput,                  UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +StandardOutput,                 UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +StandardError,                  UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +TTYPath,                        UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +TTYReset,                       UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +TTYVHangup,                     UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +TTYVTDisallocate,               UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +SyslogIdentifier,               UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +SyslogFacility,                 UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +SyslogLevel,                    UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +SyslogLevelPrefix,              UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +TimerSlackNSec,                 UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +LimitCPU,                       UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +LimitFSIZE,                     UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +LimitDATA,                      UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +LimitSTACK,                     UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +LimitCORE,                      UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +LimitRSS,                       UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +LimitNOFILE,                    UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +LimitAS,                        UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +LimitNPROC,                     UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +LimitMEMLOCK,                   UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +LimitLOCKS,                     UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +LimitSIGPENDING,                UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +LimitMSGQUEUE,                  UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +LimitNICE,                      UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +LimitRTPRIO,                    UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +LimitRTTIME,                    UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +PAMName,                        UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +CapabilityBoundingSet,          UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +SecureBits,                     UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +Capabilities,                   UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +ReadWriteDirectories,           UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +ReadOnlyDirectories,            UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +InaccessibleDirectories,        UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +PrivateTmp,                     UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +PrivateDevices,                 UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +PrivateNetwork,                 UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +ProtectSystem,                  UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +ProtectHome,                    UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +MountFlags,                     UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +UtmpIdentifier,                 UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +SELinuxContext,                 UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +AppArmorProfile,                UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +IgnoreSIGPIPE,                  UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +NoNewPrivileges,                UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +SystemCallFilter,               UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +SystemCallErrorNumber,          UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +SystemCallArchitectures,        UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +RestrictAddressFamilies,        UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +Personality,                    UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +RuntimeDirectory,               UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +RuntimeDirectoryMode,           UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP
> +#
> +KillMode,                       UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP|UNIT_MASK_SCOPE
> +KillSignal,                     UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP|UNIT_MASK_SCOPE
> +SendSIGHUP,                     UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP|UNIT_MASK_SCOPE
> +SendSIGKILL,                    UNIT_MASK_SERVICE|UNIT_MASK_SOCKET|UNIT_MASK_MOUNT|UNIT_MASK_SWAP|UNIT_MASK_SCOPE
> -- 
> 1.9.3
> 
> _______________________________________________
> systemd-devel mailing list
> systemd-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/systemd-devel


Lennart

-- 
Lennart Poettering, Red Hat


More information about the systemd-devel mailing list