pub enum DevicePairRequest {
    AddPort {
        config: DevicePairPortConfig,
        responder: DevicePairAddPortResponder,
    },
    RemovePort {
        id: u8,
        responder: DevicePairRemovePortResponder,
    },
    GetLeft {
        device: ServerEnd<DeviceMarker>,
        control_handle: DevicePairControlHandle,
    },
    GetRight {
        device: ServerEnd<DeviceMarker>,
        control_handle: DevicePairControlHandle,
    },
    GetLeftPort {
        id: u8,
        port: ServerEnd<PortMarker>,
        control_handle: DevicePairControlHandle,
    },
    GetRightPort {
        id: u8,
        port: ServerEnd<PortMarker>,
        control_handle: DevicePairControlHandle,
    },
}
Expand description

Provides control over a pair of network devices.

A DevicePair is a simpler version of Device that “shorts” two network device interfaces, named its “left” and “right” ends. The internal state of a DevicePair is not accessible, like it is for Device and it provides a more streamlined (and considerably faster) pair of [fuchsia.hardware.network/Device]s. The transmit side of each port of the left end is connected to the receive side of the port with the same identifier on the right end, and vice-versa. A DevicePair’s port online signal is handled internally (online if any of the ends has an active data session). If MAC addresses are provided on creation, the only supported MAC filtering mode is PROMISCUOUS.

This protocol encodes the underlying object’s lifetime in both directions; the underlying object is alive iff both ends of the protocol are open. That is:

  • Closing the client end causes the object to be destroyed.
  • Observing a closure of the server end indicates the object no longer exists.

Variants§

§

AddPort

Adds a logical port to this device pair.

  • request config port configuration.
  • error ZX_ERR_INVALID_ARGS if config is invalid.
  • error ZX_ERR_ALREADY_EXISTS if the provided port identifier is already in use.
§

RemovePort

Removes a logical port created by [fuchsia.net.tun/DevicePair.AddPort].

  • request id identifier of the port to remove.
  • error ZX_ERR_NOT_FOUND if id does not map to an existing port.
§

GetLeft

Connects to the underlying left device endpoint.

  • request device handle serve the left device endpoint on.

Fields

§device: ServerEnd<DeviceMarker>
§

GetRight

Connects to the underlying right device endpoint.

  • request device handle serve the right device endpoint on.

Fields

§device: ServerEnd<DeviceMarker>
§

GetLeftPort

Connects to an underlying left port.

  • request id requested port identifier.
  • request port grants access to the requested port on the left device.

Fields

§id: u8
§port: ServerEnd<PortMarker>
§

GetRightPort

Connects to an underlying right port.

  • request id requested port identifier.
  • request port grants access to the requested port on the right device.

Fields

§id: u8
§port: ServerEnd<PortMarker>

Implementations§

Trait Implementations§

source§

impl Debug for DevicePairRequest

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Encode<Ambiguous1> for T

§

unsafe fn encode( self, _encoder: &mut Encoder<'_>, _offset: usize, _depth: Depth ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
§

impl<T> Encode<Ambiguous2> for T

§

unsafe fn encode( self, _encoder: &mut Encoder<'_>, _offset: usize, _depth: Depth ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more