unit_notify(UNIT(t), state_translation_table[old_state], state_translation_table[state]);
}
+static int target_add_default_dependencies(Target *t) {
+ Iterator i;
+ Unit *other;
+ int r;
+
+ /* Imply ordering for requirement dependencies
+ * on target units. */
+
+ SET_FOREACH(other, t->meta.dependencies[UNIT_REQUIRES], i)
+ if ((r = unit_add_dependency(UNIT(t), UNIT_AFTER, other, true)) < 0)
+ return r;
+ SET_FOREACH(other, t->meta.dependencies[UNIT_REQUIRES_OVERRIDABLE], i)
+ if ((r = unit_add_dependency(UNIT(t), UNIT_AFTER, other, true)) < 0)
+ return r;
+ SET_FOREACH(other, t->meta.dependencies[UNIT_WANTS], i)
+ if ((r = unit_add_dependency(UNIT(t), UNIT_AFTER, other, true)) < 0)
+ return r;
+
+ return 0;
+}
+
+static int target_load(Unit *u) {
+ Target *t = TARGET(u);
+ int r;
+
+ assert(t);
+
+ if ((r = unit_load_fragment_and_dropin(u)) < 0)
+ return r;
+
+ /* This is a new unit? Then let's add in some extras */
+ if (u->meta.load_state == UNIT_LOADED) {
+ if (u->meta.default_dependencies)
+ if ((r = target_add_default_dependencies(t)) < 0)
+ return r;
+ }
+
+ return 0;
+}
+
static int target_coldplug(Unit *u) {
Target *t = TARGET(u);
const UnitVTable target_vtable = {
.suffix = ".target",
- .load = unit_load_fragment_and_dropin,
+ .load = target_load,
.coldplug = target_coldplug,
.dump = target_dump,