]> git.puffer.fish Git - matthieu/frr.git/commitdiff
zebra: don't log errors on unsupported medias
authorRafael Zalamena <rzalamena@opensourcerouting.org>
Wed, 5 Dec 2018 19:22:56 +0000 (17:22 -0200)
committerRafael Zalamena <rzalamena@opensourcerouting.org>
Wed, 5 Dec 2018 19:22:56 +0000 (17:22 -0200)
When using `SIOCGIFMEDIA` check for `EINVAL`, otherwise we might print
an error message on an unsupported interface.

FreeBSD source code reference:
https://github.com/freebsd/freebsd/blob/master/sys/net/if_media.c#L300

And:
https://github.com/freebsd/freebsd/blob/8cb4b0c0181bd45318ee8977f77aea90c53bb224/usr.sbin/rtsold/if.c#L211

  /*
   * EINVAL simply means that the interface does not support
   * the SIOCGIFMEDIA ioctl. We regard it alive.
   */

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
zebra/ioctl.c

index 87e98032a21ec2647157ea917c8cf17988eed4e9..ebe1edcaef0a77b11ce5cf394269e254a38d5195 100644 (file)
@@ -415,7 +415,8 @@ void if_get_flags(struct interface *ifp)
                strncpy(ifmr.ifm_name, ifp->name, IFNAMSIZ);
 
                /* Seems not all interfaces implement this ioctl */
-               if (if_ioctl(SIOCGIFMEDIA, (caddr_t)&ifmr) < 0)
+               if (if_ioctl(SIOCGIFMEDIA, (caddr_t)&ifmr) == -1 &&
+                   errno != EINVAL)
                        flog_err_sys(EC_LIB_SYSTEM_CALL,
                                     "if_ioctl(SIOCGIFMEDIA) failed: %s",
                                     safe_strerror(errno));