Skip to main content

Request

Struct Request 

Source
pub struct Request<'buf> { /* private fields */ }
Available on crate feature wireguard only.

Implementations§

Source§

impl Request<'static>

Source

pub fn new() -> Self

Source

pub fn new_from_buf(buf: Vec<u8>) -> Self

Source

pub fn into_buf(self) -> Vec<u8>

Source§

impl<'buf> Request<'buf>

Source

pub fn new_with_buf(buf: &'buf mut Vec<u8>) -> Self

Source

pub fn new_extend(buf: &'buf mut Vec<u8>) -> Self

Source

pub fn buf(&self) -> &Vec<u8>

Source

pub fn buf_mut(&mut self) -> &mut Vec<u8>

Source

pub fn set_create(self) -> Self

Set NLM_F_CREATE flag

Source

pub fn set_excl(self) -> Self

Set NLM_F_EXCL flag

Source

pub fn set_replace(self) -> Self

Set NLM_F_REPLACE flag

Source

pub fn set_change(self) -> Self

Set NLM_F_CREATE and NLM_F_REPLACE flag

Source

pub fn set_append(self) -> Self

Set NLM_F_APPEND flag

Source

pub fn set_flags(self, flags: u16) -> Self

Set self.flags |= flags

Source

pub fn unset_flags(self, flags: u16) -> Self

Set self.flags ^= self.flags & flags

Source

pub fn op_get_device_dump(self) -> OpGetDeviceDump<'buf>

§Retrieve WireGuard device

The command should be called with one but not both of:

  • WGDEVICE_A_IFINDEX
  • WGDEVICE_A_IFNAME

The kernel will then return several messages (NLM_F_MULTI). It is possible that all of the allowed IPs of a single peer will not fit within a single netlink message. In that case, the same peer will be written in the following message, except it will only contain WGPEER_A_PUBLIC_KEY and WGPEER_A_ALLOWEDIPS. This may occur several times in a row for the same peer. It is then up to the receiver to coalesce adjacent peers. Likewise, it is possible that all peers will not fit within a single message. So, subsequent peers will be sent in following messages, except those will only contain WGDEVICE_A_IFNAME and WGDEVICE_A_PEERS. It is then up to the receiver to coalesce these messages to form the complete list of peers.

Since this is an NLA_F_DUMP command, the final message will always be NLMSG_DONE, even if an error occurs. However, this NLMSG_DONE message contains an integer error code. It is either zero or a negative error code corresponding to the errno.

Flags: uns-admin-perm

Request attributes:

Reply attributes:

Source

pub fn op_set_device_do(self) -> OpSetDeviceDo<'buf>

§Set WireGuard device

This command should be called with a wgdevice set, containing one but not both of WGDEVICE_A_IFINDEX and WGDEVICE_A_IFNAME.

It is possible that the amount of configuration data exceeds that of the maximum message length accepted by the kernel. In that case, several messages should be sent one after another, with each successive one filling in information not contained in the prior. Note that if WGDEVICE_F_REPLACE_PEERS is specified in the first message, it probably should not be specified in fragments that come after, so that the list of peers is only cleared the first time but appended after. Likewise for peers, if WGPEER_F_REPLACE_ALLOWEDIPS is specified in the first message of a peer, it likely should not be specified in subsequent fragments.

If an error occurs, NLMSG_ERROR will reply containing an errno.

Flags: uns-admin-perm

Request attributes:

Trait Implementations§

Source§

impl<'buf> Debug for Request<'buf>

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'buf> !UnwindSafe for Request<'buf>

§

impl<'buf> Freeze for Request<'buf>

§

impl<'buf> RefUnwindSafe for Request<'buf>

§

impl<'buf> Send for Request<'buf>

§

impl<'buf> Sync for Request<'buf>

§

impl<'buf> Unpin for Request<'buf>

§

impl<'buf> UnsafeUnpin for Request<'buf>

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
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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.

Source§

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

Source§

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>,

Source§

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.