aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/socket.c
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2017-10-06 17:01:15 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2017-10-06 18:01:54 +0200
commit5101cb7615c68f7756d14fc70aca807a251f5048 (patch)
tree3b7316c95bcda002e1d3157782f9b0fbbdac3aee /src/socket.c
parentsocket: don't bother recomparing afterwards (diff)
downloadwireguard-monolithic-historical-5101cb7615c68f7756d14fc70aca807a251f5048.tar.xz
wireguard-monolithic-historical-5101cb7615c68f7756d14fc70aca807a251f5048.zip
socket: gcc inlining makes this faster
Diffstat (limited to 'src/socket.c')
-rw-r--r--src/socket.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/socket.c b/src/socket.c
index ff9f449..6139ef5 100644
--- a/src/socket.c
+++ b/src/socket.c
@@ -217,7 +217,6 @@ int socket_endpoint_from_skb(struct endpoint *endpoint, const struct sk_buff *sk
endpoint->addr6.sin6_port = udp_hdr(skb)->source;
endpoint->addr6.sin6_addr = ipv6_hdr(skb)->saddr;
endpoint->addr6.sin6_scope_id = ipv6_iface_scope_id(&ipv6_hdr(skb)->saddr, skb->skb_iif);
- /* TODO: endpoint->addr6.sin6_flowinfo */
endpoint->src6 = ipv6_hdr(skb)->daddr;
} else
return -EINVAL;
@@ -258,6 +257,13 @@ out:
write_unlock_bh(&peer->endpoint_lock);
}
+void socket_set_peer_endpoint_from_skb(struct wireguard_peer *peer, const struct sk_buff *skb)
+{
+ struct endpoint endpoint;
+ if (!socket_endpoint_from_skb(&endpoint, skb))
+ socket_set_peer_endpoint(peer, &endpoint);
+}
+
void socket_clear_peer_endpoint_src(struct wireguard_peer *peer)
{
write_lock_bh(&peer->endpoint_lock);