Commit e562a61a introduced new function to get/set interface state but there was misuse of ATTRIBUTE_NONNULL on non-pointer attributes and also we need to wrap that functions by #ifdef to not break mingw build. Signed-off-by: Pavel Hrdina <phrdina@xxxxxxxxxx> --- src/util/virnetdev.c | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++-- src/util/virnetdev.h | 12 +++---- 2 files changed, 96 insertions(+), 10 deletions(-) diff --git a/src/util/virnetdev.c b/src/util/virnetdev.c index 7a0a43d..d8a4867 100644 --- a/src/util/virnetdev.c +++ b/src/util/virnetdev.c @@ -671,12 +671,23 @@ int virNetDevSetIFFlag(const char *ifname, * * Returns 0 in case of success or -1 on error. */ +#if defined(SIOCSIFFLAGS) && defined(HAVE_STRUCT_IFREQ) int virNetDevSetOnline(const char *ifname, bool online) { return virNetDevSetIFFlag(ifname, IFF_UP, online); } +#else +int virNetDevSetOnline(const char *ifname, + bool online ATTRIBUTE_UNUSED) +{ + virReportSystemError(ENOSYS, + _("Cannot set interface flags on '%s'"), + ifname); + return -1; +} +#endif /** * virNetDevSetPromiscuous: @@ -689,11 +700,22 @@ int virNetDevSetOnline(const char *ifname, * * Returns 0 in case of success or -1 on error. */ +#if defined(SIOCSIFFLAGS) && defined(HAVE_STRUCT_IFREQ) int virNetDevSetPromiscuous(const char *ifname, bool promiscuous) { return virNetDevSetIFFlag(ifname, IFF_PROMISC, promiscuous); } +#else +int virNetDevSetPromiscuous(const char *ifname, + bool promiscuous ATTRIBUTE_UNUSED) +{ + virReportSystemError(ENOSYS, + _("Cannot set interface flags on '%s'"), + ifname); + return -1; +} +#endif /** * virNetDevSetRcvMulti: @@ -707,11 +729,22 @@ int virNetDevSetPromiscuous(const char *ifname, * * Returns 0 in case of success or -1 on error. */ +#if defined(SIOCSIFFLAGS) && defined(HAVE_STRUCT_IFREQ) int virNetDevSetRcvMulti(const char *ifname, bool receive) { return virNetDevSetIFFlag(ifname, IFF_MULTICAST, receive); } +#else +int virNetDevSetRcvMulti(const char *ifname, + bool receive ATTRIBUTE_UNUSED) +{ + virReportSystemError(ENOSYS, + _("Cannot set interface flags on '%s'"), + ifname); + return -1; +} +#endif /** * virNetDevSetRcvAllMulti: @@ -723,11 +756,22 @@ int virNetDevSetRcvMulti(const char *ifname, * * Returns 0 in case of success or -1 on error. */ +#if defined(SIOCSIFFLAGS) && defined(HAVE_STRUCT_IFREQ) int virNetDevSetRcvAllMulti(const char *ifname, bool receive) { return virNetDevSetIFFlag(ifname, IFF_ALLMULTI, receive); } +#else +int virNetDevSetRcvAllMulti(const char *ifname, + bool receive ATTRIBUTE_UNUSED) +{ + virReportSystemError(ENOSYS, + _("Cannot set interface flags on '%s'"), + ifname); + return -1; +} +#endif #if defined(SIOCGIFFLAGS) && defined(HAVE_STRUCT_IFREQ) @@ -776,11 +820,22 @@ int virNetDevGetIFFlag(const char *ifname, * * Returns 0 in case of success or an errno code in case of failure. */ +#if defined(SIOCSIFFLAGS) && defined(HAVE_STRUCT_IFREQ) int virNetDevGetOnline(const char *ifname, bool *online) { return virNetDevGetIFFlag(ifname, IFF_UP, online); } +#else +int virNetDevGetOnline(const char *ifname, + bool *online ATTRIBUTE_UNUSED) +{ + virReportSystemError(ENOSYS, + _("Cannot get interface flags on '%s'"), + ifname); + return -1; +} +#endif /** * virNetDevIsPromiscuous: @@ -792,11 +847,22 @@ int virNetDevGetOnline(const char *ifname, * * Returns 0 in case of success or an errno code in case of failure. */ +#if defined(SIOCSIFFLAGS) && defined(HAVE_STRUCT_IFREQ) int virNetDevGetPromiscuous(const char *ifname, - bool *promiscuous) + bool *promiscuous) { return virNetDevGetIFFlag(ifname, IFF_PROMISC, promiscuous); } +#else +int virNetDevGetPromiscuous(const char *ifname, + bool *promiscuous ATTRIBUTE_UNUSED) +{ + virReportSystemError(ENOSYS, + _("Cannot get interface flags on '%s'"), + ifname); + return -1; +} +#endif /** * virNetDevIsRcvMulti: @@ -808,11 +874,22 @@ int virNetDevGetPromiscuous(const char *ifname, * * Returns 0 in case of success or -1 on error. */ +#if defined(SIOCSIFFLAGS) && defined(HAVE_STRUCT_IFREQ) int virNetDevGetRcvMulti(const char *ifname, - bool *receive) + bool *receive) { return virNetDevGetIFFlag(ifname, IFF_MULTICAST, receive); } +#else +int virNetDevGetRcvMulti(const char *ifname, + bool *receive ATTRIBUTE_UNUSED) +{ + virReportSystemError(ENOSYS, + _("Cannot get interface flags on '%s'"), + ifname); + return -1; +} +#endif /** * virNetDevIsRcvAllMulti: @@ -824,11 +901,22 @@ int virNetDevGetRcvMulti(const char *ifname, * * Returns 0 in case of success or -1 on error. */ +#if defined(SIOCSIFFLAGS) && defined(HAVE_STRUCT_IFREQ) int virNetDevGetRcvAllMulti(const char *ifname, - bool *receive) + bool *receive) { return virNetDevGetIFFlag(ifname, IFF_ALLMULTI, receive); } +#else +int virNetDevGetRcvAllMulti(const char *ifname, + bool *receive ATTRIBUTE_UNUSED) +{ + virReportSystemError(ENOSYS, + _("Cannot get interface flags on '%s'"), + ifname); + return -1; +} +#endif /** diff --git a/src/util/virnetdev.h b/src/util/virnetdev.h index 8d03459..1001e43 100644 --- a/src/util/virnetdev.h +++ b/src/util/virnetdev.h @@ -201,25 +201,23 @@ int virNetDevDelMulti(const char *ifname, ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK; int virNetDevSetIFFlag(const char *ifname, int flag, bool val) - ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3) - ATTRIBUTE_RETURN_CHECK; + ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK; int virNetDevGetIFFlag(const char *ifname, int flag, bool *val) - ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3) - ATTRIBUTE_RETURN_CHECK; + ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(3) ATTRIBUTE_RETURN_CHECK; int virNetDevSetPromiscuous(const char *ifname, bool promiscuous) - ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK; + ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK; int virNetDevGetPromiscuous(const char *ifname, bool *promiscuous) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK; int virNetDevSetRcvMulti(const char *ifname, bool receive) - ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK; + ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK; int virNetDevGetRcvMulti(const char *ifname, bool *receive) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK; int virNetDevSetRcvAllMulti(const char *ifname, bool receive) - ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK; + ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK; int virNetDevGetRcvAllMulti(const char *ifname, bool *receive) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK; #endif /* __VIR_NETDEV_H__ */ -- 2.0.5 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list