13c0bd37dSMarkus Armbruster# -*- Mode: Python -*- 2f7160f32SAndrea Bolognani# vim: filetype=python 33c0bd37dSMarkus Armbruster# 43c0bd37dSMarkus Armbruster 53c0bd37dSMarkus Armbruster## 63c0bd37dSMarkus Armbruster# = Net devices 73c0bd37dSMarkus Armbruster## 83c0bd37dSMarkus Armbruster 95166fe0aSLaurent Vivier{ 'include': 'sockets.json' } 103c0bd37dSMarkus Armbruster 113c0bd37dSMarkus Armbruster## 123c0bd37dSMarkus Armbruster# @set_link: 133c0bd37dSMarkus Armbruster# 143c0bd37dSMarkus Armbruster# Sets the link status of a virtual network adapter. 153c0bd37dSMarkus Armbruster# 163c0bd37dSMarkus Armbruster# @name: the device name of the virtual network adapter 173c0bd37dSMarkus Armbruster# 183c0bd37dSMarkus Armbruster# @up: true to set the link status to be up 193c0bd37dSMarkus Armbruster# 202746f060SMarkus Armbruster# Errors: 21ae7ccd50SMarkus Armbruster# - If @name is not a valid network device, DeviceNotFound 223c0bd37dSMarkus Armbruster# 239bc6e893SMarkus Armbruster# Since: 0.14 243c0bd37dSMarkus Armbruster# 2501bed0ffSMarkus Armbruster# .. note:: Not all network adapters support setting link status. 2601bed0ffSMarkus Armbruster# This command will succeed even if the network adapter does not 2701bed0ffSMarkus Armbruster# support link status notification. 283c0bd37dSMarkus Armbruster# 2914b48aaaSJohn Snow# .. qmp-example:: 303c0bd37dSMarkus Armbruster# 313c0bd37dSMarkus Armbruster# -> { "execute": "set_link", 323c0bd37dSMarkus Armbruster# "arguments": { "name": "e1000.0", "up": false } } 333c0bd37dSMarkus Armbruster# <- { "return": {} } 343c0bd37dSMarkus Armbruster## 353c0bd37dSMarkus Armbruster{ 'command': 'set_link', 'data': {'name': 'str', 'up': 'bool'} } 363c0bd37dSMarkus Armbruster 373c0bd37dSMarkus Armbruster## 383c0bd37dSMarkus Armbruster# @netdev_add: 393c0bd37dSMarkus Armbruster# 403c0bd37dSMarkus Armbruster# Add a network backend. 413c0bd37dSMarkus Armbruster# 423c0bd37dSMarkus Armbruster# Additional arguments depend on the type. 433c0bd37dSMarkus Armbruster# 449bc6e893SMarkus Armbruster# Since: 0.14 453c0bd37dSMarkus Armbruster# 462746f060SMarkus Armbruster# Errors: 47ae7ccd50SMarkus Armbruster# - If @type is not a valid network backend, DeviceNotFound 483c0bd37dSMarkus Armbruster# 4914b48aaaSJohn Snow# .. qmp-example:: 503c0bd37dSMarkus Armbruster# 513c0bd37dSMarkus Armbruster# -> { "execute": "netdev_add", 523c0bd37dSMarkus Armbruster# "arguments": { "type": "user", "id": "netdev1", 539a9d101cSVictor Toso# "dnssearch": [ { "str": "example.org" } ] } } 543c0bd37dSMarkus Armbruster# <- { "return": {} } 553c0bd37dSMarkus Armbruster## 5648f596c5SPaolo Bonzini{ 'command': 'netdev_add', 'data': 'Netdev', 'boxed': true, 5748f596c5SPaolo Bonzini 'allow-preconfig': true } 583c0bd37dSMarkus Armbruster 593c0bd37dSMarkus Armbruster## 603c0bd37dSMarkus Armbruster# @netdev_del: 613c0bd37dSMarkus Armbruster# 623c0bd37dSMarkus Armbruster# Remove a network backend. 633c0bd37dSMarkus Armbruster# 643c0bd37dSMarkus Armbruster# @id: the name of the network backend to remove 653c0bd37dSMarkus Armbruster# 662746f060SMarkus Armbruster# Errors: 67ae7ccd50SMarkus Armbruster# - If @id is not a valid network backend, DeviceNotFound 683c0bd37dSMarkus Armbruster# 699bc6e893SMarkus Armbruster# Since: 0.14 703c0bd37dSMarkus Armbruster# 7114b48aaaSJohn Snow# .. qmp-example:: 723c0bd37dSMarkus Armbruster# 733c0bd37dSMarkus Armbruster# -> { "execute": "netdev_del", "arguments": { "id": "netdev1" } } 743c0bd37dSMarkus Armbruster# <- { "return": {} } 753c0bd37dSMarkus Armbruster## 7648f596c5SPaolo Bonzini{ 'command': 'netdev_del', 'data': {'id': 'str'}, 7748f596c5SPaolo Bonzini 'allow-preconfig': true } 783c0bd37dSMarkus Armbruster 793c0bd37dSMarkus Armbruster## 803c0bd37dSMarkus Armbruster# @NetLegacyNicOptions: 813c0bd37dSMarkus Armbruster# 823c0bd37dSMarkus Armbruster# Create a new Network Interface Card. 833c0bd37dSMarkus Armbruster# 843c0bd37dSMarkus Armbruster# @netdev: id of -netdev to connect to 853c0bd37dSMarkus Armbruster# 863c0bd37dSMarkus Armbruster# @macaddr: MAC address 873c0bd37dSMarkus Armbruster# 883c0bd37dSMarkus Armbruster# @model: device model (e1000, rtl8139, virtio etc.) 893c0bd37dSMarkus Armbruster# 903c0bd37dSMarkus Armbruster# @addr: PCI device address 913c0bd37dSMarkus Armbruster# 923c0bd37dSMarkus Armbruster# @vectors: number of MSI-x vectors, 0 to disable MSI-X 933c0bd37dSMarkus Armbruster# 943c0bd37dSMarkus Armbruster# Since: 1.2 953c0bd37dSMarkus Armbruster## 963c0bd37dSMarkus Armbruster{ 'struct': 'NetLegacyNicOptions', 973c0bd37dSMarkus Armbruster 'data': { 983c0bd37dSMarkus Armbruster '*netdev': 'str', 993c0bd37dSMarkus Armbruster '*macaddr': 'str', 1003c0bd37dSMarkus Armbruster '*model': 'str', 1013c0bd37dSMarkus Armbruster '*addr': 'str', 1023c0bd37dSMarkus Armbruster '*vectors': 'uint32' } } 1033c0bd37dSMarkus Armbruster 1043c0bd37dSMarkus Armbruster## 1058bf69544SMarkus Armbruster# @String: 1068bf69544SMarkus Armbruster# 1078bf69544SMarkus Armbruster# A fat type wrapping 'str', to be embedded in lists. 1088bf69544SMarkus Armbruster# 1098bf69544SMarkus Armbruster# Since: 1.2 1108bf69544SMarkus Armbruster## 1118bf69544SMarkus Armbruster{ 'struct': 'String', 1128bf69544SMarkus Armbruster 'data': { 1138bf69544SMarkus Armbruster 'str': 'str' } } 1148bf69544SMarkus Armbruster 1158bf69544SMarkus Armbruster## 1163c0bd37dSMarkus Armbruster# @NetdevUserOptions: 1173c0bd37dSMarkus Armbruster# 118a937b6aaSMarkus Armbruster# Use the user mode network stack which requires no administrator 119a937b6aaSMarkus Armbruster# privilege to run. 1203c0bd37dSMarkus Armbruster# 1213c0bd37dSMarkus Armbruster# @hostname: client hostname reported by the builtin DHCP server 1223c0bd37dSMarkus Armbruster# 1233c0bd37dSMarkus Armbruster# @restrict: isolate the guest from the host 1243c0bd37dSMarkus Armbruster# 125a937b6aaSMarkus Armbruster# @ipv4: whether to support IPv4, default true for enabled (since 2.6) 1263c0bd37dSMarkus Armbruster# 127a937b6aaSMarkus Armbruster# @ipv6: whether to support IPv6, default true for enabled (since 2.6) 1283c0bd37dSMarkus Armbruster# 1293c0bd37dSMarkus Armbruster# @ip: legacy parameter, use net= instead 1303c0bd37dSMarkus Armbruster# 131a937b6aaSMarkus Armbruster# @net: IP network address that the guest will see, in the form 132a937b6aaSMarkus Armbruster# addr[/netmask] The netmask is optional, and can be either in the 133a937b6aaSMarkus Armbruster# form a.b.c.d or as a number of valid top-most bits. Default is 134a937b6aaSMarkus Armbruster# 10.0.2.0/24. 1353c0bd37dSMarkus Armbruster# 1363c0bd37dSMarkus Armbruster# @host: guest-visible address of the host 1373c0bd37dSMarkus Armbruster# 1383c0bd37dSMarkus Armbruster# @tftp: root directory of the built-in TFTP server 1393c0bd37dSMarkus Armbruster# 1403c0bd37dSMarkus Armbruster# @bootfile: BOOTP filename, for use with tftp= 1413c0bd37dSMarkus Armbruster# 1423c0bd37dSMarkus Armbruster# @dhcpstart: the first of the 16 IPs the built-in DHCP server can 1433c0bd37dSMarkus Armbruster# assign 1443c0bd37dSMarkus Armbruster# 1453c0bd37dSMarkus Armbruster# @dns: guest-visible address of the virtual nameserver 1463c0bd37dSMarkus Armbruster# 147a937b6aaSMarkus Armbruster# @dnssearch: list of DNS suffixes to search, passed as DHCP option to 148a937b6aaSMarkus Armbruster# the guest 1493c0bd37dSMarkus Armbruster# 150f18d1375SBenjamin Drung# @domainname: guest-visible domain name of the virtual nameserver 1513835c310SSamuel Thibault# (since 3.0) 152f18d1375SBenjamin Drung# 153a937b6aaSMarkus Armbruster# @ipv6-prefix: IPv6 network prefix (default is fec0::) (since 2.6). 154a937b6aaSMarkus Armbruster# The network prefix is given in the usual hexadecimal IPv6 155a937b6aaSMarkus Armbruster# address notation. 1563c0bd37dSMarkus Armbruster# 157a937b6aaSMarkus Armbruster# @ipv6-prefixlen: IPv6 network prefix length (default is 64) (since 158a937b6aaSMarkus Armbruster# 2.6) 1593c0bd37dSMarkus Armbruster# 1603c0bd37dSMarkus Armbruster# @ipv6-host: guest-visible IPv6 address of the host (since 2.6) 1613c0bd37dSMarkus Armbruster# 162a937b6aaSMarkus Armbruster# @ipv6-dns: guest-visible IPv6 address of the virtual nameserver 163a937b6aaSMarkus Armbruster# (since 2.6) 1643c0bd37dSMarkus Armbruster# 1653c0bd37dSMarkus Armbruster# @smb: root directory of the built-in SMB server 1663c0bd37dSMarkus Armbruster# 1673c0bd37dSMarkus Armbruster# @smbserver: IP address of the built-in SMB server 1683c0bd37dSMarkus Armbruster# 1693c0bd37dSMarkus Armbruster# @hostfwd: redirect incoming TCP or UDP host connections to guest 1703c0bd37dSMarkus Armbruster# endpoints 1713c0bd37dSMarkus Armbruster# 1723c0bd37dSMarkus Armbruster# @guestfwd: forward guest TCP connections 1733c0bd37dSMarkus Armbruster# 1740fca92b9SFam Zheng# @tftp-server-name: RFC2132 "TFTP server name" string (Since 3.1) 1750fca92b9SFam Zheng# 1763c0bd37dSMarkus Armbruster# Since: 1.2 1773c0bd37dSMarkus Armbruster## 1783c0bd37dSMarkus Armbruster{ 'struct': 'NetdevUserOptions', 1793c0bd37dSMarkus Armbruster 'data': { 1803c0bd37dSMarkus Armbruster '*hostname': 'str', 1813c0bd37dSMarkus Armbruster '*restrict': 'bool', 1823c0bd37dSMarkus Armbruster '*ipv4': 'bool', 1833c0bd37dSMarkus Armbruster '*ipv6': 'bool', 1843c0bd37dSMarkus Armbruster '*ip': 'str', 1853c0bd37dSMarkus Armbruster '*net': 'str', 1863c0bd37dSMarkus Armbruster '*host': 'str', 1873c0bd37dSMarkus Armbruster '*tftp': 'str', 1883c0bd37dSMarkus Armbruster '*bootfile': 'str', 1893c0bd37dSMarkus Armbruster '*dhcpstart': 'str', 1903c0bd37dSMarkus Armbruster '*dns': 'str', 1913c0bd37dSMarkus Armbruster '*dnssearch': ['String'], 192f18d1375SBenjamin Drung '*domainname': 'str', 1933c0bd37dSMarkus Armbruster '*ipv6-prefix': 'str', 1943c0bd37dSMarkus Armbruster '*ipv6-prefixlen': 'int', 1953c0bd37dSMarkus Armbruster '*ipv6-host': 'str', 1963c0bd37dSMarkus Armbruster '*ipv6-dns': 'str', 1973c0bd37dSMarkus Armbruster '*smb': 'str', 1983c0bd37dSMarkus Armbruster '*smbserver': 'str', 1993c0bd37dSMarkus Armbruster '*hostfwd': ['String'], 2000fca92b9SFam Zheng '*guestfwd': ['String'], 2010fca92b9SFam Zheng '*tftp-server-name': 'str' } } 2023c0bd37dSMarkus Armbruster 2033c0bd37dSMarkus Armbruster## 2043c0bd37dSMarkus Armbruster# @NetdevTapOptions: 2053c0bd37dSMarkus Armbruster# 206af1a5c3eSThomas Huth# Used to configure a host TAP network interface backend. 2073c0bd37dSMarkus Armbruster# 2083c0bd37dSMarkus Armbruster# @ifname: interface name 2093c0bd37dSMarkus Armbruster# 2103c0bd37dSMarkus Armbruster# @fd: file descriptor of an already opened tap 2113c0bd37dSMarkus Armbruster# 2123c0bd37dSMarkus Armbruster# @fds: multiple file descriptors of already opened multiqueue capable 2133c0bd37dSMarkus Armbruster# tap 2143c0bd37dSMarkus Armbruster# 2153c0bd37dSMarkus Armbruster# @script: script to initialize the interface 2163c0bd37dSMarkus Armbruster# 2173c0bd37dSMarkus Armbruster# @downscript: script to shut down the interface 2183c0bd37dSMarkus Armbruster# 2193c0bd37dSMarkus Armbruster# @br: bridge name (since 2.8) 2203c0bd37dSMarkus Armbruster# 2213c0bd37dSMarkus Armbruster# @helper: command to execute to configure bridge 2223c0bd37dSMarkus Armbruster# 2233c0bd37dSMarkus Armbruster# @sndbuf: send buffer limit. Understands [TGMKkb] suffixes. 2243c0bd37dSMarkus Armbruster# 2253c0bd37dSMarkus Armbruster# @vnet_hdr: enable the IFF_VNET_HDR flag on the tap interface 2263c0bd37dSMarkus Armbruster# 2273c0bd37dSMarkus Armbruster# @vhost: enable vhost-net network accelerator 2283c0bd37dSMarkus Armbruster# 2293c0bd37dSMarkus Armbruster# @vhostfd: file descriptor of an already opened vhost net device 2303c0bd37dSMarkus Armbruster# 2313c0bd37dSMarkus Armbruster# @vhostfds: file descriptors of multiple already opened vhost net 2323c0bd37dSMarkus Armbruster# devices 2333c0bd37dSMarkus Armbruster# 2343c0bd37dSMarkus Armbruster# @vhostforce: vhost on for non-MSIX virtio guests 2353c0bd37dSMarkus Armbruster# 2363c0bd37dSMarkus Armbruster# @queues: number of queues to be created for multiqueue capable tap 2373c0bd37dSMarkus Armbruster# 238a937b6aaSMarkus Armbruster# @poll-us: maximum number of microseconds that could be spent on busy 239a937b6aaSMarkus Armbruster# polling for tap (since 2.7) 2403c0bd37dSMarkus Armbruster# 2413c0bd37dSMarkus Armbruster# Since: 1.2 2423c0bd37dSMarkus Armbruster## 2433c0bd37dSMarkus Armbruster{ 'struct': 'NetdevTapOptions', 2443c0bd37dSMarkus Armbruster 'data': { 2453c0bd37dSMarkus Armbruster '*ifname': 'str', 2463c0bd37dSMarkus Armbruster '*fd': 'str', 2473c0bd37dSMarkus Armbruster '*fds': 'str', 2483c0bd37dSMarkus Armbruster '*script': 'str', 2493c0bd37dSMarkus Armbruster '*downscript': 'str', 2503c0bd37dSMarkus Armbruster '*br': 'str', 2513c0bd37dSMarkus Armbruster '*helper': 'str', 2523c0bd37dSMarkus Armbruster '*sndbuf': 'size', 2533c0bd37dSMarkus Armbruster '*vnet_hdr': 'bool', 2543c0bd37dSMarkus Armbruster '*vhost': 'bool', 2553c0bd37dSMarkus Armbruster '*vhostfd': 'str', 2563c0bd37dSMarkus Armbruster '*vhostfds': 'str', 2573c0bd37dSMarkus Armbruster '*vhostforce': 'bool', 2583c0bd37dSMarkus Armbruster '*queues': 'uint32', 2593c0bd37dSMarkus Armbruster '*poll-us': 'uint32'} } 2603c0bd37dSMarkus Armbruster 2613c0bd37dSMarkus Armbruster## 2623c0bd37dSMarkus Armbruster# @NetdevSocketOptions: 2633c0bd37dSMarkus Armbruster# 264af1a5c3eSThomas Huth# Socket netdevs are used to establish a network connection to another 265af1a5c3eSThomas Huth# QEMU virtual machine via a TCP socket. 2663c0bd37dSMarkus Armbruster# 2673c0bd37dSMarkus Armbruster# @fd: file descriptor of an already opened socket 2683c0bd37dSMarkus Armbruster# 2693c0bd37dSMarkus Armbruster# @listen: port number, and optional hostname, to listen on 2703c0bd37dSMarkus Armbruster# 2713c0bd37dSMarkus Armbruster# @connect: port number, and optional hostname, to connect to 2723c0bd37dSMarkus Armbruster# 2733c0bd37dSMarkus Armbruster# @mcast: UDP multicast address and port number 2743c0bd37dSMarkus Armbruster# 2753c0bd37dSMarkus Armbruster# @localaddr: source address and port for multicast and udp packets 2763c0bd37dSMarkus Armbruster# 2773c0bd37dSMarkus Armbruster# @udp: UDP unicast address and port number 2783c0bd37dSMarkus Armbruster# 2793c0bd37dSMarkus Armbruster# Since: 1.2 2803c0bd37dSMarkus Armbruster## 2813c0bd37dSMarkus Armbruster{ 'struct': 'NetdevSocketOptions', 2823c0bd37dSMarkus Armbruster 'data': { 2833c0bd37dSMarkus Armbruster '*fd': 'str', 2843c0bd37dSMarkus Armbruster '*listen': 'str', 2853c0bd37dSMarkus Armbruster '*connect': 'str', 2863c0bd37dSMarkus Armbruster '*mcast': 'str', 2873c0bd37dSMarkus Armbruster '*localaddr': 'str', 2883c0bd37dSMarkus Armbruster '*udp': 'str' } } 2893c0bd37dSMarkus Armbruster 2903c0bd37dSMarkus Armbruster## 2913c0bd37dSMarkus Armbruster# @NetdevL2TPv3Options: 2923c0bd37dSMarkus Armbruster# 293af1a5c3eSThomas Huth# Configure an Ethernet over L2TPv3 tunnel. 2943c0bd37dSMarkus Armbruster# 2953c0bd37dSMarkus Armbruster# @src: source address 2963c0bd37dSMarkus Armbruster# 2973c0bd37dSMarkus Armbruster# @dst: destination address 2983c0bd37dSMarkus Armbruster# 2993c0bd37dSMarkus Armbruster# @srcport: source port - mandatory for udp, optional for ip 3003c0bd37dSMarkus Armbruster# 3013c0bd37dSMarkus Armbruster# @dstport: destination port - mandatory for udp, optional for ip 3023c0bd37dSMarkus Armbruster# 3033c0bd37dSMarkus Armbruster# @ipv6: force the use of ipv6 3043c0bd37dSMarkus Armbruster# 3053c0bd37dSMarkus Armbruster# @udp: use the udp version of l2tpv3 encapsulation 3063c0bd37dSMarkus Armbruster# 307118d4ed0SDr. David Alan Gilbert# @cookie64: use 64 bit cookies 3083c0bd37dSMarkus Armbruster# 3093c0bd37dSMarkus Armbruster# @counter: have sequence counter 3103c0bd37dSMarkus Armbruster# 311a937b6aaSMarkus Armbruster# @pincounter: pin sequence counter to zero - workaround for buggy 312a937b6aaSMarkus Armbruster# implementations or networks with packet reorder 3133c0bd37dSMarkus Armbruster# 3143c0bd37dSMarkus Armbruster# @txcookie: 32 or 64 bit transmit cookie 3153c0bd37dSMarkus Armbruster# 3163c0bd37dSMarkus Armbruster# @rxcookie: 32 or 64 bit receive cookie 3173c0bd37dSMarkus Armbruster# 3183c0bd37dSMarkus Armbruster# @txsession: 32 bit transmit session 3193c0bd37dSMarkus Armbruster# 320a937b6aaSMarkus Armbruster# @rxsession: 32 bit receive session - if not specified set to the 321a937b6aaSMarkus Armbruster# same value as transmit 3223c0bd37dSMarkus Armbruster# 323a937b6aaSMarkus Armbruster# @offset: additional offset - allows the insertion of additional 324a937b6aaSMarkus Armbruster# application-specific data before the packet payload 3253c0bd37dSMarkus Armbruster# 3263c0bd37dSMarkus Armbruster# Since: 2.1 3273c0bd37dSMarkus Armbruster## 3283c0bd37dSMarkus Armbruster{ 'struct': 'NetdevL2TPv3Options', 3293c0bd37dSMarkus Armbruster 'data': { 3303c0bd37dSMarkus Armbruster 'src': 'str', 3313c0bd37dSMarkus Armbruster 'dst': 'str', 3323c0bd37dSMarkus Armbruster '*srcport': 'str', 3333c0bd37dSMarkus Armbruster '*dstport': 'str', 3343c0bd37dSMarkus Armbruster '*ipv6': 'bool', 3353c0bd37dSMarkus Armbruster '*udp': 'bool', 3363c0bd37dSMarkus Armbruster '*cookie64': 'bool', 3373c0bd37dSMarkus Armbruster '*counter': 'bool', 3383c0bd37dSMarkus Armbruster '*pincounter': 'bool', 3393c0bd37dSMarkus Armbruster '*txcookie': 'uint64', 3403c0bd37dSMarkus Armbruster '*rxcookie': 'uint64', 3413c0bd37dSMarkus Armbruster 'txsession': 'uint32', 3423c0bd37dSMarkus Armbruster '*rxsession': 'uint32', 3433c0bd37dSMarkus Armbruster '*offset': 'uint32' } } 3443c0bd37dSMarkus Armbruster 3453c0bd37dSMarkus Armbruster## 3463c0bd37dSMarkus Armbruster# @NetdevVdeOptions: 3473c0bd37dSMarkus Armbruster# 348af1a5c3eSThomas Huth# Connect to a vde switch running on the host. 3493c0bd37dSMarkus Armbruster# 3503c0bd37dSMarkus Armbruster# @sock: socket path 3513c0bd37dSMarkus Armbruster# 3523c0bd37dSMarkus Armbruster# @port: port number 3533c0bd37dSMarkus Armbruster# 3543c0bd37dSMarkus Armbruster# @group: group owner of socket 3553c0bd37dSMarkus Armbruster# 3563c0bd37dSMarkus Armbruster# @mode: permissions for socket 3573c0bd37dSMarkus Armbruster# 3583c0bd37dSMarkus Armbruster# Since: 1.2 3593c0bd37dSMarkus Armbruster## 3603c0bd37dSMarkus Armbruster{ 'struct': 'NetdevVdeOptions', 3613c0bd37dSMarkus Armbruster 'data': { 3623c0bd37dSMarkus Armbruster '*sock': 'str', 3633c0bd37dSMarkus Armbruster '*port': 'uint16', 3643c0bd37dSMarkus Armbruster '*group': 'str', 3653c0bd37dSMarkus Armbruster '*mode': 'uint16' } } 3663c0bd37dSMarkus Armbruster 3673c0bd37dSMarkus Armbruster## 3683c0bd37dSMarkus Armbruster# @NetdevBridgeOptions: 3693c0bd37dSMarkus Armbruster# 3703c0bd37dSMarkus Armbruster# Connect a host TAP network interface to a host bridge device. 3713c0bd37dSMarkus Armbruster# 3723c0bd37dSMarkus Armbruster# @br: bridge name 3733c0bd37dSMarkus Armbruster# 3743c0bd37dSMarkus Armbruster# @helper: command to execute to configure bridge 3753c0bd37dSMarkus Armbruster# 3763c0bd37dSMarkus Armbruster# Since: 1.2 3773c0bd37dSMarkus Armbruster## 3783c0bd37dSMarkus Armbruster{ 'struct': 'NetdevBridgeOptions', 3793c0bd37dSMarkus Armbruster 'data': { 3803c0bd37dSMarkus Armbruster '*br': 'str', 3813c0bd37dSMarkus Armbruster '*helper': 'str' } } 3823c0bd37dSMarkus Armbruster 3833c0bd37dSMarkus Armbruster## 3843c0bd37dSMarkus Armbruster# @NetdevHubPortOptions: 3853c0bd37dSMarkus Armbruster# 3863c0bd37dSMarkus Armbruster# Connect two or more net clients through a software hub. 3873c0bd37dSMarkus Armbruster# 3883c0bd37dSMarkus Armbruster# @hubid: hub identifier number 389a937b6aaSMarkus Armbruster# 390a937b6aaSMarkus Armbruster# @netdev: used to connect hub to a netdev instead of a device (since 391a937b6aaSMarkus Armbruster# 2.12) 3923c0bd37dSMarkus Armbruster# 3933c0bd37dSMarkus Armbruster# Since: 1.2 3943c0bd37dSMarkus Armbruster## 3953c0bd37dSMarkus Armbruster{ 'struct': 'NetdevHubPortOptions', 3963c0bd37dSMarkus Armbruster 'data': { 39718d65d22SThomas Huth 'hubid': 'int32', 39818d65d22SThomas Huth '*netdev': 'str' } } 3993c0bd37dSMarkus Armbruster 4003c0bd37dSMarkus Armbruster## 4013c0bd37dSMarkus Armbruster# @NetdevNetmapOptions: 4023c0bd37dSMarkus Armbruster# 4033c0bd37dSMarkus Armbruster# Connect a client to a netmap-enabled NIC or to a VALE switch port 4043c0bd37dSMarkus Armbruster# 405a937b6aaSMarkus Armbruster# @ifname: Either the name of an existing network interface supported 406a937b6aaSMarkus Armbruster# by netmap, or the name of a VALE port (created on the fly). A 407a937b6aaSMarkus Armbruster# VALE port name is in the form 'valeXXX:YYY', where XXX and YYY 408a937b6aaSMarkus Armbruster# are non-negative integers. XXX identifies a switch and YYY 409a937b6aaSMarkus Armbruster# identifies a port of the switch. VALE ports having the same XXX 410a937b6aaSMarkus Armbruster# are therefore connected to the same switch. 4113c0bd37dSMarkus Armbruster# 4123c0bd37dSMarkus Armbruster# @devname: path of the netmap device (default: '/dev/netmap'). 4133c0bd37dSMarkus Armbruster# 4143c0bd37dSMarkus Armbruster# Since: 2.0 4153c0bd37dSMarkus Armbruster## 4163c0bd37dSMarkus Armbruster{ 'struct': 'NetdevNetmapOptions', 4173c0bd37dSMarkus Armbruster 'data': { 4183c0bd37dSMarkus Armbruster 'ifname': 'str', 4193c0bd37dSMarkus Armbruster '*devname': 'str' } } 4203c0bd37dSMarkus Armbruster 4213c0bd37dSMarkus Armbruster## 422cb039ef3SIlya Maximets# @AFXDPMode: 423cb039ef3SIlya Maximets# 424cb039ef3SIlya Maximets# Attach mode for a default XDP program 425cb039ef3SIlya Maximets# 426cb039ef3SIlya Maximets# @skb: generic mode, no driver support necessary 427cb039ef3SIlya Maximets# 428209e64d9SMarkus Armbruster# @native: DRV mode, program is attached to a driver, packets are 429209e64d9SMarkus Armbruster# passed to the socket without allocation of skb. 430cb039ef3SIlya Maximets# 431cb039ef3SIlya Maximets# Since: 8.2 432cb039ef3SIlya Maximets## 433cb039ef3SIlya Maximets{ 'enum': 'AFXDPMode', 434cb039ef3SIlya Maximets 'data': [ 'native', 'skb' ], 435cb039ef3SIlya Maximets 'if': 'CONFIG_AF_XDP' } 436cb039ef3SIlya Maximets 437cb039ef3SIlya Maximets## 438cb039ef3SIlya Maximets# @NetdevAFXDPOptions: 439cb039ef3SIlya Maximets# 440cb039ef3SIlya Maximets# AF_XDP network backend 441cb039ef3SIlya Maximets# 442cb039ef3SIlya Maximets# @ifname: The name of an existing network interface. 443cb039ef3SIlya Maximets# 444209e64d9SMarkus Armbruster# @mode: Attach mode for a default XDP program. If not specified, 445209e64d9SMarkus Armbruster# then 'native' will be tried first, then 'skb'. 446cb039ef3SIlya Maximets# 447cb039ef3SIlya Maximets# @force-copy: Force XDP copy mode even if device supports zero-copy. 448cb039ef3SIlya Maximets# (default: false) 449cb039ef3SIlya Maximets# 450209e64d9SMarkus Armbruster# @queues: number of queues to be used for multiqueue interfaces 451209e64d9SMarkus Armbruster# (default: 1). 452cb039ef3SIlya Maximets# 453209e64d9SMarkus Armbruster# @start-queue: Use @queues starting from this queue number 454209e64d9SMarkus Armbruster# (default: 0). 455cb039ef3SIlya Maximets# 456209e64d9SMarkus Armbruster# @inhibit: Don't load a default XDP program, use one already loaded 457209e64d9SMarkus Armbruster# to the interface (default: false). Requires @sock-fds. 458cb039ef3SIlya Maximets# 459209e64d9SMarkus Armbruster# @sock-fds: A colon (:) separated list of file descriptors for 460209e64d9SMarkus Armbruster# already open but not bound AF_XDP sockets in the queue order. 461209e64d9SMarkus Armbruster# One fd per queue. These descriptors should already be added 462209e64d9SMarkus Armbruster# into XDP socket map for corresponding queues. Requires 463209e64d9SMarkus Armbruster# @inhibit. 464cb039ef3SIlya Maximets# 465cb039ef3SIlya Maximets# Since: 8.2 466cb039ef3SIlya Maximets## 467cb039ef3SIlya Maximets{ 'struct': 'NetdevAFXDPOptions', 468cb039ef3SIlya Maximets 'data': { 469cb039ef3SIlya Maximets 'ifname': 'str', 470cb039ef3SIlya Maximets '*mode': 'AFXDPMode', 471cb039ef3SIlya Maximets '*force-copy': 'bool', 472cb039ef3SIlya Maximets '*queues': 'int', 473cb039ef3SIlya Maximets '*start-queue': 'int', 474cb039ef3SIlya Maximets '*inhibit': 'bool', 475cb039ef3SIlya Maximets '*sock-fds': 'str' }, 476cb039ef3SIlya Maximets 'if': 'CONFIG_AF_XDP' } 477cb039ef3SIlya Maximets 478cb039ef3SIlya Maximets## 4793c0bd37dSMarkus Armbruster# @NetdevVhostUserOptions: 4803c0bd37dSMarkus Armbruster# 4813c0bd37dSMarkus Armbruster# Vhost-user network backend 4823c0bd37dSMarkus Armbruster# 4833c0bd37dSMarkus Armbruster# @chardev: name of a unix socket chardev 4843c0bd37dSMarkus Armbruster# 4853c0bd37dSMarkus Armbruster# @vhostforce: vhost on for non-MSIX virtio guests (default: false). 4863c0bd37dSMarkus Armbruster# 4873c0bd37dSMarkus Armbruster# @queues: number of queues to be created for multiqueue vhost-user 4883c0bd37dSMarkus Armbruster# (default: 1) (Since 2.5) 4893c0bd37dSMarkus Armbruster# 4903c0bd37dSMarkus Armbruster# Since: 2.1 4913c0bd37dSMarkus Armbruster## 4923c0bd37dSMarkus Armbruster{ 'struct': 'NetdevVhostUserOptions', 4933c0bd37dSMarkus Armbruster 'data': { 4943c0bd37dSMarkus Armbruster 'chardev': 'str', 4953c0bd37dSMarkus Armbruster '*vhostforce': 'bool', 4963c0bd37dSMarkus Armbruster '*queues': 'int' } } 4973c0bd37dSMarkus Armbruster 4983c0bd37dSMarkus Armbruster## 4991e0a84eaSCindy Lu# @NetdevVhostVDPAOptions: 5001e0a84eaSCindy Lu# 5011e0a84eaSCindy Lu# Vhost-vdpa network backend 5021e0a84eaSCindy Lu# 503a937b6aaSMarkus Armbruster# vDPA device is a device that uses a datapath which complies with the 504a937b6aaSMarkus Armbruster# virtio specifications with a vendor specific control path. 5051e0a84eaSCindy Lu# 506a937b6aaSMarkus Armbruster# @vhostdev: path of vhost-vdpa device (default:'/dev/vhost-vdpa-0') 5071e0a84eaSCindy Lu# 5088801ccd0SSi-Wei Liu# @vhostfd: file descriptor of an already opened vhost vdpa device 5098801ccd0SSi-Wei Liu# 5101e0a84eaSCindy Lu# @queues: number of queues to be created for multiqueue vhost-vdpa 5111e0a84eaSCindy Lu# (default: 1) 5121e0a84eaSCindy Lu# 513a937b6aaSMarkus Armbruster# @x-svq: Start device with (experimental) shadow virtqueue. (Since 514a937b6aaSMarkus Armbruster# 7.1) (default: false) 5151576dbb5SEugenio Pérez# 5161576dbb5SEugenio Pérez# Features: 517a937b6aaSMarkus Armbruster# 5181576dbb5SEugenio Pérez# @unstable: Member @x-svq is experimental. 5191576dbb5SEugenio Pérez# 5201e0a84eaSCindy Lu# Since: 5.1 5211e0a84eaSCindy Lu## 5221e0a84eaSCindy Lu{ 'struct': 'NetdevVhostVDPAOptions', 5231e0a84eaSCindy Lu 'data': { 5241e0a84eaSCindy Lu '*vhostdev': 'str', 5258801ccd0SSi-Wei Liu '*vhostfd': 'str', 5261576dbb5SEugenio Pérez '*queues': 'int', 5271576dbb5SEugenio Pérez '*x-svq': {'type': 'bool', 'features' : [ 'unstable'] } } } 5281e0a84eaSCindy Lu 5291e0a84eaSCindy Lu## 53081ad2964SVladislav Yaroshchuk# @NetdevVmnetHostOptions: 53181ad2964SVladislav Yaroshchuk# 53281ad2964SVladislav Yaroshchuk# vmnet (host mode) network backend. 53381ad2964SVladislav Yaroshchuk# 53481ad2964SVladislav Yaroshchuk# Allows the vmnet interface to communicate with other vmnet 53581ad2964SVladislav Yaroshchuk# interfaces that are in host mode and also with the host. 53681ad2964SVladislav Yaroshchuk# 53781ad2964SVladislav Yaroshchuk# @start-address: The starting IPv4 address to use for the interface. 538a937b6aaSMarkus Armbruster# Must be in the private IP range (RFC 1918). Must be specified 539a937b6aaSMarkus Armbruster# along with @end-address and @subnet-mask. This address is used 540a937b6aaSMarkus Armbruster# as the gateway address. The subsequent address up to and 541a937b6aaSMarkus Armbruster# including end-address are placed in the DHCP pool. 54281ad2964SVladislav Yaroshchuk# 54381ad2964SVladislav Yaroshchuk# @end-address: The DHCP IPv4 range end address to use for the 544a937b6aaSMarkus Armbruster# interface. Must be in the private IP range (RFC 1918). Must be 545a937b6aaSMarkus Armbruster# specified along with @start-address and @subnet-mask. 54681ad2964SVladislav Yaroshchuk# 547a937b6aaSMarkus Armbruster# @subnet-mask: The IPv4 subnet mask to use on the interface. Must be 548a937b6aaSMarkus Armbruster# specified along with @start-address and @subnet-mask. 54981ad2964SVladislav Yaroshchuk# 55081ad2964SVladislav Yaroshchuk# @isolated: Enable isolation for this interface. Interface isolation 551a937b6aaSMarkus Armbruster# ensures that vmnet interface is not able to communicate with any 552a937b6aaSMarkus Armbruster# other vmnet interfaces. Only communication with host is 553a937b6aaSMarkus Armbruster# allowed. Requires at least macOS Big Sur 11.0. 55481ad2964SVladislav Yaroshchuk# 55581ad2964SVladislav Yaroshchuk# @net-uuid: The identifier (UUID) to uniquely identify the isolated 556a937b6aaSMarkus Armbruster# network vmnet interface should be added to. If set, no DHCP 557a937b6aaSMarkus Armbruster# service is provided for this interface and network communication 558a937b6aaSMarkus Armbruster# is allowed only with other interfaces added to this network 559a937b6aaSMarkus Armbruster# identified by the UUID. Requires at least macOS Big Sur 11.0. 56081ad2964SVladislav Yaroshchuk# 56181ad2964SVladislav Yaroshchuk# Since: 7.1 56281ad2964SVladislav Yaroshchuk## 56381ad2964SVladislav Yaroshchuk{ 'struct': 'NetdevVmnetHostOptions', 56481ad2964SVladislav Yaroshchuk 'data': { 56581ad2964SVladislav Yaroshchuk '*start-address': 'str', 56681ad2964SVladislav Yaroshchuk '*end-address': 'str', 56781ad2964SVladislav Yaroshchuk '*subnet-mask': 'str', 56881ad2964SVladislav Yaroshchuk '*isolated': 'bool', 56981ad2964SVladislav Yaroshchuk '*net-uuid': 'str' }, 57081ad2964SVladislav Yaroshchuk 'if': 'CONFIG_VMNET' } 57181ad2964SVladislav Yaroshchuk 57281ad2964SVladislav Yaroshchuk## 57381ad2964SVladislav Yaroshchuk# @NetdevVmnetSharedOptions: 57481ad2964SVladislav Yaroshchuk# 57581ad2964SVladislav Yaroshchuk# vmnet (shared mode) network backend. 57681ad2964SVladislav Yaroshchuk# 57781ad2964SVladislav Yaroshchuk# Allows traffic originating from the vmnet interface to reach the 578a937b6aaSMarkus Armbruster# Internet through a network address translator (NAT). The vmnet 579a937b6aaSMarkus Armbruster# interface can communicate with the host and with other shared mode 580a937b6aaSMarkus Armbruster# interfaces on the same subnet. If no DHCP settings, subnet mask and 581a937b6aaSMarkus Armbruster# IPv6 prefix specified, the interface can communicate with any of 582a937b6aaSMarkus Armbruster# other interfaces in shared mode. 58381ad2964SVladislav Yaroshchuk# 58481ad2964SVladislav Yaroshchuk# @start-address: The starting IPv4 address to use for the interface. 585a937b6aaSMarkus Armbruster# Must be in the private IP range (RFC 1918). Must be specified 586a937b6aaSMarkus Armbruster# along with @end-address and @subnet-mask. This address is used 587a937b6aaSMarkus Armbruster# as the gateway address. The subsequent address up to and 588a937b6aaSMarkus Armbruster# including end-address are placed in the DHCP pool. 58981ad2964SVladislav Yaroshchuk# 59081ad2964SVladislav Yaroshchuk# @end-address: The DHCP IPv4 range end address to use for the 591a937b6aaSMarkus Armbruster# interface. Must be in the private IP range (RFC 1918). Must be 592a937b6aaSMarkus Armbruster# specified along with @start-address and @subnet-mask. 59381ad2964SVladislav Yaroshchuk# 594a937b6aaSMarkus Armbruster# @subnet-mask: The IPv4 subnet mask to use on the interface. Must be 595a937b6aaSMarkus Armbruster# specified along with @start-address and @subnet-mask. 59681ad2964SVladislav Yaroshchuk# 59781ad2964SVladislav Yaroshchuk# @isolated: Enable isolation for this interface. Interface isolation 598a937b6aaSMarkus Armbruster# ensures that vmnet interface is not able to communicate with any 599a937b6aaSMarkus Armbruster# other vmnet interfaces. Only communication with host is 600a937b6aaSMarkus Armbruster# allowed. Requires at least macOS Big Sur 11.0. 60181ad2964SVladislav Yaroshchuk# 60281ad2964SVladislav Yaroshchuk# @nat66-prefix: The IPv6 prefix to use into guest network. Must be a 603a937b6aaSMarkus Armbruster# unique local address i.e. start with fd00::/8 and have length of 604a937b6aaSMarkus Armbruster# 64. 60581ad2964SVladislav Yaroshchuk# 60681ad2964SVladislav Yaroshchuk# Since: 7.1 60781ad2964SVladislav Yaroshchuk## 60881ad2964SVladislav Yaroshchuk{ 'struct': 'NetdevVmnetSharedOptions', 60981ad2964SVladislav Yaroshchuk 'data': { 61081ad2964SVladislav Yaroshchuk '*start-address': 'str', 61181ad2964SVladislav Yaroshchuk '*end-address': 'str', 61281ad2964SVladislav Yaroshchuk '*subnet-mask': 'str', 61381ad2964SVladislav Yaroshchuk '*isolated': 'bool', 61481ad2964SVladislav Yaroshchuk '*nat66-prefix': 'str' }, 61581ad2964SVladislav Yaroshchuk 'if': 'CONFIG_VMNET' } 61681ad2964SVladislav Yaroshchuk 61781ad2964SVladislav Yaroshchuk## 61881ad2964SVladislav Yaroshchuk# @NetdevVmnetBridgedOptions: 61981ad2964SVladislav Yaroshchuk# 62081ad2964SVladislav Yaroshchuk# vmnet (bridged mode) network backend. 62181ad2964SVladislav Yaroshchuk# 62281ad2964SVladislav Yaroshchuk# Bridges the vmnet interface with a physical network interface. 62381ad2964SVladislav Yaroshchuk# 62481ad2964SVladislav Yaroshchuk# @ifname: The name of the physical interface to be bridged. 62581ad2964SVladislav Yaroshchuk# 62681ad2964SVladislav Yaroshchuk# @isolated: Enable isolation for this interface. Interface isolation 627a937b6aaSMarkus Armbruster# ensures that vmnet interface is not able to communicate with any 628a937b6aaSMarkus Armbruster# other vmnet interfaces. Only communication with host is 629a937b6aaSMarkus Armbruster# allowed. Requires at least macOS Big Sur 11.0. 63081ad2964SVladislav Yaroshchuk# 63181ad2964SVladislav Yaroshchuk# Since: 7.1 63281ad2964SVladislav Yaroshchuk## 63381ad2964SVladislav Yaroshchuk{ 'struct': 'NetdevVmnetBridgedOptions', 63481ad2964SVladislav Yaroshchuk 'data': { 63581ad2964SVladislav Yaroshchuk 'ifname': 'str', 63681ad2964SVladislav Yaroshchuk '*isolated': 'bool' }, 63781ad2964SVladislav Yaroshchuk 'if': 'CONFIG_VMNET' } 63881ad2964SVladislav Yaroshchuk 63981ad2964SVladislav Yaroshchuk## 6405166fe0aSLaurent Vivier# @NetdevStreamOptions: 6415166fe0aSLaurent Vivier# 6425166fe0aSLaurent Vivier# Configuration info for stream socket netdev 6435166fe0aSLaurent Vivier# 644a937b6aaSMarkus Armbruster# @addr: socket address to listen on (server=true) or connect to 645a937b6aaSMarkus Armbruster# (server=false) 646a937b6aaSMarkus Armbruster# 6475166fe0aSLaurent Vivier# @server: create server socket (default: false) 648a937b6aaSMarkus Armbruster# 649a937b6aaSMarkus Armbruster# @reconnect: For a client socket, if a socket is disconnected, then 650a937b6aaSMarkus Armbruster# attempt a reconnect after the given number of seconds. Setting 651a937b6aaSMarkus Armbruster# this to zero disables this function. (default: 0) (since 8.0) 6525166fe0aSLaurent Vivier# 653*c40e962dSDaniil Tatianin# @reconnect-ms: For a client socket, if a socket is disconnected, then 654*c40e962dSDaniil Tatianin# attempt a reconnect after the given number of milliseconds. Setting 655*c40e962dSDaniil Tatianin# this to zero disables this function. This member is mutually 656*c40e962dSDaniil Tatianin# exclusive with @reconnect. (default: 0) (Since: 9.2) 657*c40e962dSDaniil Tatianin# 65813c6be96SLaurent Vivier# Only SocketAddress types 'unix', 'inet' and 'fd' are supported. 6595166fe0aSLaurent Vivier# 660*c40e962dSDaniil Tatianin# Features: 661*c40e962dSDaniil Tatianin# 662*c40e962dSDaniil Tatianin# @deprecated: Member @reconnect is deprecated. Use @reconnect-ms 663*c40e962dSDaniil Tatianin# instead. 664*c40e962dSDaniil Tatianin# 6655166fe0aSLaurent Vivier# Since: 7.2 6665166fe0aSLaurent Vivier## 6675166fe0aSLaurent Vivier{ 'struct': 'NetdevStreamOptions', 6685166fe0aSLaurent Vivier 'data': { 6695166fe0aSLaurent Vivier 'addr': 'SocketAddress', 670148fbf0dSLaurent Vivier '*server': 'bool', 671*c40e962dSDaniil Tatianin '*reconnect': { 'type': 'int', 'features': [ 'deprecated' ] }, 672*c40e962dSDaniil Tatianin '*reconnect-ms': 'int' } } 6735166fe0aSLaurent Vivier 6745166fe0aSLaurent Vivier## 6755166fe0aSLaurent Vivier# @NetdevDgramOptions: 6765166fe0aSLaurent Vivier# 6775166fe0aSLaurent Vivier# Configuration info for datagram socket netdev. 6785166fe0aSLaurent Vivier# 6795166fe0aSLaurent Vivier# @remote: remote address 680a937b6aaSMarkus Armbruster# 6815166fe0aSLaurent Vivier# @local: local address 6825166fe0aSLaurent Vivier# 683784e7a25SLaurent Vivier# Only SocketAddress types 'unix', 'inet' and 'fd' are supported. 6845166fe0aSLaurent Vivier# 685a937b6aaSMarkus Armbruster# If remote address is present and it's a multicast address, local 686a937b6aaSMarkus Armbruster# address is optional. Otherwise local address is required and remote 687a937b6aaSMarkus Armbruster# address is optional. 6885166fe0aSLaurent Vivier# 6895166fe0aSLaurent Vivier# .. table:: Valid parameters combination table 6905166fe0aSLaurent Vivier# :widths: auto 6915166fe0aSLaurent Vivier# 6925166fe0aSLaurent Vivier# ============= ======== ===== 6935166fe0aSLaurent Vivier# remote local okay? 6945166fe0aSLaurent Vivier# ============= ======== ===== 6955166fe0aSLaurent Vivier# absent absent no 6965166fe0aSLaurent Vivier# absent not fd no 6975166fe0aSLaurent Vivier# absent fd yes 6985166fe0aSLaurent Vivier# multicast absent yes 6995166fe0aSLaurent Vivier# multicast present yes 7005166fe0aSLaurent Vivier# not multicast absent no 7015166fe0aSLaurent Vivier# not multicast present yes 7025166fe0aSLaurent Vivier# ============= ======== ===== 7035166fe0aSLaurent Vivier# 7045166fe0aSLaurent Vivier# Since: 7.2 7055166fe0aSLaurent Vivier## 7065166fe0aSLaurent Vivier{ 'struct': 'NetdevDgramOptions', 7075166fe0aSLaurent Vivier 'data': { 7085166fe0aSLaurent Vivier '*local': 'SocketAddress', 7095166fe0aSLaurent Vivier '*remote': 'SocketAddress' } } 7105166fe0aSLaurent Vivier 7115166fe0aSLaurent Vivier## 7123c0bd37dSMarkus Armbruster# @NetClientDriver: 7133c0bd37dSMarkus Armbruster# 7143c0bd37dSMarkus Armbruster# Available netdev drivers. 7153c0bd37dSMarkus Armbruster# 71686bf13aeSMarkus Armbruster# @l2tpv3: since 2.1 71701bed0ffSMarkus Armbruster# 71886bf13aeSMarkus Armbruster# @vhost-vdpa: since 5.1 71901bed0ffSMarkus Armbruster# 72086bf13aeSMarkus Armbruster# @vmnet-host: since 7.1 72101bed0ffSMarkus Armbruster# 72286bf13aeSMarkus Armbruster# @vmnet-shared: since 7.1 72301bed0ffSMarkus Armbruster# 72486bf13aeSMarkus Armbruster# @vmnet-bridged: since 7.1 72501bed0ffSMarkus Armbruster# 72686bf13aeSMarkus Armbruster# @stream: since 7.2 72701bed0ffSMarkus Armbruster# 72886bf13aeSMarkus Armbruster# @dgram: since 7.2 72901bed0ffSMarkus Armbruster# 730cb039ef3SIlya Maximets# @af-xdp: since 8.2 7311e0a84eaSCindy Lu# 73286bf13aeSMarkus Armbruster# Since: 2.7 7333c0bd37dSMarkus Armbruster## 7343c0bd37dSMarkus Armbruster{ 'enum': 'NetClientDriver', 7355166fe0aSLaurent Vivier 'data': [ 'none', 'nic', 'user', 'tap', 'l2tpv3', 'socket', 'stream', 7365166fe0aSLaurent Vivier 'dgram', 'vde', 'bridge', 'hubport', 'netmap', 'vhost-user', 7375166fe0aSLaurent Vivier 'vhost-vdpa', 738cb039ef3SIlya Maximets { 'name': 'af-xdp', 'if': 'CONFIG_AF_XDP' }, 73981ad2964SVladislav Yaroshchuk { 'name': 'vmnet-host', 'if': 'CONFIG_VMNET' }, 74081ad2964SVladislav Yaroshchuk { 'name': 'vmnet-shared', 'if': 'CONFIG_VMNET' }, 74181ad2964SVladislav Yaroshchuk { 'name': 'vmnet-bridged', 'if': 'CONFIG_VMNET' }] } 7423c0bd37dSMarkus Armbruster 7433c0bd37dSMarkus Armbruster## 7443c0bd37dSMarkus Armbruster# @Netdev: 7453c0bd37dSMarkus Armbruster# 7463c0bd37dSMarkus Armbruster# Captures the configuration of a network device. 7473c0bd37dSMarkus Armbruster# 7483c0bd37dSMarkus Armbruster# @id: identifier for monitor commands. 7493c0bd37dSMarkus Armbruster# 7503c0bd37dSMarkus Armbruster# @type: Specify the driver used for interpreting remaining arguments. 7513c0bd37dSMarkus Armbruster# 7523c0bd37dSMarkus Armbruster# Since: 1.2 7533c0bd37dSMarkus Armbruster## 7543c0bd37dSMarkus Armbruster{ 'union': 'Netdev', 7553c0bd37dSMarkus Armbruster 'base': { 'id': 'str', 'type': 'NetClientDriver' }, 7563c0bd37dSMarkus Armbruster 'discriminator': 'type', 7573c0bd37dSMarkus Armbruster 'data': { 7583c0bd37dSMarkus Armbruster 'nic': 'NetLegacyNicOptions', 7593c0bd37dSMarkus Armbruster 'user': 'NetdevUserOptions', 7603c0bd37dSMarkus Armbruster 'tap': 'NetdevTapOptions', 7613c0bd37dSMarkus Armbruster 'l2tpv3': 'NetdevL2TPv3Options', 7623c0bd37dSMarkus Armbruster 'socket': 'NetdevSocketOptions', 7635166fe0aSLaurent Vivier 'stream': 'NetdevStreamOptions', 7645166fe0aSLaurent Vivier 'dgram': 'NetdevDgramOptions', 7653c0bd37dSMarkus Armbruster 'vde': 'NetdevVdeOptions', 7663c0bd37dSMarkus Armbruster 'bridge': 'NetdevBridgeOptions', 7673c0bd37dSMarkus Armbruster 'hubport': 'NetdevHubPortOptions', 7683c0bd37dSMarkus Armbruster 'netmap': 'NetdevNetmapOptions', 769cb039ef3SIlya Maximets 'af-xdp': { 'type': 'NetdevAFXDPOptions', 770cb039ef3SIlya Maximets 'if': 'CONFIG_AF_XDP' }, 7711e0a84eaSCindy Lu 'vhost-user': 'NetdevVhostUserOptions', 77281ad2964SVladislav Yaroshchuk 'vhost-vdpa': 'NetdevVhostVDPAOptions', 77381ad2964SVladislav Yaroshchuk 'vmnet-host': { 'type': 'NetdevVmnetHostOptions', 77481ad2964SVladislav Yaroshchuk 'if': 'CONFIG_VMNET' }, 77581ad2964SVladislav Yaroshchuk 'vmnet-shared': { 'type': 'NetdevVmnetSharedOptions', 77681ad2964SVladislav Yaroshchuk 'if': 'CONFIG_VMNET' }, 77781ad2964SVladislav Yaroshchuk 'vmnet-bridged': { 'type': 'NetdevVmnetBridgedOptions', 77881ad2964SVladislav Yaroshchuk 'if': 'CONFIG_VMNET' } } } 7793c0bd37dSMarkus Armbruster 7803c0bd37dSMarkus Armbruster## 7813c0bd37dSMarkus Armbruster# @RxState: 7823c0bd37dSMarkus Armbruster# 7833c0bd37dSMarkus Armbruster# Packets receiving state 7843c0bd37dSMarkus Armbruster# 7853c0bd37dSMarkus Armbruster# @normal: filter assigned packets according to the mac-table 7863c0bd37dSMarkus Armbruster# 7873c0bd37dSMarkus Armbruster# @none: don't receive any assigned packet 7883c0bd37dSMarkus Armbruster# 7893c0bd37dSMarkus Armbruster# @all: receive all assigned packets 7903c0bd37dSMarkus Armbruster# 7913c0bd37dSMarkus Armbruster# Since: 1.6 7923c0bd37dSMarkus Armbruster## 7933c0bd37dSMarkus Armbruster{ 'enum': 'RxState', 'data': [ 'normal', 'none', 'all' ] } 7943c0bd37dSMarkus Armbruster 7953c0bd37dSMarkus Armbruster## 7963c0bd37dSMarkus Armbruster# @RxFilterInfo: 7973c0bd37dSMarkus Armbruster# 7983c0bd37dSMarkus Armbruster# Rx-filter information for a NIC. 7993c0bd37dSMarkus Armbruster# 8003c0bd37dSMarkus Armbruster# @name: net client name 8013c0bd37dSMarkus Armbruster# 8023c0bd37dSMarkus Armbruster# @promiscuous: whether promiscuous mode is enabled 8033c0bd37dSMarkus Armbruster# 8043c0bd37dSMarkus Armbruster# @multicast: multicast receive state 8053c0bd37dSMarkus Armbruster# 8063c0bd37dSMarkus Armbruster# @unicast: unicast receive state 8073c0bd37dSMarkus Armbruster# 8083c0bd37dSMarkus Armbruster# @vlan: vlan receive state (Since 2.0) 8093c0bd37dSMarkus Armbruster# 8103c0bd37dSMarkus Armbruster# @broadcast-allowed: whether to receive broadcast 8113c0bd37dSMarkus Armbruster# 8123c0bd37dSMarkus Armbruster# @multicast-overflow: multicast table is overflowed or not 8133c0bd37dSMarkus Armbruster# 8143c0bd37dSMarkus Armbruster# @unicast-overflow: unicast table is overflowed or not 8153c0bd37dSMarkus Armbruster# 8163c0bd37dSMarkus Armbruster# @main-mac: the main macaddr string 8173c0bd37dSMarkus Armbruster# 8183c0bd37dSMarkus Armbruster# @vlan-table: a list of active vlan id 8193c0bd37dSMarkus Armbruster# 8203c0bd37dSMarkus Armbruster# @unicast-table: a list of unicast macaddr string 8213c0bd37dSMarkus Armbruster# 8223c0bd37dSMarkus Armbruster# @multicast-table: a list of multicast macaddr string 8233c0bd37dSMarkus Armbruster# 8243c0bd37dSMarkus Armbruster# Since: 1.6 8253c0bd37dSMarkus Armbruster## 8263c0bd37dSMarkus Armbruster{ 'struct': 'RxFilterInfo', 8273c0bd37dSMarkus Armbruster 'data': { 8283c0bd37dSMarkus Armbruster 'name': 'str', 8293c0bd37dSMarkus Armbruster 'promiscuous': 'bool', 8303c0bd37dSMarkus Armbruster 'multicast': 'RxState', 8313c0bd37dSMarkus Armbruster 'unicast': 'RxState', 8323c0bd37dSMarkus Armbruster 'vlan': 'RxState', 8333c0bd37dSMarkus Armbruster 'broadcast-allowed': 'bool', 8343c0bd37dSMarkus Armbruster 'multicast-overflow': 'bool', 8353c0bd37dSMarkus Armbruster 'unicast-overflow': 'bool', 8363c0bd37dSMarkus Armbruster 'main-mac': 'str', 8373c0bd37dSMarkus Armbruster 'vlan-table': ['int'], 8383c0bd37dSMarkus Armbruster 'unicast-table': ['str'], 8393c0bd37dSMarkus Armbruster 'multicast-table': ['str'] }} 8403c0bd37dSMarkus Armbruster 8413c0bd37dSMarkus Armbruster## 8423c0bd37dSMarkus Armbruster# @query-rx-filter: 8433c0bd37dSMarkus Armbruster# 8443c0bd37dSMarkus Armbruster# Return rx-filter information for all NICs (or for the given NIC). 8453c0bd37dSMarkus Armbruster# 8463c0bd37dSMarkus Armbruster# @name: net client name 8473c0bd37dSMarkus Armbruster# 8483c0bd37dSMarkus Armbruster# Returns: list of @RxFilterInfo for all NICs (or for the given NIC). 8492746f060SMarkus Armbruster# 8502746f060SMarkus Armbruster# Errors: 8512746f060SMarkus Armbruster# - if the given @name doesn't exist 8522746f060SMarkus Armbruster# - if the given NIC doesn't support rx-filter querying 8532746f060SMarkus Armbruster# - if the given net client isn't a NIC 8543c0bd37dSMarkus Armbruster# 8553c0bd37dSMarkus Armbruster# Since: 1.6 8563c0bd37dSMarkus Armbruster# 85714b48aaaSJohn Snow# .. qmp-example:: 8583c0bd37dSMarkus Armbruster# 8593c0bd37dSMarkus Armbruster# -> { "execute": "query-rx-filter", "arguments": { "name": "vnet0" } } 8603c0bd37dSMarkus Armbruster# <- { "return": [ 8613c0bd37dSMarkus Armbruster# { 8623c0bd37dSMarkus Armbruster# "promiscuous": true, 8633c0bd37dSMarkus Armbruster# "name": "vnet0", 8643c0bd37dSMarkus Armbruster# "main-mac": "52:54:00:12:34:56", 8653c0bd37dSMarkus Armbruster# "unicast": "normal", 8663c0bd37dSMarkus Armbruster# "vlan": "normal", 8673c0bd37dSMarkus Armbruster# "vlan-table": [ 8683c0bd37dSMarkus Armbruster# 4, 8693c0bd37dSMarkus Armbruster# 0 8703c0bd37dSMarkus Armbruster# ], 8713c0bd37dSMarkus Armbruster# "unicast-table": [ 8723c0bd37dSMarkus Armbruster# ], 8733c0bd37dSMarkus Armbruster# "multicast": "normal", 8743c0bd37dSMarkus Armbruster# "multicast-overflow": false, 8753c0bd37dSMarkus Armbruster# "unicast-overflow": false, 8763c0bd37dSMarkus Armbruster# "multicast-table": [ 8773c0bd37dSMarkus Armbruster# "01:00:5e:00:00:01", 8783c0bd37dSMarkus Armbruster# "33:33:00:00:00:01", 8793c0bd37dSMarkus Armbruster# "33:33:ff:12:34:56" 8803c0bd37dSMarkus Armbruster# ], 8813c0bd37dSMarkus Armbruster# "broadcast-allowed": false 8823c0bd37dSMarkus Armbruster# } 8833c0bd37dSMarkus Armbruster# ] 8843c0bd37dSMarkus Armbruster# } 8853c0bd37dSMarkus Armbruster## 886b0ddeba2SMarc-André Lureau{ 'command': 'query-rx-filter', 887b0ddeba2SMarc-André Lureau 'data': { '*name': 'str' }, 8883c0bd37dSMarkus Armbruster 'returns': ['RxFilterInfo'] } 8893c0bd37dSMarkus Armbruster 8903c0bd37dSMarkus Armbruster## 8913c0bd37dSMarkus Armbruster# @NIC_RX_FILTER_CHANGED: 8923c0bd37dSMarkus Armbruster# 893a937b6aaSMarkus Armbruster# Emitted once until the 'query-rx-filter' command is executed, the 894a937b6aaSMarkus Armbruster# first event will always be emitted 8953c0bd37dSMarkus Armbruster# 8963c0bd37dSMarkus Armbruster# @name: net client name 8973c0bd37dSMarkus Armbruster# 8983c0bd37dSMarkus Armbruster# @path: device path 8993c0bd37dSMarkus Armbruster# 9003c0bd37dSMarkus Armbruster# Since: 1.6 9013c0bd37dSMarkus Armbruster# 90214b48aaaSJohn Snow# .. qmp-example:: 9033c0bd37dSMarkus Armbruster# 9043c0bd37dSMarkus Armbruster# <- { "event": "NIC_RX_FILTER_CHANGED", 9053c0bd37dSMarkus Armbruster# "data": { "name": "vnet0", 9063c0bd37dSMarkus Armbruster# "path": "/machine/peripheral/vnet0/virtio-backend" }, 9073c0bd37dSMarkus Armbruster# "timestamp": { "seconds": 1368697518, "microseconds": 326866 } } 9083c0bd37dSMarkus Armbruster## 9093c0bd37dSMarkus Armbruster{ 'event': 'NIC_RX_FILTER_CHANGED', 9103c0bd37dSMarkus Armbruster 'data': { '*name': 'str', 'path': 'str' } } 91150510ea2SDr. David Alan Gilbert 91250510ea2SDr. David Alan Gilbert## 91350510ea2SDr. David Alan Gilbert# @AnnounceParameters: 91450510ea2SDr. David Alan Gilbert# 91550510ea2SDr. David Alan Gilbert# Parameters for self-announce timers 91650510ea2SDr. David Alan Gilbert# 91750510ea2SDr. David Alan Gilbert# @initial: Initial delay (in ms) before sending the first GARP/RARP 91850510ea2SDr. David Alan Gilbert# announcement 91950510ea2SDr. David Alan Gilbert# 92050510ea2SDr. David Alan Gilbert# @max: Maximum delay (in ms) between GARP/RARP announcement packets 92150510ea2SDr. David Alan Gilbert# 92250510ea2SDr. David Alan Gilbert# @rounds: Number of self-announcement attempts 92350510ea2SDr. David Alan Gilbert# 92450510ea2SDr. David Alan Gilbert# @step: Delay increase (in ms) after each self-announcement attempt 92550510ea2SDr. David Alan Gilbert# 926a937b6aaSMarkus Armbruster# @interfaces: An optional list of interface names, which restricts 927a937b6aaSMarkus Armbruster# the announcement to the listed interfaces. (Since 4.1) 928ef2fdbfbSDr. David Alan Gilbert# 929944458b6SDr. David Alan Gilbert# @id: A name to be used to identify an instance of announce-timers 930a937b6aaSMarkus Armbruster# and to allow it to modified later. Not for use as part of the 931a937b6aaSMarkus Armbruster# migration parameters. (Since 4.1) 932944458b6SDr. David Alan Gilbert# 93350510ea2SDr. David Alan Gilbert# Since: 4.0 93450510ea2SDr. David Alan Gilbert## 93550510ea2SDr. David Alan Gilbert 93650510ea2SDr. David Alan Gilbert{ 'struct': 'AnnounceParameters', 93750510ea2SDr. David Alan Gilbert 'data': { 'initial': 'int', 93850510ea2SDr. David Alan Gilbert 'max': 'int', 93950510ea2SDr. David Alan Gilbert 'rounds': 'int', 940ef2fdbfbSDr. David Alan Gilbert 'step': 'int', 941944458b6SDr. David Alan Gilbert '*interfaces': ['str'], 942944458b6SDr. David Alan Gilbert '*id' : 'str' } } 943a06cd488SDr. David Alan Gilbert 944a06cd488SDr. David Alan Gilbert## 945a06cd488SDr. David Alan Gilbert# @announce-self: 946a06cd488SDr. David Alan Gilbert# 947a937b6aaSMarkus Armbruster# Trigger generation of broadcast RARP frames to update network 948a937b6aaSMarkus Armbruster# switches. This can be useful when network bonds fail-over the 949a937b6aaSMarkus Armbruster# active slave. 950a06cd488SDr. David Alan Gilbert# 95114b48aaaSJohn Snow# TODO: This line is a hack to separate the example from the body 95214b48aaaSJohn Snow# 95314b48aaaSJohn Snow# .. qmp-example:: 954a06cd488SDr. David Alan Gilbert# 955ef2fdbfbSDr. David Alan Gilbert# -> { "execute": "announce-self", 956a06cd488SDr. David Alan Gilbert# "arguments": { 957ef2fdbfbSDr. David Alan Gilbert# "initial": 50, "max": 550, "rounds": 10, "step": 50, 958944458b6SDr. David Alan Gilbert# "interfaces": ["vn2", "vn3"], "id": "bob" } } 959a06cd488SDr. David Alan Gilbert# <- { "return": {} } 960a06cd488SDr. David Alan Gilbert# 961a06cd488SDr. David Alan Gilbert# Since: 4.0 962a06cd488SDr. David Alan Gilbert## 963a06cd488SDr. David Alan Gilbert{ 'command': 'announce-self', 'boxed': true, 964a06cd488SDr. David Alan Gilbert 'data' : 'AnnounceParameters'} 96570d04971SJens Freimann 96670d04971SJens Freimann## 96770d04971SJens Freimann# @FAILOVER_NEGOTIATED: 96870d04971SJens Freimann# 969a937b6aaSMarkus Armbruster# Emitted when VIRTIO_NET_F_STANDBY was enabled during feature 970a937b6aaSMarkus Armbruster# negotiation. Failover primary devices which were hidden (not 971a937b6aaSMarkus Armbruster# hotplugged when requested) before will now be hotplugged by the 972a937b6aaSMarkus Armbruster# virtio-net standby device. 97370d04971SJens Freimann# 974121c25b0SVictor Toso# @device-id: QEMU device id of the unplugged device 975121c25b0SVictor Toso# 97670d04971SJens Freimann# Since: 4.2 97770d04971SJens Freimann# 97814b48aaaSJohn Snow# .. qmp-example:: 97970d04971SJens Freimann# 98070d04971SJens Freimann# <- { "event": "FAILOVER_NEGOTIATED", 981121c25b0SVictor Toso# "data": { "device-id": "net1" }, 982121c25b0SVictor Toso# "timestamp": { "seconds": 1368697518, "microseconds": 326866 } } 98370d04971SJens Freimann## 98470d04971SJens Freimann{ 'event': 'FAILOVER_NEGOTIATED', 98570d04971SJens Freimann 'data': {'device-id': 'str'} } 986e506fee8SLaurent Vivier 987e506fee8SLaurent Vivier## 988e506fee8SLaurent Vivier# @NETDEV_STREAM_CONNECTED: 989e506fee8SLaurent Vivier# 990e506fee8SLaurent Vivier# Emitted when the netdev stream backend is connected 991e506fee8SLaurent Vivier# 992e506fee8SLaurent Vivier# @netdev-id: QEMU netdev id that is connected 993a937b6aaSMarkus Armbruster# 994e506fee8SLaurent Vivier# @addr: The destination address 995e506fee8SLaurent Vivier# 996e506fee8SLaurent Vivier# Since: 7.2 997e506fee8SLaurent Vivier# 99814b48aaaSJohn Snow# .. qmp-example:: 999e506fee8SLaurent Vivier# 1000e506fee8SLaurent Vivier# <- { "event": "NETDEV_STREAM_CONNECTED", 1001e506fee8SLaurent Vivier# "data": { "netdev-id": "netdev0", 1002e506fee8SLaurent Vivier# "addr": { "port": "47666", "ipv6": true, 1003e506fee8SLaurent Vivier# "host": "::1", "type": "inet" } }, 1004e506fee8SLaurent Vivier# "timestamp": { "seconds": 1666269863, "microseconds": 311222 } } 1005e506fee8SLaurent Vivier# 100614b48aaaSJohn Snow# .. qmp-example:: 100714b48aaaSJohn Snow# 1008e506fee8SLaurent Vivier# <- { "event": "NETDEV_STREAM_CONNECTED", 1009e506fee8SLaurent Vivier# "data": { "netdev-id": "netdev0", 1010e506fee8SLaurent Vivier# "addr": { "path": "/tmp/qemu0", "type": "unix" } }, 1011e506fee8SLaurent Vivier# "timestamp": { "seconds": 1666269706, "microseconds": 413651 } } 1012e506fee8SLaurent Vivier## 1013e506fee8SLaurent Vivier{ 'event': 'NETDEV_STREAM_CONNECTED', 1014e506fee8SLaurent Vivier 'data': { 'netdev-id': 'str', 1015e506fee8SLaurent Vivier 'addr': 'SocketAddress' } } 1016e506fee8SLaurent Vivier 1017e506fee8SLaurent Vivier## 1018e506fee8SLaurent Vivier# @NETDEV_STREAM_DISCONNECTED: 1019e506fee8SLaurent Vivier# 1020e506fee8SLaurent Vivier# Emitted when the netdev stream backend is disconnected 1021e506fee8SLaurent Vivier# 1022e506fee8SLaurent Vivier# @netdev-id: QEMU netdev id that is disconnected 1023e506fee8SLaurent Vivier# 1024e506fee8SLaurent Vivier# Since: 7.2 1025e506fee8SLaurent Vivier# 102614b48aaaSJohn Snow# .. qmp-example:: 1027e506fee8SLaurent Vivier# 10289f2b8488SJohn Snow# <- { "event": "NETDEV_STREAM_DISCONNECTED", 10299f2b8488SJohn Snow# "data": {"netdev-id": "netdev0"}, 10309f2b8488SJohn Snow# "timestamp": {"seconds": 1663330937, "microseconds": 526695} } 1031e506fee8SLaurent Vivier## 1032e506fee8SLaurent Vivier{ 'event': 'NETDEV_STREAM_DISCONNECTED', 1033e506fee8SLaurent Vivier 'data': { 'netdev-id': 'str' } } 1034