Lines Matching defs:wg
34 struct wg_device *wg = netdev_priv(dev);
49 mutex_lock(&wg->device_update_lock);
50 ret = wg_socket_init(wg, wg->incoming_port);
53 list_for_each_entry(peer, &wg->peer_list, peer_list) {
59 mutex_unlock(&wg->device_update_lock);
67 struct wg_device *wg;
81 list_for_each_entry(wg, &device_list, device_list) {
82 mutex_lock(&wg->device_update_lock);
83 list_for_each_entry(peer, &wg->peer_list, peer_list) {
88 mutex_unlock(&wg->device_update_lock);
100 struct wg_device *wg = netdev_priv(dev);
104 mutex_lock(&wg->device_update_lock);
105 list_for_each_entry(peer, &wg->peer_list, peer_list) {
112 mutex_unlock(&wg->device_update_lock);
113 while ((skb = ptr_ring_consume(&wg->handshake_queue.ring)) != NULL)
115 atomic_set(&wg->handshake_queue_len, 0);
116 wg_socket_reinit(wg, NULL, NULL);
122 struct wg_device *wg = netdev_priv(dev);
136 peer = wg_allowedips_lookup_dst(&wg->peer_allowedips, skb);
228 struct wg_device *wg = netdev_priv(dev);
231 list_del(&wg->device_list);
233 mutex_lock(&wg->device_update_lock);
234 rcu_assign_pointer(wg->creating_net, NULL);
235 wg->incoming_port = 0;
236 wg_socket_reinit(wg, NULL, NULL);
238 wg_peer_remove_all(wg);
239 destroy_workqueue(wg->handshake_receive_wq);
240 destroy_workqueue(wg->handshake_send_wq);
241 destroy_workqueue(wg->packet_crypt_wq);
242 wg_packet_queue_free(&wg->handshake_queue, true);
243 wg_packet_queue_free(&wg->decrypt_queue, false);
244 wg_packet_queue_free(&wg->encrypt_queue, false);
247 memzero_explicit(&wg->static_identity, sizeof(wg->static_identity));
249 kvfree(wg->index_hashtable);
250 kvfree(wg->peer_hashtable);
251 mutex_unlock(&wg->device_update_lock);
261 struct wg_device *wg = netdev_priv(dev);
289 memset(wg, 0, sizeof(*wg));
290 wg->dev = dev;
297 struct wg_device *wg = netdev_priv(dev);
300 rcu_assign_pointer(wg->creating_net, src_net);
301 init_rwsem(&wg->static_identity.lock);
302 mutex_init(&wg->socket_update_lock);
303 mutex_init(&wg->device_update_lock);
304 wg_allowedips_init(&wg->peer_allowedips);
305 wg_cookie_checker_init(&wg->cookie_checker, wg);
306 INIT_LIST_HEAD(&wg->peer_list);
307 wg->device_update_gen = 1;
309 wg->peer_hashtable = wg_pubkey_hashtable_alloc();
310 if (!wg->peer_hashtable)
313 wg->index_hashtable = wg_index_hashtable_alloc();
314 if (!wg->index_hashtable)
321 wg->handshake_receive_wq = alloc_workqueue("wg-kex-%s",
323 if (!wg->handshake_receive_wq)
326 wg->handshake_send_wq = alloc_workqueue("wg-kex-%s",
328 if (!wg->handshake_send_wq)
331 wg->packet_crypt_wq = alloc_workqueue("wg-crypt-%s",
333 if (!wg->packet_crypt_wq)
336 ret = wg_packet_queue_init(&wg->encrypt_queue, wg_packet_encrypt_worker,
341 ret = wg_packet_queue_init(&wg->decrypt_queue, wg_packet_decrypt_worker,
346 ret = wg_packet_queue_init(&wg->handshake_queue, wg_packet_handshake_receive_worker,
359 list_add(&wg->device_list, &device_list);
372 wg_packet_queue_free(&wg->handshake_queue, false);
374 wg_packet_queue_free(&wg->decrypt_queue, false);
376 wg_packet_queue_free(&wg->encrypt_queue, false);
378 destroy_workqueue(wg->packet_crypt_wq);
380 destroy_workqueue(wg->handshake_send_wq);
382 destroy_workqueue(wg->handshake_receive_wq);
386 kvfree(wg->index_hashtable);
388 kvfree(wg->peer_hashtable);
401 struct wg_device *wg;
405 list_for_each_entry(wg, &device_list, device_list) {
406 if (rcu_access_pointer(wg->creating_net) == net) {
407 pr_debug("%s: Creating namespace exiting\n", wg->dev->name);
408 netif_carrier_off(wg->dev);
409 mutex_lock(&wg->device_update_lock);
410 rcu_assign_pointer(wg->creating_net, NULL);
411 wg_socket_reinit(wg, NULL, NULL);
412 list_for_each_entry(peer, &wg->peer_list, peer_list)
414 mutex_unlock(&wg->device_update_lock);