On Fri, 14 Feb 2025 08:26:25 +0100
Laurent Vivier <lviv...@redhat.com> wrote:

> The netdev reports NETDEV_VHOST_USER_CONNECTED event when
> the chardev is connected, and NETDEV_VHOST_USER_DISCONNECTED
> when it is disconnected.
> 
> The NETDEV_VHOST_USER_CONNECTED event includes the ChardevInfo
> (label, filename and frontend_open).
> 
> This allows a system manager like libvirt to detect when the server
> fails.
> 
> For instance with passt:
> 
> { 'execute': 'qmp_capabilities' }
> { "return": { } }
> 
> [killing passt here]
> 
> { "timestamp": { "seconds": 1739517243, "microseconds": 115081 },
>   "event": "NETDEV_VHOST_USER_DISCONNECTED",
>   "data": { "netdev-id": "netdev0" } }
> 
> [automatic reconnection with reconnect-ms]
> 
> { "timestamp": { "seconds": 1739517290, "microseconds": 343777 },
>   "event": "NETDEV_VHOST_USER_CONNECTED",
>   "data": { "netdev-id": "netdev0",
>             "info": { "frontend-open": true,
>                       "filename": "unix:",
>                       "label": "chr0" } } }
> 
> Signed-off-by: Laurent Vivier <lviv...@redhat.com>

Tested-by: Stefano Brivio <sbri...@redhat.com>

...with libvirt's branch from:

  https://gitlab.com/lainestump/libvirt/-/tree/network-passt+vhostuser

simply wiring NETDEV_VHOST_USER_DISCONNECTED to the event handler
qemuMonitorJSONHandleNetdevStreamDisconnected(), that is, the handler
for NETDEV_STREAM_DISCONNECTED. I terminate passt, and it restarts.

-- 
Stefano


Reply via email to