udev: introduce new netif naming scheme flag to strictly replace ifname

This commit is contained in:
Yu Watanabe 2021-06-23 16:10:26 +09:00
parent d37f3e3ec5
commit b4d885f0e8
2 changed files with 7 additions and 2 deletions

View file

@ -34,6 +34,7 @@ typedef enum NamingSchemeFlags {
NAMING_BRIDGE_NO_SLOT = 1 << 9, /* Don't use PCI hotplug slot information if the corresponding device is a PCI bridge */
NAMING_SLOT_FUNCTION_ID = 1 << 10, /* Use function_id if present to identify PCI hotplug slots */
NAMING_16BIT_INDEX = 1 << 11, /* Allow full 16-bit for the onboard index */
NAMING_REPLACE_STRICTLY = 1 << 12, /* Use udev_replace_ifname() for NAME= rule */
/* And now the masks that combine the features above */
NAMING_V238 = 0,
@ -43,7 +44,7 @@ typedef enum NamingSchemeFlags {
NAMING_V243 = NAMING_V241 | NAMING_NETDEVSIM | NAMING_LABEL_NOPREFIX,
NAMING_V245 = NAMING_V243 | NAMING_NSPAWN_LONG_HASH,
NAMING_V247 = NAMING_V245 | NAMING_BRIDGE_NO_SLOT,
NAMING_V249 = NAMING_V247 | NAMING_SLOT_FUNCTION_ID | NAMING_16BIT_INDEX,
NAMING_V249 = NAMING_V247 | NAMING_SLOT_FUNCTION_ID | NAMING_16BIT_INDEX | NAMING_REPLACE_STRICTLY,
_NAMING_SCHEME_FLAGS_INVALID = -EINVAL,
} NamingSchemeFlags;

View file

@ -17,6 +17,7 @@
#include "glob-util.h"
#include "list.h"
#include "mkdir.h"
#include "netif-naming-scheme.h"
#include "nulstr-util.h"
#include "parse-util.h"
#include "path-util.h"
@ -2062,7 +2063,10 @@ static int udev_rule_apply_token_to_event(
(void) udev_event_apply_format(event, token->value, buf, sizeof(buf), false);
if (IN_SET(event->esc, ESCAPE_UNSET, ESCAPE_REPLACE)) {
count = udev_replace_chars(buf, "/");
if (naming_scheme_has(NAMING_REPLACE_STRICTLY))
count = udev_replace_ifname(buf);
else
count = udev_replace_chars(buf, "/");
if (count > 0)
log_rule_debug(dev, rules, "Replaced %zu character(s) from result of NAME=\"%s\"",
count, token->value);