Lines Matching refs:wg
34 struct wg_device *wg = netdev_priv(dev); in wg_open() local
49 mutex_lock(&wg->device_update_lock); in wg_open()
50 ret = wg_socket_init(wg, wg->incoming_port); in wg_open()
53 list_for_each_entry(peer, &wg->peer_list, peer_list) { in wg_open()
59 mutex_unlock(&wg->device_update_lock); in wg_open()
65 struct wg_device *wg; in wg_pm_notification() local
80 list_for_each_entry(wg, &device_list, device_list) { in wg_pm_notification()
81 mutex_lock(&wg->device_update_lock); in wg_pm_notification()
82 list_for_each_entry(peer, &wg->peer_list, peer_list) { in wg_pm_notification()
87 mutex_unlock(&wg->device_update_lock); in wg_pm_notification()
98 struct wg_device *wg; in wg_vm_notification() local
102 list_for_each_entry(wg, &device_list, device_list) { in wg_vm_notification()
103 mutex_lock(&wg->device_update_lock); in wg_vm_notification()
104 list_for_each_entry(peer, &wg->peer_list, peer_list) in wg_vm_notification()
106 mutex_unlock(&wg->device_update_lock); in wg_vm_notification()
116 struct wg_device *wg = netdev_priv(dev); in wg_stop() local
120 mutex_lock(&wg->device_update_lock); in wg_stop()
121 list_for_each_entry(peer, &wg->peer_list, peer_list) { in wg_stop()
128 mutex_unlock(&wg->device_update_lock); in wg_stop()
129 while ((skb = ptr_ring_consume(&wg->handshake_queue.ring)) != NULL) in wg_stop()
131 atomic_set(&wg->handshake_queue_len, 0); in wg_stop()
132 wg_socket_reinit(wg, NULL, NULL); in wg_stop()
138 struct wg_device *wg = netdev_priv(dev); in wg_xmit() local
152 peer = wg_allowedips_lookup_dst(&wg->peer_allowedips, skb); in wg_xmit()
244 struct wg_device *wg = netdev_priv(dev); in wg_destruct() local
247 list_del(&wg->device_list); in wg_destruct()
249 mutex_lock(&wg->device_update_lock); in wg_destruct()
250 rcu_assign_pointer(wg->creating_net, NULL); in wg_destruct()
251 wg->incoming_port = 0; in wg_destruct()
252 wg_socket_reinit(wg, NULL, NULL); in wg_destruct()
254 wg_peer_remove_all(wg); in wg_destruct()
255 destroy_workqueue(wg->handshake_receive_wq); in wg_destruct()
256 destroy_workqueue(wg->handshake_send_wq); in wg_destruct()
257 destroy_workqueue(wg->packet_crypt_wq); in wg_destruct()
258 wg_packet_queue_free(&wg->handshake_queue, true); in wg_destruct()
259 wg_packet_queue_free(&wg->decrypt_queue, false); in wg_destruct()
260 wg_packet_queue_free(&wg->encrypt_queue, false); in wg_destruct()
263 memzero_explicit(&wg->static_identity, sizeof(wg->static_identity)); in wg_destruct()
265 kvfree(wg->index_hashtable); in wg_destruct()
266 kvfree(wg->peer_hashtable); in wg_destruct()
267 mutex_unlock(&wg->device_update_lock); in wg_destruct()
277 struct wg_device *wg = netdev_priv(dev); in wg_setup() local
305 memset(wg, 0, sizeof(*wg)); in wg_setup()
306 wg->dev = dev; in wg_setup()
313 struct wg_device *wg = netdev_priv(dev); in wg_newlink() local
316 rcu_assign_pointer(wg->creating_net, src_net); in wg_newlink()
317 init_rwsem(&wg->static_identity.lock); in wg_newlink()
318 mutex_init(&wg->socket_update_lock); in wg_newlink()
319 mutex_init(&wg->device_update_lock); in wg_newlink()
320 wg_allowedips_init(&wg->peer_allowedips); in wg_newlink()
321 wg_cookie_checker_init(&wg->cookie_checker, wg); in wg_newlink()
322 INIT_LIST_HEAD(&wg->peer_list); in wg_newlink()
323 wg->device_update_gen = 1; in wg_newlink()
325 wg->peer_hashtable = wg_pubkey_hashtable_alloc(); in wg_newlink()
326 if (!wg->peer_hashtable) in wg_newlink()
329 wg->index_hashtable = wg_index_hashtable_alloc(); in wg_newlink()
330 if (!wg->index_hashtable) in wg_newlink()
337 wg->handshake_receive_wq = alloc_workqueue("wg-kex-%s", in wg_newlink()
339 if (!wg->handshake_receive_wq) in wg_newlink()
342 wg->handshake_send_wq = alloc_workqueue("wg-kex-%s", in wg_newlink()
344 if (!wg->handshake_send_wq) in wg_newlink()
347 wg->packet_crypt_wq = alloc_workqueue("wg-crypt-%s", in wg_newlink()
349 if (!wg->packet_crypt_wq) in wg_newlink()
352 ret = wg_packet_queue_init(&wg->encrypt_queue, wg_packet_encrypt_worker, in wg_newlink()
357 ret = wg_packet_queue_init(&wg->decrypt_queue, wg_packet_decrypt_worker, in wg_newlink()
362 ret = wg_packet_queue_init(&wg->handshake_queue, wg_packet_handshake_receive_worker, in wg_newlink()
375 list_add(&wg->device_list, &device_list); in wg_newlink()
388 wg_packet_queue_free(&wg->handshake_queue, false); in wg_newlink()
390 wg_packet_queue_free(&wg->decrypt_queue, false); in wg_newlink()
392 wg_packet_queue_free(&wg->encrypt_queue, false); in wg_newlink()
394 destroy_workqueue(wg->packet_crypt_wq); in wg_newlink()
396 destroy_workqueue(wg->handshake_send_wq); in wg_newlink()
398 destroy_workqueue(wg->handshake_receive_wq); in wg_newlink()
402 kvfree(wg->index_hashtable); in wg_newlink()
404 kvfree(wg->peer_hashtable); in wg_newlink()
417 struct wg_device *wg; in wg_netns_pre_exit() local
421 list_for_each_entry(wg, &device_list, device_list) { in wg_netns_pre_exit()
422 if (rcu_access_pointer(wg->creating_net) == net) { in wg_netns_pre_exit()
423 pr_debug("%s: Creating namespace exiting\n", wg->dev->name); in wg_netns_pre_exit()
424 netif_carrier_off(wg->dev); in wg_netns_pre_exit()
425 mutex_lock(&wg->device_update_lock); in wg_netns_pre_exit()
426 rcu_assign_pointer(wg->creating_net, NULL); in wg_netns_pre_exit()
427 wg_socket_reinit(wg, NULL, NULL); in wg_netns_pre_exit()
428 list_for_each_entry(peer, &wg->peer_list, peer_list) in wg_netns_pre_exit()
430 mutex_unlock(&wg->device_update_lock); in wg_netns_pre_exit()