# -*- Mode: Python -*-
# vim: filetype=python
#
# This work is licensed under the terms of the GNU GPL, version 2 or later.
# See the COPYING file in the top-level directory.

##
# = eBPF Objects
#
# eBPF object is an ELF binary that contains the eBPF program and eBPF
# map description(BTF). Overall, eBPF object should contain the
# program and enough metadata to create/load eBPF with libbpf.  As the
# eBPF maps/program should correspond to QEMU, the eBPF can't be used
# from different QEMU build.
#
# Currently, there is a possible eBPF for receive-side scaling (RSS).
##

##
# @EbpfObject:
#
# An eBPF ELF object.
#
# @object: the eBPF object encoded in base64
#
# Since: 9.0
##
{ 'struct': 'EbpfObject',
  'data': {'object': 'str'},
  'if': 'CONFIG_EBPF' }

##
# @EbpfProgramID:
#
# The eBPF programs that can be gotten with request-ebpf.
#
# @rss: Receive side scaling, technology that allows steering traffic
#     between queues by calculation hash.  Users may set up
#     indirection table and hash/packet types configurations.  Used
#     with virtio-net.
#
# Since: 9.0
##
{ 'enum': 'EbpfProgramID',
  'if': 'CONFIG_EBPF',
  'data': [ { 'name': 'rss' } ] }

##
# @request-ebpf:
#
# Retrieve an eBPF object that can be loaded with libbpf.  Management
# applications (e.g. libvirt) may load it and pass file descriptors to
# QEMU, so they can run running QEMU without BPF capabilities.
#
# @id: The ID of the program to return.
#
# Returns: eBPF object encoded in base64.
#
# Since: 9.0
##
{ 'command': 'request-ebpf',
  'data': { 'id': 'EbpfProgramID' },
  'returns': 'EbpfObject',
  'if': 'CONFIG_EBPF' }
