From: Vincent Bernat Date: Wed, 2 Sep 2009 12:20:56 +0000 (+0200) Subject: Bridge ioctls cannot be used with a 32bit userland on a 64bit kernel. X-Git-Tag: 0.4.2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d7390a085b5655c4633de3b0a8540c4cb48637f6;p=thirdparty%2Flldpd.git Bridge ioctls cannot be used with a 32bit userland on a 64bit kernel. Don't output any warning when ioctl fails. --- diff --git a/src/features.c b/src/features.c index fe988b55..6d6e4cf8 100644 --- a/src/features.c +++ b/src/features.c @@ -49,11 +49,11 @@ old_iface_is_bridge(struct lldpd *cfg, const char *name) int num, i; unsigned long args[3] = { BRCTL_GET_BRIDGES, (unsigned long)ifindices, MAX_BRIDGES }; - if ((num = ioctl(cfg->g_sock, SIOCGIFBR, args)) < 0) { - if (errno != ENOPKG) - LLOG_INFO("unable to get available bridges"); + if ((num = ioctl(cfg->g_sock, SIOCGIFBR, args)) < 0) + /* This can happen with a 64bit kernel and 32bit + userland, don't output anything about this to avoid + to fill logs. */ return 0; - } for (i = 0; i < num; i++) { if (if_indextoname(ifindices[i], ifname) == NULL) LLOG_INFO("unable to get name of interface %d", @@ -93,11 +93,11 @@ old_iface_is_bridged_to(struct lldpd *cfg, const char *slave, const char *master memset(ifptindices, 0, sizeof(ifptindices)); ifr.ifr_data = (char *)&args2; - if (ioctl(cfg->g_sock, SIOCDEVPRIVATE, &ifr) < 0) { - LLOG_WARN("unable to get bridge members for %s", - ifr.ifr_name); + if (ioctl(cfg->g_sock, SIOCDEVPRIVATE, &ifr) < 0) + /* This can happen with a 64bit kernel and 32bit + userland, don't output anything about this to avoid + to fill logs. */ return 0; - } for (j = 0; j < MAX_PORTS; j++) { if (ifptindices[j] == index)