"LOCAL_SUBNETS" => &decode_subnets($peers{$key}[10]),
"PSK" => $peers{$key}[11],
"KEEPALIVE" => $peers{$key}[12],
+ "INTERFACE" => ($type eq "host") ? "wg0" : "wg${key}",
);
return \%peer;
push(@ret, [$host_address, ""]);
}
+ # WireGuard Peers
+ } elsif ($key eq 'wg_peer_src' || $key eq 'wg_peer_tgt') {
+ my $peer = &Wireguard::get_peer_by_name($value);
+ if (defined $peer) {
+ my $remotes;
+
+ # Select the remote IP addresses
+ if ($peer->{'TYPE'} eq 'host') {
+ $remotes = $peer->{'CLIENT_ADDRESS'};
+ } elsif ($peer->{'TYPE'} eq 'net') {
+ $remotes = $peer->{'REMOTE_SUBNETS'};
+ }
+
+ # Add all remotes
+ foreach my $remote (@$remotes) {
+ push(@ret, [$remote, $peer->{'INTERFACE'}]);
+ }
+ }
+
# OpenVPN networks.
} elsif ($key ~~ ["ovpn_net_src", "ovpn_net_tgt", "OpenVPN static network"]) {
my $network_address = &get_ovpn_net_ip($value, 1);