LCOV - code coverage report
Current view: top level - udev/net - naming-scheme.c (source / functions) Hit Total Coverage
Test: systemd_full.info Lines: 0 28 0.0 %
Date: 2019-08-23 13:36:53 Functions: 0 2 0.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 0 26 0.0 %

           Branch data     Line data    Source code
       1                 :            : /* SPDX-License-Identifier: LGPL-2.1+ */
       2                 :            : #include "alloc-util.h"
       3                 :            : #include "naming-scheme.h"
       4                 :            : #include "proc-cmdline.h"
       5                 :            : #include "string-util.h"
       6                 :            : 
       7                 :            : static const NamingScheme naming_schemes[] = {
       8                 :            :         { "v238", NAMING_V238 },
       9                 :            :         { "v239", NAMING_V239 },
      10                 :            :         { "v240", NAMING_V240 },
      11                 :            :         { "v241", NAMING_V241 },
      12                 :            :         { "v243", NAMING_V243 },
      13                 :            :         /* … add more schemes here, as the logic to name devices is updated … */
      14                 :            : };
      15                 :            : 
      16                 :          0 : static const NamingScheme* naming_scheme_from_name(const char *name) {
      17                 :            :         size_t i;
      18                 :            : 
      19         [ #  # ]:          0 :         if (streq(name, "latest"))
      20                 :          0 :                 return naming_schemes + ELEMENTSOF(naming_schemes) - 1;
      21                 :            : 
      22         [ #  # ]:          0 :         for (i = 0; i < ELEMENTSOF(naming_schemes); i++)
      23         [ #  # ]:          0 :                 if (streq(naming_schemes[i].name, name))
      24                 :          0 :                         return naming_schemes + i;
      25                 :            : 
      26                 :          0 :         return NULL;
      27                 :            : }
      28                 :            : 
      29                 :          0 : const NamingScheme* naming_scheme(void) {
      30                 :            :         static const NamingScheme *cache = NULL;
      31                 :          0 :         _cleanup_free_ char *buffer = NULL;
      32                 :            :         const char *e, *k;
      33                 :            : 
      34         [ #  # ]:          0 :         if (cache)
      35                 :          0 :                 return cache;
      36                 :            : 
      37                 :            :         /* Acquire setting from the kernel command line */
      38                 :          0 :         (void) proc_cmdline_get_key("net.naming-scheme", 0, &buffer);
      39                 :            : 
      40                 :            :         /* Also acquire it from an env var */
      41                 :          0 :         e = getenv("NET_NAMING_SCHEME");
      42         [ #  # ]:          0 :         if (e) {
      43         [ #  # ]:          0 :                 if (*e == ':') {
      44                 :            :                         /* If prefixed with ':' the kernel cmdline takes precedence */
      45         [ #  # ]:          0 :                         k = buffer ?: e + 1;
      46                 :            :                 } else
      47                 :          0 :                         k = e; /* Otherwise the env var takes precedence */
      48                 :            :         } else
      49                 :          0 :                 k = buffer;
      50                 :            : 
      51         [ #  # ]:          0 :         if (k) {
      52                 :          0 :                 cache = naming_scheme_from_name(k);
      53         [ #  # ]:          0 :                 if (cache) {
      54         [ #  # ]:          0 :                         log_info("Using interface naming scheme '%s'.", cache->name);
      55                 :          0 :                         return cache;
      56                 :            :                 }
      57                 :            : 
      58         [ #  # ]:          0 :                 log_warning("Unknown interface naming scheme '%s' requested, ignoring.", k);
      59                 :            :         }
      60                 :            : 
      61                 :          0 :         cache = naming_scheme_from_name(DEFAULT_NET_NAMING_SCHEME);
      62         [ #  # ]:          0 :         assert(cache);
      63         [ #  # ]:          0 :         log_info("Using default interface naming scheme '%s'.", cache->name);
      64                 :            : 
      65                 :          0 :         return cache;
      66                 :            : }

Generated by: LCOV version 1.14