summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Gundersen <teg@jklm.no>2014-02-19 22:37:13 +0100
committerTom Gundersen <teg@jklm.no>2014-02-19 23:29:51 +0100
commite51660ae56bb747ece2cab8fe6eec37f4d06a438 (patch)
tree5202cf4709bc2b5acfcdc394c274ebea24685bf6
parentdd8875f9396d2de31260915bda9c4c85b350003d (diff)
udev: net-config - allow interface names to be set from the hwdb
-rw-r--r--Makefile.am1
-rw-r--r--hwdb/20-net-ifname.hwdb5
-rw-r--r--man/udev.xml9
-rw-r--r--network/99-default.link2
-rw-r--r--src/udev/net/link-config.c4
-rw-r--r--src/udev/net/link-config.h1
6 files changed, 21 insertions, 1 deletions
diff --git a/Makefile.am b/Makefile.am
index d8b5b71614..02a1aaef08 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -2463,6 +2463,7 @@ dist_udevhwdb_DATA = \
hwdb/20-bluetooth-vendor-product.hwdb \
hwdb/20-acpi-vendor.hwdb \
hwdb/20-OUI.hwdb \
+ hwdb/20-net-ifname.hwdb \
hwdb/60-keyboard.hwdb
udevconfdir = $(sysconfdir)/udev
diff --git a/hwdb/20-net-ifname.hwdb b/hwdb/20-net-ifname.hwdb
new file mode 100644
index 0000000000..29d2633501
--- /dev/null
+++ b/hwdb/20-net-ifname.hwdb
@@ -0,0 +1,5 @@
+# This file is part of systemd.
+
+# Dell iDRAC Virtual USB NIC
+usb:v413CpA102*
+ ID_NET_NAME_FROM_DATABASE=irdac
diff --git a/man/udev.xml b/man/udev.xml
index eab5d25f0a..c053a86d3e 100644
--- a/man/udev.xml
+++ b/man/udev.xml
@@ -884,6 +884,15 @@
</para>
<variablelist>
<varlistentry>
+ <term><literal>database</literal></term>
+ <listitem>
+ <para>The name is set based on entries in the Hardware
+ Database with the key
+ <literal>ID_NET_NAME_FROM_DATABASE</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
<term><literal>onboard</literal></term>
<listitem>
<para>The name is set based on information given by the
diff --git a/network/99-default.link b/network/99-default.link
index 05be03bd37..53215f633b 100644
--- a/network/99-default.link
+++ b/network/99-default.link
@@ -1,3 +1,3 @@
[Link]
-NamePolicy=onboard slot path
+NamePolicy=database onboard slot path
MACAddressPolicy=persistent
diff --git a/src/udev/net/link-config.c b/src/udev/net/link-config.c
index 3afaff10c8..d05b909913 100644
--- a/src/udev/net/link-config.c
+++ b/src/udev/net/link-config.c
@@ -383,6 +383,9 @@ int link_config_apply(link_config_ctx *ctx, link_config *config, struct udev_dev
for (policy = config->name_policy; !new_name && *policy != _NAMEPOLICY_INVALID; policy++) {
switch (*policy) {
+ case NAMEPOLICY_DATABASE:
+ new_name = udev_device_get_property_value(device, "ID_NET_NAME_FROM_DATABASE");
+ break;
case NAMEPOLICY_ONBOARD:
new_name = udev_device_get_property_value(device, "ID_NET_NAME_ONBOARD");
break;
@@ -447,6 +450,7 @@ DEFINE_STRING_TABLE_LOOKUP(mac_policy, MACPolicy);
DEFINE_CONFIG_PARSE_ENUM(config_parse_mac_policy, mac_policy, MACPolicy, "Failed to parse MAC address policy");
static const char* const name_policy_table[] = {
+ [NAMEPOLICY_DATABASE] = "database",
[NAMEPOLICY_ONBOARD] = "onboard",
[NAMEPOLICY_SLOT] = "slot",
[NAMEPOLICY_PATH] = "path",
diff --git a/src/udev/net/link-config.h b/src/udev/net/link-config.h
index a55c6f5f05..4fc8963114 100644
--- a/src/udev/net/link-config.h
+++ b/src/udev/net/link-config.h
@@ -38,6 +38,7 @@ typedef enum MACPolicy {
} MACPolicy;
typedef enum NamePolicy {
+ NAMEPOLICY_DATABASE,
NAMEPOLICY_ONBOARD,
NAMEPOLICY_SLOT,
NAMEPOLICY_PATH,