]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
iproute2: fix the link group name getting error
authorZhang Shengju <zhangshengju@cmss.chinamobile.com>
Fri, 18 Nov 2016 01:12:53 +0000 (09:12 +0800)
committerStephen Hemminger <sthemmin@microsoft.com>
Tue, 29 Nov 2016 20:48:07 +0000 (12:48 -0800)
In the situation where more than one entry live in the same hash bucket,
loop to get the correct one.

Before:
$ cat /etc/iproute2/group
0 default
256     test

$ sudo ip link set group test dummy1

$ ip link show type dummy
11: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group 0 qlen 1000
    link/ether 4e:3b:d3:6c:f0:e6 brd ff:ff:ff:ff:ff:ff
12: dummy1: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group test qlen 1000
    link/ether d6:9c:a4:1f:e7:e5 brd ff:ff:ff:ff:ff:ff

After:
$ ip link show type dummy
11: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 4e:3b:d3:6c:f0:e6 brd ff:ff:ff:ff:ff:ff
12: dummy1: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group test qlen 1000
    link/ether d6:9c:a4:1f:e7:e5 brd ff:ff:ff:ff:ff:ff

Signed-off-by: Zhang Shengju <zhangshengju@cmss.chinamobile.com>
lib/rt_names.c

index b665d3e92fa52b4367b6b05ad3d1e27a06a6221f..c66cb1e439e3ca46ca854143b648f1eb0209ec66 100644 (file)
@@ -559,8 +559,12 @@ const char *rtnl_group_n2a(int id, char *buf, int len)
 
        for (i = 0; i < 256; i++) {
                entry = rtnl_group_hash[i];
-               if (entry && entry->id == id)
-                       return entry->name;
+
+               while (entry) {
+                       if (entry->id == id)
+                               return entry->name;
+                       entry = entry->next;
+               }
        }
 
        snprintf(buf, len, "%d", id);