Lines Matching refs:wg

33 	struct wg_device *wg = netdev_priv(dev);  in wg_open()  local
48 mutex_lock(&wg->device_update_lock); in wg_open()
49 ret = wg_socket_init(wg, wg->incoming_port); in wg_open()
52 list_for_each_entry(peer, &wg->peer_list, peer_list) { in wg_open()
58 mutex_unlock(&wg->device_update_lock); in wg_open()
66 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()
99 struct wg_device *wg = netdev_priv(dev); in wg_stop() local
103 mutex_lock(&wg->device_update_lock); in wg_stop()
104 list_for_each_entry(peer, &wg->peer_list, peer_list) { in wg_stop()
111 mutex_unlock(&wg->device_update_lock); in wg_stop()
112 while ((skb = ptr_ring_consume(&wg->handshake_queue.ring)) != NULL) in wg_stop()
114 atomic_set(&wg->handshake_queue_len, 0); in wg_stop()
115 wg_socket_reinit(wg, NULL, NULL); in wg_stop()
121 struct wg_device *wg = netdev_priv(dev); in wg_xmit() local
135 peer = wg_allowedips_lookup_dst(&wg->peer_allowedips, skb); in wg_xmit()
227 struct wg_device *wg = netdev_priv(dev); in wg_destruct() local
230 list_del(&wg->device_list); in wg_destruct()
232 mutex_lock(&wg->device_update_lock); in wg_destruct()
233 rcu_assign_pointer(wg->creating_net, NULL); in wg_destruct()
234 wg->incoming_port = 0; in wg_destruct()
235 wg_socket_reinit(wg, NULL, NULL); in wg_destruct()
237 wg_peer_remove_all(wg); in wg_destruct()
238 destroy_workqueue(wg->handshake_receive_wq); in wg_destruct()
239 destroy_workqueue(wg->handshake_send_wq); in wg_destruct()
240 destroy_workqueue(wg->packet_crypt_wq); in wg_destruct()
241 wg_packet_queue_free(&wg->handshake_queue, true); in wg_destruct()
242 wg_packet_queue_free(&wg->decrypt_queue, false); in wg_destruct()
243 wg_packet_queue_free(&wg->encrypt_queue, false); in wg_destruct()
246 memzero_explicit(&wg->static_identity, sizeof(wg->static_identity)); in wg_destruct()
248 kvfree(wg->index_hashtable); in wg_destruct()
249 kvfree(wg->peer_hashtable); in wg_destruct()
250 mutex_unlock(&wg->device_update_lock); in wg_destruct()
260 struct wg_device *wg = netdev_priv(dev); in wg_setup() local
288 memset(wg, 0, sizeof(*wg)); in wg_setup()
289 wg->dev = dev; in wg_setup()
296 struct wg_device *wg = netdev_priv(dev); in wg_newlink() local
299 rcu_assign_pointer(wg->creating_net, src_net); in wg_newlink()
300 init_rwsem(&wg->static_identity.lock); in wg_newlink()
301 mutex_init(&wg->socket_update_lock); in wg_newlink()
302 mutex_init(&wg->device_update_lock); in wg_newlink()
303 wg_allowedips_init(&wg->peer_allowedips); in wg_newlink()
304 wg_cookie_checker_init(&wg->cookie_checker, wg); in wg_newlink()
305 INIT_LIST_HEAD(&wg->peer_list); in wg_newlink()
306 wg->device_update_gen = 1; in wg_newlink()
308 wg->peer_hashtable = wg_pubkey_hashtable_alloc(); in wg_newlink()
309 if (!wg->peer_hashtable) in wg_newlink()
312 wg->index_hashtable = wg_index_hashtable_alloc(); in wg_newlink()
313 if (!wg->index_hashtable) in wg_newlink()
320 wg->handshake_receive_wq = alloc_workqueue("wg-kex-%s", in wg_newlink()
322 if (!wg->handshake_receive_wq) in wg_newlink()
325 wg->handshake_send_wq = alloc_workqueue("wg-kex-%s", in wg_newlink()
327 if (!wg->handshake_send_wq) in wg_newlink()
330 wg->packet_crypt_wq = alloc_workqueue("wg-crypt-%s", in wg_newlink()
332 if (!wg->packet_crypt_wq) in wg_newlink()
335 ret = wg_packet_queue_init(&wg->encrypt_queue, wg_packet_encrypt_worker, in wg_newlink()
340 ret = wg_packet_queue_init(&wg->decrypt_queue, wg_packet_decrypt_worker, in wg_newlink()
345 ret = wg_packet_queue_init(&wg->handshake_queue, wg_packet_handshake_receive_worker, in wg_newlink()
358 list_add(&wg->device_list, &device_list); in wg_newlink()
371 wg_packet_queue_free(&wg->handshake_queue, false); in wg_newlink()
373 wg_packet_queue_free(&wg->decrypt_queue, false); in wg_newlink()
375 wg_packet_queue_free(&wg->encrypt_queue, false); in wg_newlink()
377 destroy_workqueue(wg->packet_crypt_wq); in wg_newlink()
379 destroy_workqueue(wg->handshake_send_wq); in wg_newlink()
381 destroy_workqueue(wg->handshake_receive_wq); in wg_newlink()
385 kvfree(wg->index_hashtable); in wg_newlink()
387 kvfree(wg->peer_hashtable); in wg_newlink()
400 struct wg_device *wg; in wg_netns_pre_exit() local
404 list_for_each_entry(wg, &device_list, device_list) { in wg_netns_pre_exit()
405 if (rcu_access_pointer(wg->creating_net) == net) { in wg_netns_pre_exit()
406 pr_debug("%s: Creating namespace exiting\n", wg->dev->name); in wg_netns_pre_exit()
407 netif_carrier_off(wg->dev); in wg_netns_pre_exit()
408 mutex_lock(&wg->device_update_lock); in wg_netns_pre_exit()
409 rcu_assign_pointer(wg->creating_net, NULL); in wg_netns_pre_exit()
410 wg_socket_reinit(wg, NULL, NULL); in wg_netns_pre_exit()
411 list_for_each_entry(peer, &wg->peer_list, peer_list) in wg_netns_pre_exit()
413 mutex_unlock(&wg->device_update_lock); in wg_netns_pre_exit()