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.5.0~40 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b9f4c12081cdc114fda7e5835448f121e1ee7c73;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/interfaces.c b/src/interfaces.c index 046aa03a..de925d7f 100644 --- a/src/interfaces.c +++ b/src/interfaces.c @@ -130,11 +130,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", @@ -175,11 +175,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)