# -*- 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' }
