Commit 6d683556 authored by Pavel Emelyanov's avatar Pavel Emelyanov

net: Factor out unknown devices dumping

For now this "dumping" is just a warning. In the next patches
there will be call to plugins.
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 8df4d676
...@@ -100,6 +100,14 @@ static char *link_kind(struct ifinfomsg *ifi, struct rtattr **tb) ...@@ -100,6 +100,14 @@ static char *link_kind(struct ifinfomsg *ifi, struct rtattr **tb)
return RTA_DATA(linkinfo[IFLA_INFO_KIND]); return RTA_DATA(linkinfo[IFLA_INFO_KIND]);
} }
static int dump_unknown_device(struct ifinfomsg *ifi, char *kind,
struct rtattr **tb, struct cr_fdset *fds)
{
pr_err("Unsupported link %d (type %d kind %s)\n",
ifi->ifi_index, ifi->ifi_type, kind);
return -1;
}
static int dump_one_ethernet(struct ifinfomsg *ifi, char *kind, static int dump_one_ethernet(struct ifinfomsg *ifi, char *kind,
struct rtattr **tb, struct cr_fdset *fds) struct rtattr **tb, struct cr_fdset *fds)
{ {
...@@ -116,8 +124,7 @@ static int dump_one_ethernet(struct ifinfomsg *ifi, char *kind, ...@@ -116,8 +124,7 @@ static int dump_one_ethernet(struct ifinfomsg *ifi, char *kind,
if (!strcmp(kind, "tun")) if (!strcmp(kind, "tun"))
return dump_one_netdev(ND_TYPE__TUN, ifi, tb, fds, dump_tun_link); return dump_one_netdev(ND_TYPE__TUN, ifi, tb, fds, dump_tun_link);
pr_err("Unknown eth kind %s link %d\n", kind, ifi->ifi_index); return dump_unknown_device(ifi, kind, tb, fds);
return -1;
} }
static int dump_one_gendev(struct ifinfomsg *ifi, char *kind, static int dump_one_gendev(struct ifinfomsg *ifi, char *kind,
...@@ -126,8 +133,7 @@ static int dump_one_gendev(struct ifinfomsg *ifi, char *kind, ...@@ -126,8 +133,7 @@ static int dump_one_gendev(struct ifinfomsg *ifi, char *kind,
if (!strcmp(kind, "tun")) if (!strcmp(kind, "tun"))
return dump_one_netdev(ND_TYPE__TUN, ifi, tb, fds, dump_tun_link); return dump_one_netdev(ND_TYPE__TUN, ifi, tb, fds, dump_tun_link);
pr_err("Unknown ARPHRD_NONE kind %s link %d\n", kind, ifi->ifi_index); return dump_unknown_device(ifi, kind, tb, fds);
return -1;
} }
static int dump_one_voiddev(struct ifinfomsg *ifi, char *kind, static int dump_one_voiddev(struct ifinfomsg *ifi, char *kind,
...@@ -141,8 +147,7 @@ static int dump_one_voiddev(struct ifinfomsg *ifi, char *kind, ...@@ -141,8 +147,7 @@ static int dump_one_voiddev(struct ifinfomsg *ifi, char *kind,
*/ */
return dump_one_netdev(ND_TYPE__EXTLINK, ifi, tb, fds, NULL); return dump_one_netdev(ND_TYPE__EXTLINK, ifi, tb, fds, NULL);
pr_err("Unknown VOID kind %s link %d\n", kind, ifi->ifi_index); return dump_unknown_device(ifi, kind, tb, fds);
return -1;
} }
static int dump_one_link(struct nlmsghdr *hdr, void *arg) static int dump_one_link(struct nlmsghdr *hdr, void *arg)
...@@ -167,11 +172,8 @@ static int dump_one_link(struct nlmsghdr *hdr, void *arg) ...@@ -167,11 +172,8 @@ static int dump_one_link(struct nlmsghdr *hdr, void *arg)
return dump_one_netdev(ND_TYPE__LOOPBACK, ifi, tb, fds, NULL); return dump_one_netdev(ND_TYPE__LOOPBACK, ifi, tb, fds, NULL);
kind = link_kind(ifi, tb); kind = link_kind(ifi, tb);
if (!kind) { if (!kind)
pr_err("Empty kind dev type %d link %d\n", goto unk;
ifi->ifi_type, ifi->ifi_index);
return -1;
}
switch (ifi->ifi_type) { switch (ifi->ifi_type) {
case ARPHRD_ETHER: case ARPHRD_ETHER:
...@@ -184,9 +186,8 @@ static int dump_one_link(struct nlmsghdr *hdr, void *arg) ...@@ -184,9 +186,8 @@ static int dump_one_link(struct nlmsghdr *hdr, void *arg)
ret = dump_one_voiddev(ifi, kind, tb, fds); ret = dump_one_voiddev(ifi, kind, tb, fds);
break; break;
default: default:
pr_err("Unsupported link type %d, kind %s\n", unk:
ifi->ifi_type, link_kind(ifi, tb)); ret = dump_unknown_device(ifi, kind, tb, fds);
ret = 0; /* just skip for now */
break; break;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment