> 3. The easiest solution - nop .receive() The solution 3 is similar of my implementation and does not solve issue pointed by Jason: legacy guest do not send a gratuitous ARP.
> 2. Fail negotiation when VIRTIO_NET_F_GUEST_ANNOUNCE is not accepted > file:///home/stefanha/virtio/trunk/virtio-v1.0-cs02.html#x1-450001 Could you send me the virtio-v1.0-cs02.html#x1-450001 if you think it can help me ? Nevertheless it seems that only solution 1 can provide a solution to the issue pointed by Jason. On Mon, Jun 8, 2015 at 5:13 PM, Stefan Hajnoczi <stefa...@gmail.com> wrote: > On Mon, Jun 8, 2015 at 3:05 PM, Thibaut Collet <thibaut.col...@6wind.com> > wrote: > >> I think Jason is pointing out that your patch lacks support for guests > >> that do not negotiate VIRTIO_NET_F_GUEST_ANNOUNCE. > > > > I have understood the issue with old guest pointed by Jason. > > I have thinking about the best way to do solve it and any advices are > > welcome. > > 1. Add vhost-user virtio-net command to inject packets > > Add a new VhostUserRequest VHOST_USER_NET_INJECT_PACKET allowing QEMU > to hand a packet to the vhost-user process for injection. This > command is virtio-net specific and fails if called on a different > device type. > > 2. Fail negotiation when VIRTIO_NET_F_GUEST_ANNOUNCE is not accepted > > This is only really possible in VIRTIO 1.0 and later. Pre-1.0 does > not allow the device to reject due to disabled features. > > file:///home/stefanha/virtio/trunk/virtio-v1.0-cs02.html#x1-450001 > > Therefore this is not a great solution. > > 3. The easiest solution - nop .receive() > > Just implement a nop .receive() which drops the packet and prints a > warning message to stderr. This way VIRTIO_NET_F_GUEST_ANNOUNCE > guests work while legacy guests don't send a gratuitous ARP packet. > > Stefan >