NAME
Linux::Wireguard - Wireguard in Perl
SYNOPSIS
my @names = Linux::Wireguard::list_device_names();
my %device = map { $_ => Linux::Wireguard::get_device($_) } @names;
DESCRIPTION
Linux::Wireguard provides an interface to Wireguard via the embedded wireguard C library.
FUNCTIONS
@names = list_device_names()
Returns a list of strings.
$dev_hr = get_device( $NAME )
Returns a reference to a hash that describes the $NAME’d device:
nameifindexpublic_keyandprivate_key(raw strings, or undef)fwmark(can be undef)listen_port(can be undef)peers- reference to an array of hash references. Each hash is:public_keyandpreshared_key(raw strings, or undef)endpoint- Raw sockaddr data (a string). To parse it, use Socket’ssockaddr_family(),unpack_sockaddr_in(), andunpack_sockaddr_in6().rx_bytesandtx_bytespersistent_keepalive_interval(can be undef)last_handshake_time_secandlast_handshake_time_nsecallowed_ips- reference to an array of hash references. Each hash is:family- Socket::AF_INET or Socket::AF_INET6addr- A packed IPv4 or IPv6 address. Unpack with Socket’sinet_ntoa()orinet_ntop().cidr
$bin = generate_private_key()
Returns a newly-generated private key (raw string).
$bin = generate_public_key( $PRIVATE_KEY )
Takes a private key and returns its public key. (Both raw strings.)
$bin = generate_preshared_key()
Returns a newly-generated preshared key (raw string).
TODO
The interface is incomplete. It would be nice for it to be complete.
LICENSE & COPYRIGHT
Copyright 2022 Gasper Software Consulting. All rights reserved.
Linux::Wireguard is licensed under the same terms as Perl itself (cf. perlartistic); HOWEVER, the embedded C wireguard library has its own copyright terms. Use of Linux::Wireguard may imply acceptance of that embedded C library’s own copyright terms. See wireguard-tools/contrib/embeddable-wg-library/README in this distribution for details.