Lines Matching defs:wg
35 struct wg_device *wg = netdev_priv(dev);
50 mutex_lock(&wg->device_update_lock);
51 ret = wg_socket_init(wg, wg->incoming_port);
54 list_for_each_entry(peer, &wg->peer_list, peer_list) {
60 mutex_unlock(&wg->device_update_lock);
66 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);
99 struct wg_device *wg;
103 list_for_each_entry(wg, &device_list, device_list) {
104 mutex_lock(&wg->device_update_lock);
105 list_for_each_entry(peer, &wg->peer_list, peer_list)
107 mutex_unlock(&wg->device_update_lock);
117 struct wg_device *wg = netdev_priv(dev);
121 mutex_lock(&wg->device_update_lock);
122 list_for_each_entry(peer, &wg->peer_list, peer_list) {
129 mutex_unlock(&wg->device_update_lock);
130 while ((skb = ptr_ring_consume(&wg->handshake_queue.ring)) != NULL)
132 atomic_set(&wg->handshake_queue_len, 0);
133 wg_socket_reinit(wg, NULL, NULL);
139 struct wg_device *wg = netdev_priv(dev);
153 peer = wg_allowedips_lookup_dst(&wg->peer_allowedips, skb);
245 struct wg_device *wg = netdev_priv(dev);
248 list_del(&wg->device_list);
250 mutex_lock(&wg->device_update_lock);
251 rcu_assign_pointer(wg->creating_net, NULL);
252 wg->incoming_port = 0;
253 wg_socket_reinit(wg, NULL, NULL);
255 wg_peer_remove_all(wg);
256 destroy_workqueue(wg->handshake_receive_wq);
257 destroy_workqueue(wg->handshake_send_wq);
258 destroy_workqueue(wg->packet_crypt_wq);
259 wg_packet_queue_free(&wg->handshake_queue, true);
260 wg_packet_queue_free(&wg->decrypt_queue, false);
261 wg_packet_queue_free(&wg->encrypt_queue, false);
264 memzero_explicit(&wg->static_identity, sizeof(wg->static_identity));
266 kvfree(wg->index_hashtable);
267 kvfree(wg->peer_hashtable);
268 mutex_unlock(&wg->device_update_lock);
278 struct wg_device *wg = netdev_priv(dev);
306 memset(wg, 0, sizeof(*wg));
307 wg->dev = dev;
314 struct wg_device *wg = netdev_priv(dev);
317 rcu_assign_pointer(wg->creating_net, src_net);
318 init_rwsem(&wg->static_identity.lock);
319 mutex_init(&wg->socket_update_lock);
320 mutex_init(&wg->device_update_lock);
321 wg_allowedips_init(&wg->peer_allowedips);
322 wg_cookie_checker_init(&wg->cookie_checker, wg);
323 INIT_LIST_HEAD(&wg->peer_list);
324 wg->device_update_gen = 1;
326 wg->peer_hashtable = wg_pubkey_hashtable_alloc();
327 if (!wg->peer_hashtable)
330 wg->index_hashtable = wg_index_hashtable_alloc();
331 if (!wg->index_hashtable)
338 wg->handshake_receive_wq = alloc_workqueue("wg-kex-%s",
340 if (!wg->handshake_receive_wq)
343 wg->handshake_send_wq = alloc_workqueue("wg-kex-%s",
345 if (!wg->handshake_send_wq)
348 wg->packet_crypt_wq = alloc_workqueue("wg-crypt-%s",
350 if (!wg->packet_crypt_wq)
353 ret = wg_packet_queue_init(&wg->encrypt_queue, wg_packet_encrypt_worker,
358 ret = wg_packet_queue_init(&wg->decrypt_queue, wg_packet_decrypt_worker,
363 ret = wg_packet_queue_init(&wg->handshake_queue, wg_packet_handshake_receive_worker,
376 list_add(&wg->device_list, &device_list);
389 wg_packet_queue_free(&wg->handshake_queue, false);
391 wg_packet_queue_free(&wg->decrypt_queue, false);
393 wg_packet_queue_free(&wg->encrypt_queue, false);
395 destroy_workqueue(wg->packet_crypt_wq);
397 destroy_workqueue(wg->handshake_send_wq);
399 destroy_workqueue(wg->handshake_receive_wq);
403 kvfree(wg->index_hashtable);
405 kvfree(wg->peer_hashtable);
418 struct wg_device *wg;
422 list_for_each_entry(wg, &device_list, device_list) {
423 if (rcu_access_pointer(wg->creating_net) == net) {
424 pr_debug("%s: Creating namespace exiting\n", wg->dev->name);
425 netif_carrier_off(wg->dev);
426 mutex_lock(&wg->device_update_lock);
427 rcu_assign_pointer(wg->creating_net, NULL);
428 wg_socket_reinit(wg, NULL, NULL);
429 list_for_each_entry(peer, &wg->peer_list, peer_list)
431 mutex_unlock(&wg->device_update_lock);