Blob Blame History Raw
From 778ad8d8fd3855254d9c96bc1016c7bb7dc2e8da Mon Sep 17 00:00:00 2001
From: Kay Sievers <kay@vrfy.org>
Date: Tue, 8 Jan 2013 14:54:12 +0100
Subject: [PATCH] udev: net_id - skip stacked network devices (cherry picked
 from commit 72bc96f07868d532596477604b6fb41633ebd124)

---
 src/udev/udev-builtin-net_id.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c
index d5db762..1975c6d 100644
--- a/src/udev/udev-builtin-net_id.c
+++ b/src/udev/udev-builtin-net_id.c
@@ -366,6 +366,7 @@ static int ieee_oui(struct udev_device *dev, struct netnames *names, bool test)
 
 static int builtin_net_id(struct udev_device *dev, int argc, char *argv[], bool test) {
         const char *s;
+        const char *p;
         unsigned int i;
         const char *devtype;
         const char *prefix = "en";
@@ -380,6 +381,16 @@ static int builtin_net_id(struct udev_device *dev, int argc, char *argv[], bool
         if (i != 1)
                 return 0;
 
+        /* skip stacked devices, like VLANs, ... */
+        s = udev_device_get_sysattr_value(dev, "ifindex");
+        if (!s)
+                return EXIT_FAILURE;
+        p = udev_device_get_sysattr_value(dev, "iflink");
+        if (!p)
+                return EXIT_FAILURE;
+        if (strcmp(s, p) != 0)
+                return 0;
+
         devtype = udev_device_get_devtype(dev);
         if (devtype) {
                 if (streq("wlan", devtype))