Lines Matching defs:wg
97 struct wg_device *wg;
201 struct wg_device *wg;
203 wg = lookup_interface(genl_dumpit_info(cb)->attrs, cb->skb);
204 if (IS_ERR(wg))
205 return PTR_ERR(wg);
206 DUMP_CTX(cb)->wg = wg;
214 struct wg_device *wg = ctx->wg;
221 mutex_lock(&wg->device_update_lock);
222 cb->seq = wg->device_update_gen;
233 wg->incoming_port) ||
234 nla_put_u32(skb, WGDEVICE_A_FWMARK, wg->fwmark) ||
235 nla_put_u32(skb, WGDEVICE_A_IFINDEX, wg->dev->ifindex) ||
236 nla_put_string(skb, WGDEVICE_A_IFNAME, wg->dev->name))
239 down_read(&wg->static_identity.lock);
240 if (wg->static_identity.has_identity) {
243 wg->static_identity.static_private) ||
246 wg->static_identity.static_public)) {
247 up_read(&wg->static_identity.lock);
251 up_read(&wg->static_identity.lock);
263 if (list_empty(&wg->peer_list) ||
268 lockdep_assert_held(&wg->device_update_lock);
269 peer = list_prepare_entry(ctx->next_peer, &wg->peer_list, peer_list);
270 list_for_each_entry_continue(peer, &wg->peer_list, peer_list) {
283 mutex_unlock(&wg->device_update_lock);
308 if (ctx->wg)
309 dev_put(ctx->wg->dev);
314 static int set_port(struct wg_device *wg, u16 port)
318 if (wg->incoming_port == port)
320 list_for_each_entry(peer, &wg->peer_list, peer_list)
322 if (!netif_running(wg->dev)) {
323 wg->incoming_port = port;
326 return wg_socket_init(wg, port);
357 static int set_peer(struct wg_device *wg, struct nlattr **attrs)
386 peer = wg_pubkey_hashtable_lookup(wg->peer_hashtable,
396 down_read(&wg->static_identity.lock);
397 if (wg->static_identity.has_identity &&
399 wg->static_identity.static_public,
406 up_read(&wg->static_identity.lock);
410 up_read(&wg->static_identity.lock);
412 peer = wg_peer_create(wg, public_key, preshared_key);
451 wg_allowedips_remove_by_peer(&wg->peer_allowedips, peer,
452 &wg->device_update_lock);
475 netif_running(wg->dev);
482 if (netif_running(wg->dev))
495 struct wg_device *wg = lookup_interface(info->attrs, skb);
499 if (IS_ERR(wg)) {
500 ret = PTR_ERR(wg);
505 mutex_lock(&wg->device_update_lock);
516 net = rcu_dereference(wg->creating_net);
523 ++wg->device_update_gen;
528 wg->fwmark = nla_get_u32(info->attrs[WGDEVICE_A_FWMARK]);
529 list_for_each_entry(peer, &wg->peer_list, peer_list)
534 ret = set_port(wg,
541 wg_peer_remove_all(wg);
551 if (!crypto_memneq(wg->static_identity.static_private,
559 peer = wg_pubkey_hashtable_lookup(wg->peer_hashtable,
567 down_write(&wg->static_identity.lock);
568 send_staged_packets = !wg->static_identity.has_identity && netif_running(wg->dev);
569 wg_noise_set_static_identity_private_key(&wg->static_identity, private_key);
570 send_staged_packets = send_staged_packets && wg->static_identity.has_identity;
572 wg_cookie_checker_precompute_device_keys(&wg->cookie_checker);
573 list_for_each_entry_safe(peer, temp, &wg->peer_list, peer_list) {
579 up_write(&wg->static_identity.lock);
592 ret = set_peer(wg, peer);
600 mutex_unlock(&wg->device_update_lock);
602 dev_put(wg->dev);