L4Re Operating System Framework
Interface and Usage Documentation
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Virtio_net_transfer Class Reference

A network request to only a single destination. More...

#include <transfer.h>

+ Collaboration diagram for Virtio_net_transfer:

Static Public Member Functions

static Result transfer (Virtio_net_request const &request, Virtio_net *dst_dev, L4virtio::Svr::Virtqueue *dst_queue, Virtio_vlan_mangle &mangle)
 Deliver the request to the destination port.
 

Detailed Description

A network request to only a single destination.

A Virtio_net_request can have multiple destinations (being a broadcast request, for example). That is why it is processed by multiple Virtio_net_transfers, each representing the delivery to a single destination port.

Virtio_port::handle_request uses the transfer function to move one packet to the destination of the request.

Definition at line 34 of file transfer.h.

Member Function Documentation

◆ transfer()

static Result Virtio_net_transfer::transfer ( Virtio_net_request const &  request,
Virtio_net dst_dev,
L4virtio::Svr::Virtqueue dst_queue,
Virtio_vlan_mangle mangle 
)
inlinestatic

Deliver the request to the destination port.

Parameters
requestThe associated network request
dst_devThe destination port
dst_queueThe Receive queue of the destination port
mangleThe VLAN packet rewriting handler for the transfer
Exceptions
L4virtio::Svr::Bad_descriptorException raised in SRC port queue.

Definition at line 53 of file transfer.h.

References Virtio_vlan_mangle::copy_pkt(), L4virtio::Svr::Device_t< DATA >::device_error(), L4virtio::Svr::Data_buffer::done(), L4virtio::Svr::Virtqueue::finish(), L4_EINVAL, L4_UNLIKELY, L4virtio::Svr::Data_buffer::left, L4virtio::Svr::Device_t< DATA >::mem_info(), L4virtio::Svr::Bad_descriptor::message(), L4virtio::Svr::Request_processor::next(), L4virtio::Svr::Virtqueue::next_avail(), L4virtio::Svr::Data_buffer::pos, L4virtio::Virtqueue::ready(), L4virtio::Svr::Virtqueue::rewind_avail(), Virtio_vlan_mangle::rewrite_hdr(), L4virtio::Svr::Data_buffer::skip(), and L4virtio::Svr::Request_processor::start().

Referenced by Virtio_port::handle_request().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

The documentation for this class was generated from the following file: