Struct PeerConfigBuilder

Source
pub struct PeerConfigBuilder { /* private fields */ }
Expand description

Builds and represents a single peer in a WireGuard interface configuration.

Note that if a peer with that public key already exists on the interface, the settings specified here will be applied on top of the existing settings, similarly to interface-wide settings.

If this is not what you want, use DeviceConfigBuilder::replace_peers to replace all peer settings on the interface, or use DeviceConfigBuilder::remove_peer_by_key first to remove the peer from the interface, and then apply a second configuration to re-add it.

§Example

let peer_keypair = KeyPair::generate();

// create a new peer and allow it to connect from 192.168.1.2
let peer = PeerConfigBuilder::new(&peer_keypair.public)
    .replace_allowed_ips()
    .add_allowed_ip("192.168.1.2".parse()?, 32);

// update our existing configuration with the new peer
DeviceUpdate::new().add_peer(peer).apply(&"wg-example".parse().unwrap(), Backend::Userspace);

println!("Send these keys to your peer: {:#?}", peer_keypair);

Implementations§

Source§

impl PeerConfigBuilder

Source

pub fn new(public_key: &Key) -> Self

Creates a new PeerConfigBuilder that does nothing when applied.

Source

pub fn into_peer_config(self) -> PeerConfig

Source

pub fn public_key(&self) -> &Key

The public key used in this builder.

Source

pub fn from_peer_config(config: PeerConfig) -> Self

Creates a PeerConfigBuilder from a PeerConfig.

This is mostly a convenience method for cases when you want to copy some or most of the existing peer configuration to a new configuration.

This returns a PeerConfigBuilder, so you can still call any methods you need to override the imported settings.

Source

pub fn set_preshared_key(self, key: Key) -> Self

Specifies a preshared key to be set for this peer.

Source

pub fn unset_preshared_key(self) -> Self

Specifies that this peer’s preshared key should be unset.

Source

pub fn set_endpoint(self, address: SocketAddr) -> Self

Specifies an exact endpoint that this peer should be allowed to connect from.

Source

pub fn set_persistent_keepalive_interval(self, interval: u16) -> Self

Specifies the interval between keepalive packets to be sent to this peer.

Source

pub fn unset_persistent_keepalive(self) -> Self

Specifies that this peer does not require keepalive packets.

Source

pub fn add_allowed_ip(self, address: IpAddr, cidr: u8) -> Self

Specifies an IP address this peer will be allowed to connect from/to.

See AllowedIp for details. This method can be called more than once, and all IP addresses will be added to the configuration.

Source

pub fn add_allowed_ips(self, ips: &[AllowedIp]) -> Self

Specifies multiple IP addresses this peer will be allowed to connect from/to.

See AllowedIp for details. This method can be called more than once, and all IP addresses will be added to the configuration.

Source

pub fn allow_all_ips(self) -> Self

Specifies this peer should be allowed to connect to all IP addresses.

This is a convenience method for cases when you want to connect to a server that all traffic should be routed through.

Source

pub fn replace_allowed_ips(self) -> Self

Specifies that the allowed IP addresses in this configuration should replace the existing configuration of the interface, not be appended to it.

Source

pub fn remove(self) -> Self

Mark peer for removal from interface.

Trait Implementations§

Source§

impl Clone for PeerConfigBuilder

Source§

fn clone(&self) -> PeerConfigBuilder

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for PeerConfigBuilder

Source§

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

Formats the value using the given formatter. Read more
Source§

impl PartialEq for PeerConfigBuilder

Source§

fn eq(&self, other: &PeerConfigBuilder) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for PeerConfigBuilder

Source§

impl StructuralPartialEq for PeerConfigBuilder

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

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.