Lines Matching refs:wg

97 	struct wg_device *wg;  member
201 struct wg_device *wg; in wg_get_device_start() local
203 wg = lookup_interface(genl_dumpit_info(cb)->attrs, cb->skb); in wg_get_device_start()
204 if (IS_ERR(wg)) in wg_get_device_start()
205 return PTR_ERR(wg); in wg_get_device_start()
206 DUMP_CTX(cb)->wg = wg; in wg_get_device_start()
214 struct wg_device *wg = ctx->wg; in wg_get_device_dump() local
221 mutex_lock(&wg->device_update_lock); in wg_get_device_dump()
222 cb->seq = wg->device_update_gen; in wg_get_device_dump()
233 wg->incoming_port) || in wg_get_device_dump()
234 nla_put_u32(skb, WGDEVICE_A_FWMARK, wg->fwmark) || in wg_get_device_dump()
235 nla_put_u32(skb, WGDEVICE_A_IFINDEX, wg->dev->ifindex) || in wg_get_device_dump()
236 nla_put_string(skb, WGDEVICE_A_IFNAME, wg->dev->name)) in wg_get_device_dump()
239 down_read(&wg->static_identity.lock); in wg_get_device_dump()
240 if (wg->static_identity.has_identity) { in wg_get_device_dump()
243 wg->static_identity.static_private) || in wg_get_device_dump()
246 wg->static_identity.static_public)) { in wg_get_device_dump()
247 up_read(&wg->static_identity.lock); in wg_get_device_dump()
251 up_read(&wg->static_identity.lock); in wg_get_device_dump()
263 if (list_empty(&wg->peer_list) || in wg_get_device_dump()
268 lockdep_assert_held(&wg->device_update_lock); in wg_get_device_dump()
269 peer = list_prepare_entry(ctx->next_peer, &wg->peer_list, peer_list); in wg_get_device_dump()
270 list_for_each_entry_continue(peer, &wg->peer_list, peer_list) { in wg_get_device_dump()
283 mutex_unlock(&wg->device_update_lock); in wg_get_device_dump()
308 if (ctx->wg) in wg_get_device_done()
309 dev_put(ctx->wg->dev); in wg_get_device_done()
314 static int set_port(struct wg_device *wg, u16 port) in set_port() argument
318 if (wg->incoming_port == port) in set_port()
320 list_for_each_entry(peer, &wg->peer_list, peer_list) in set_port()
322 if (!netif_running(wg->dev)) { in set_port()
323 wg->incoming_port = port; in set_port()
326 return wg_socket_init(wg, port); in set_port()
357 static int set_peer(struct wg_device *wg, struct nlattr **attrs) in set_peer() argument
386 peer = wg_pubkey_hashtable_lookup(wg->peer_hashtable, in set_peer()
396 down_read(&wg->static_identity.lock); in set_peer()
397 if (wg->static_identity.has_identity && in set_peer()
399 wg->static_identity.static_public, in set_peer()
406 up_read(&wg->static_identity.lock); in set_peer()
410 up_read(&wg->static_identity.lock); in set_peer()
412 peer = wg_peer_create(wg, public_key, preshared_key); in set_peer()
452 wg_allowedips_remove_by_peer(&wg->peer_allowedips, peer, in set_peer()
453 &wg->device_update_lock); in set_peer()
476 netif_running(wg->dev); in set_peer()
483 if (netif_running(wg->dev)) in set_peer()
496 struct wg_device *wg = lookup_interface(info->attrs, skb); in wg_set_device() local
500 if (IS_ERR(wg)) { in wg_set_device()
501 ret = PTR_ERR(wg); in wg_set_device()
506 mutex_lock(&wg->device_update_lock); in wg_set_device()
517 net = rcu_dereference(wg->creating_net); in wg_set_device()
524 ++wg->device_update_gen; in wg_set_device()
529 wg->fwmark = nla_get_u32(info->attrs[WGDEVICE_A_FWMARK]); in wg_set_device()
530 list_for_each_entry(peer, &wg->peer_list, peer_list) in wg_set_device()
535 ret = set_port(wg, in wg_set_device()
542 wg_peer_remove_all(wg); in wg_set_device()
551 if (!crypto_memneq(wg->static_identity.static_private, in wg_set_device()
559 peer = wg_pubkey_hashtable_lookup(wg->peer_hashtable, in wg_set_device()
567 down_write(&wg->static_identity.lock); in wg_set_device()
568 wg_noise_set_static_identity_private_key(&wg->static_identity, in wg_set_device()
570 list_for_each_entry_safe(peer, temp, &wg->peer_list, in wg_set_device()
575 wg_cookie_checker_precompute_device_keys(&wg->cookie_checker); in wg_set_device()
576 up_write(&wg->static_identity.lock); in wg_set_device()
589 ret = set_peer(wg, peer); in wg_set_device()
597 mutex_unlock(&wg->device_update_lock); in wg_set_device()
599 dev_put(wg->dev); in wg_set_device()