diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2016-11-04 03:11:21 +0100 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2016-11-04 03:11:21 +0100 |
commit | 4d66775dd2276a338e17b22c86c7845bce52d7e5 (patch) | |
tree | 3f6a78b160499b1bf5a49795cf4d4c5a03977dc3 /src/peer.c | |
parent | chacha20poly1305: src is different from dst on last piece (diff) | |
download | wireguard-monolithic-historical-4d66775dd2276a338e17b22c86c7845bce52d7e5.tar.xz wireguard-monolithic-historical-4d66775dd2276a338e17b22c86c7845bce52d7e5.zip |
socket: use dst_cache instead of handrolled cache
Diffstat (limited to 'src/peer.c')
-rw-r--r-- | src/peer.c | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -26,6 +26,11 @@ struct wireguard_peer *peer_create(struct wireguard_device *wg, const u8 public_ if (!peer) return NULL; + if (dst_cache_init(&peer->endpoint_cache, GFP_KERNEL)) { + kfree(peer); + return NULL; + } + peer->internal_id = atomic64_inc_return(&peer_counter); peer->device = wg; cookie_init(&peer->latest_cookie); @@ -82,8 +87,7 @@ static void rcu_release(struct rcu_head *rcu) struct wireguard_peer *peer = container_of(rcu, struct wireguard_peer, rcu); pr_debug("Peer %Lu (%pISpfsc) destroyed\n", peer->internal_id, &peer->endpoint_addr); skb_queue_purge(&peer->tx_packet_queue); - if (peer->endpoint_dst) - dst_release(peer->endpoint_dst); + dst_cache_destroy(&peer->endpoint_cache); kzfree(peer); } |