+#include "udev-util.h"
+
+/// additional includes elogind needs
+#include "cgroup.h" // From src/core/
+#include "label.h"
+#include "mount-setup.h" // From src/core
+#include "musl_missing.h"
+
+static void manager_free(Manager *m);
+
+static void manager_reset_config(Manager *m) {
+
+#ifdef ENABLE_DEBUG_ELOGIND
+ int dbg_cnt;
+#endif // ENABLE_DEBUG_ELOGIND
+
+#if 0 /// elogind does not support autospawning of vts
+ m->n_autovts = 6;
+ m->reserve_vt = 6;
+#endif // 0
+ m->remove_ipc = true;
+ m->inhibit_delay_max = 5 * USEC_PER_SEC;
+ m->handle_power_key = HANDLE_POWEROFF;
+ m->handle_suspend_key = HANDLE_SUSPEND;
+ m->handle_hibernate_key = HANDLE_HIBERNATE;
+ m->handle_lid_switch = HANDLE_SUSPEND;
+ m->handle_lid_switch_docked = HANDLE_IGNORE;
+ m->power_key_ignore_inhibited = false;
+ m->suspend_key_ignore_inhibited = false;
+ m->hibernate_key_ignore_inhibited = false;
+ m->lid_switch_ignore_inhibited = true;
+
+ m->holdoff_timeout_usec = 30 * USEC_PER_SEC;
+
+ m->idle_action_usec = 30 * USEC_PER_MINUTE;
+ m->idle_action = HANDLE_IGNORE;
+
+ m->runtime_dir_size = physical_memory_scale(10U, 100U); /* 10% */
+ m->user_tasks_max = system_tasks_max_scale(33U, 100U); /* 33% */
+ m->sessions_max = 8192;
+ m->inhibitors_max = 8192;
+
+ m->kill_user_processes = KILL_USER_PROCESSES;
+
+ m->kill_only_users = strv_free(m->kill_only_users);
+ m->kill_exclude_users = strv_free(m->kill_exclude_users);
+
+ /* Set default Sleep config if not already set by logind.conf */
+ if (!m->suspend_state)
+ m->suspend_state = strv_new("mem", "standby", "freeze", NULL);
+ if (!m->hibernate_mode)
+ m->hibernate_mode = strv_new("platform", "shutdown", NULL);
+ if (!m->hibernate_state)
+ m->hibernate_state = strv_new("disk", NULL);
+ if (!m->hybrid_sleep_mode)
+ m->hybrid_sleep_mode = strv_new("suspend", "platform", "shutdown", NULL);
+ if (!m->hybrid_sleep_state)
+ m->hybrid_sleep_state = strv_new("disk", NULL);
+
+#ifdef ENABLE_DEBUG_ELOGIND
+ dbg_cnt = -1;
+ while (m->suspend_mode && m->suspend_mode[++dbg_cnt])
+ log_debug_elogind("suspend_mode[%d] = %s",
+ dbg_cnt, m->suspend_mode[dbg_cnt]);
+ dbg_cnt = -1;
+ while (m->suspend_state[++dbg_cnt])
+ log_debug_elogind("suspend_state[%d] = %s",
+ dbg_cnt, m->suspend_state[dbg_cnt]);
+ dbg_cnt = -1;
+ while (m->hibernate_mode[++dbg_cnt])
+ log_debug_elogind("hibernate_mode[%d] = %s",
+ dbg_cnt, m->hibernate_mode[dbg_cnt]);
+ dbg_cnt = -1;
+ while (m->hibernate_state[++dbg_cnt])
+ log_debug_elogind("hibernate_state[%d] = %s",
+ dbg_cnt, m->hibernate_state[dbg_cnt]);
+ dbg_cnt = -1;
+ while (m->hybrid_sleep_mode[++dbg_cnt])
+ log_debug_elogind("hybrid_sleep_mode[%d] = %s",
+ dbg_cnt, m->hybrid_sleep_mode[dbg_cnt]);
+ dbg_cnt = -1;
+ while (m->hybrid_sleep_state[++dbg_cnt])
+ log_debug_elogind("hybrid_sleep_state[%d] = %s",
+ dbg_cnt, m->hybrid_sleep_state[dbg_cnt]);
+#endif // ENABLE_DEBUG_ELOGIND
+}