On Mon, Jan 21, 2019 at 07:10:30PM +0100, Philippe Mathieu-Daudé wrote: > Commit 2974e916df8 introduced the VirtioNetRscChain structure which > refer to a VirtIONet, declared later, thus required VirtIONet typedef > to be declarated forward. > However, when compiling with Clang in -std=gnu99 mode, this triggers > the following warning/error: > > CC hw/net/virtio-net.o > In file included from qemu/hw/net/virtio-net.c:22: > include/hw/virtio/virtio-net.h:189:3: error: redefinition of typedef > 'VirtIONet' is a C11 feature [-Werror,-Wtypedef-redefinition] > } VirtIONet; > ^ > include/hw/virtio/virtio-net.h:110:26: note: previous definition is here > typedef struct VirtIONet VirtIONet; > ^ > 1 error generated. > make: *** [rules.mak:69: hw/net/virtio-net.o] Error 1 > > Fix it by removing the duplicate typedef definition. > > Reported-by: Peter Maydell <peter.mayd...@linaro.org> > Signed-off-by: Philippe Mathieu-Daudé <phi...@redhat.com>
Reviewed-by: Michael S. Tsirkin <m...@redhat.com> > --- > include/hw/virtio/virtio-net.h | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > > diff --git a/include/hw/virtio/virtio-net.h b/include/hw/virtio/virtio-net.h > index c7ec1a755f..bd662752d2 100644 > --- a/include/hw/virtio/virtio-net.h > +++ b/include/hw/virtio/virtio-net.h > @@ -106,7 +106,6 @@ typedef struct VirtioNetRscSeg { > NetClientState *nc; > } VirtioNetRscSeg; > > -struct VirtIONet; > typedef struct VirtIONet VirtIONet; > > /* Chain is divided by protocol(ipv4/v6) and NetClientInfo */ > @@ -136,7 +135,7 @@ typedef struct VirtIONetQueue { > struct VirtIONet *n; > } VirtIONetQueue; > > -typedef struct VirtIONet { > +struct VirtIONet { > VirtIODevice parent_obj; > uint8_t mac[ETH_ALEN]; > uint16_t status; > @@ -186,7 +185,7 @@ typedef struct VirtIONet { > int announce_counter; > bool needs_vnet_hdr_swap; > bool mtu_bypass_backend; > -} VirtIONet; > +}; > > void virtio_net_set_netclient_name(VirtIONet *n, const char *name, > const char *type); > -- > 2.20.1