From 195fb403784fc3a80297edf87d28579044fe3c07 Mon Sep 17 00:00:00 2001 From: Mikael Magnusson Date: Sat, 2 Mar 2019 23:11:47 +0100 Subject: wireguard: Add remote endpoint --- proto/wireguard/wireguard.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'proto/wireguard') diff --git a/proto/wireguard/wireguard.c b/proto/wireguard/wireguard.c index a2769138..e6427f4b 100644 --- a/proto/wireguard/wireguard.c +++ b/proto/wireguard/wireguard.c @@ -269,7 +269,21 @@ wg_rt_notify(struct proto *P, struct channel *ch UNUSED, struct network *n, ip6_addr addr = ip6_hton(net6_prefix(n->n.addr)); memcpy(allowedip->ip6.s6_addr, &addr, 16); } - + + if (udp_dest_port != 0 && ipa_nonzero(remote_ep_addr) ) { + if (ipa_is_ip4(remote_ep_addr)) { + log(L_TRACE "WG: found ip4 ep"); + peer->endpoint.addr4.sin_family = AF_INET; + put_ip4(&peer->endpoint.addr4.sin_addr.s_addr, ipa_to_ip4(remote_ep_addr)); + put_u16(&peer->endpoint.addr4.sin_port, udp_dest_port); + } else { + log(L_TRACE "WG: found ip6 ep"); + peer->endpoint.addr6.sin6_family = AF_INET6; + put_ip6(&peer->endpoint.addr6.sin6_addr, ipa_to_ip6(remote_ep_addr)); + put_u16(&peer->endpoint.addr6.sin6_port, udp_dest_port); + } + } + allowedip->cidr = net_pxlen(n->n.addr); peer->last_allowedip->next_allowedip = allowedip; peer->last_allowedip = allowedip; -- cgit v1.2.3