rpcd-mod-luci: expose devtype and iflink properties in getNetworkDevices

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
(cherry picked from commit 71feaa5285)
This commit is contained in:
Jo-Philipp Wich 2021-03-17 19:29:01 +01:00
parent 66808a9d4c
commit e5900b3bfe

View file

@ -659,6 +659,20 @@ rpc_luci_parse_network_device_sys(const char *name, struct ifaddrs *ifaddr)
if (*p)
blobmsg_add_string(&blob, "master", p);
p = strstr(readstr("/sys/class/net/%s/uevent", name), "DEVTYPE=");
if (p) {
for (n = 0, p += strlen("DEVTYPE=");; n++) {
if (p[n] == '\0' || p[n] == '\n') {
p[n] = 0;
blobmsg_add_string(&blob, "devtype", p);
break;
}
}
}
else {
blobmsg_add_string(&blob, "devtype", "ethernet");
}
for (af = AF_INET; af != 0; af = (af == AF_INET) ? AF_INET6 : 0) {
a = blobmsg_open_array(&blob,
(af == AF_INET) ? "ipaddrs" : "ip6addrs");
@ -709,6 +723,24 @@ rpc_luci_parse_network_device_sys(const char *name, struct ifaddrs *ifaddr)
blobmsg_add_u32(&blob, "ifindex", sll->sll_ifindex);
ifa_flags |= ifa->ifa_flags;
n = atoi(readstr("/sys/class/net/%s/iflink", name));
if (n != sll->sll_ifindex) {
for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) {
if (ifa->ifa_addr == NULL || ifa->ifa_addr->sa_family != AF_PACKET)
continue;
sll = (struct sockaddr_ll *)ifa->ifa_addr;
if (sll->sll_ifindex != n)
continue;
blobmsg_add_string(&blob, "parent", ifa->ifa_name);
break;
}
}
break;
}