]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
udev: also allow resolve_names= to be specified in udev.conf 10759/head
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 13 Nov 2018 10:33:32 +0000 (11:33 +0100)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 13 Nov 2018 13:35:36 +0000 (14:35 +0100)
man/udev.conf.xml
src/shared/udev-util.c
src/shared/udev-util.h
src/udev/udev.conf
src/udev/udevd.c

index 7b7cae16b20b010c8f8e810e42333042df10a7f5..23a4595fa9bef14ff16572c96822749190b50029 100644 (file)
         </listitem>
       </varlistentry>
 
+      <varlistentry>
+        <term><varname>resolve_names=</varname></term>
+
+        <listitem>
+          <para>Specifes when systemd-udevd should resolve names of users and groups.  When set to
+          <option>early</option> (the default), names will be resolved when the rules are parsed.
+          When set to <option>late</option>, names will be resolved for every event.  When set to
+          <option>never</option>, names will never be resolved and all devices will be owned by
+          root.</para>
+
+          <para>This is the same as the <option>--resolve-names=</option> option.</para>
+        </listitem>
+      </varlistentry>
     </variablelist>
 
     <para>
index a85a33d3ae1da967ad9e72300ad3c8c2479f1dc8..959217c511621e04e81af8342df0e11d3be45a02 100644 (file)
@@ -23,9 +23,10 @@ DEFINE_STRING_TABLE_LOOKUP(resolve_name_timing, ResolveNameTiming);
 int udev_parse_config_full(
                 unsigned *ret_children_max,
                 usec_t *ret_exec_delay_usec,
-                usec_t *ret_event_timeout_usec) {
+                usec_t *ret_event_timeout_usec,
+                ResolveNameTiming *ret_resolve_name_timing) {
 
-        _cleanup_free_ char *log_val = NULL, *children_max = NULL, *exec_delay = NULL, *event_timeout = NULL;
+        _cleanup_free_ char *log_val = NULL, *children_max = NULL, *exec_delay = NULL, *event_timeout = NULL, *resolve_names = NULL;
         int r;
 
         r = parse_env_file(NULL, "/etc/udev/udev.conf", NEWLINE,
@@ -78,5 +79,15 @@ int udev_parse_config_full(
                         log_notice_errno(r, "/etc/udev/udev.conf: failed to set parse event_timeout=%s, ignoring: %m", event_timeout);
         }
 
+        if (ret_resolve_name_timing && resolve_names) {
+                ResolveNameTiming t;
+
+                t = resolve_name_timing_from_string(resolve_names);
+                if (t < 0)
+                        log_notice("/etc/udev/udev.conf: failed to set parse resolve_names=%s, ignoring.", resolve_names);
+                else
+                        *ret_resolve_name_timing = t;
+        }
+
         return 0;
 }
index b1913daf86e72306fabeba0698b6911d13ebd862..be08fe1ff898b95ad4bb02ebfd3938249c73c3fe 100644 (file)
@@ -17,8 +17,9 @@ const char *resolve_name_timing_to_string(ResolveNameTiming i) _const_;
 int udev_parse_config_full(
                 unsigned *ret_children_max,
                 usec_t *ret_exec_delay_usec,
-                usec_t *ret_event_timeout_usec);
+                usec_t *ret_event_timeout_usec,
+                ResolveNameTiming *ret_resolve_name_timing);
 
 static inline int udev_parse_config(void) {
-        return udev_parse_config_full(NULL, NULL, NULL);
+        return udev_parse_config_full(NULL, NULL, NULL, NULL);
 }
index 3395a8b7ea6099cbf181c11b12dcf1ae6ef1b94c..7deb7715bed4329c6b02018568de8869713fe666 100644 (file)
@@ -7,3 +7,4 @@
 #children_max=
 #exec_delay=
 #event_timeout=180
+#resolve_names=early
index 9b316c80db1ade51904fe78ff48d9a07118d32f3..922fecb897fd51e5486c4f9a8f56a2983f353195 100644 (file)
@@ -1703,7 +1703,7 @@ int main(int argc, char *argv[]) {
         int r;
 
         log_set_target(LOG_TARGET_AUTO);
-        udev_parse_config_full(&arg_children_max, &arg_exec_delay_usec, &arg_event_timeout_usec);
+        udev_parse_config_full(&arg_children_max, &arg_exec_delay_usec, &arg_event_timeout_usec, &arg_resolve_name_timing);
         log_parse_environment();
         log_open();