Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package wireguard-tools for openSUSE:Factory 
checked in at 2021-03-16 15:45:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/wireguard-tools (Old)
 and      /work/SRC/openSUSE:Factory/.wireguard-tools.new.2401 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "wireguard-tools"

Tue Mar 16 15:45:46 2021 rev:10 rq:879265 version:1.0.20210315

Changes:
--------
--- /work/SRC/openSUSE:Factory/wireguard-tools/wireguard-tools.changes  
2021-02-25 18:30:06.934284856 +0100
+++ 
/work/SRC/openSUSE:Factory/.wireguard-tools.new.2401/wireguard-tools.changes    
    2021-03-16 15:46:47.693265079 +0100
@@ -1,0 +2,9 @@
+Mon Mar 15 15:11:03 UTC 2021 - Martin Hauke <mar...@gmx.de>
+
+- Update to version 1.0.20210315
+  * Makefile: fix version indicator
+  * wireguard-tools: const correctness
+  * wireguard-tools: drag in headers for prototypes
+  * ipc: uniformly ignore preshared keys that are zero
+
+-------------------------------------------------------------------

Old:
----
  wireguard-tools-1.0.20210223.tar.asc
  wireguard-tools-1.0.20210223.tar.xz

New:
----
  wireguard-tools-1.0.20210315.tar.asc
  wireguard-tools-1.0.20210315.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ wireguard-tools.spec ++++++
--- /var/tmp/diff_new_pack.S7S1U9/_old  2021-03-16 15:46:48.273265979 +0100
+++ /var/tmp/diff_new_pack.S7S1U9/_new  2021-03-16 15:46:48.277265986 +0100
@@ -2,7 +2,7 @@
 # spec file for package wireguard-tools
 #
 # Copyright (c) 2021 SUSE LLC
-# Copyright (c) 2020, Martin Hauke <mar...@gmx.de>
+# Copyright (c) 2020-2021, Martin Hauke <mar...@gmx.de>
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
 
 
 Name:           wireguard-tools
-Version:        1.0.20210223
+Version:        1.0.20210315
 Release:        0
 Summary:        WireGuard userspace tools
 License:        GPL-2.0-only


++++++ wireguard-tools-1.0.20210223.tar.xz -> 
wireguard-tools-1.0.20210315.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wireguard-tools-1.0.20210223/src/Makefile 
new/wireguard-tools-1.0.20210315/src/Makefile
--- old/wireguard-tools-1.0.20210223/src/Makefile       2021-02-23 
19:32:18.000000000 +0100
+++ new/wireguard-tools-1.0.20210315/src/Makefile       2021-03-15 
15:04:02.000000000 +0100
@@ -48,10 +48,13 @@
 ifeq ($(DEBUG),yes)
 CFLAGS += -g
 endif
-WIREGUARD_TOOLS_VERSION = $(patsubst v%,%,$(shell 
GIT_CEILING_DIRECTORIES="$(PWD)/../.." git describe --dirty 2>/dev/null))
+WIREGUARD_TOOLS_VERSION = $(patsubst v%,%,$(shell GIT_DIR="$(PWD)/../.git" git 
describe --dirty 2>/dev/null))
 ifneq ($(WIREGUARD_TOOLS_VERSION),)
 CFLAGS += -D'WIREGUARD_TOOLS_VERSION="$(WIREGUARD_TOOLS_VERSION)"'
 endif
+ifeq ($(PLATFORM),freebsd)
+LDLIBS += -lnv
+endif
 ifeq ($(PLATFORM),haiku)
 LDLIBS += -lnetwork -lbsd
 endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wireguard-tools-1.0.20210223/src/config.c 
new/wireguard-tools-1.0.20210315/src/config.c
--- old/wireguard-tools-1.0.20210223/src/config.c       2021-02-23 
19:32:18.000000000 +0100
+++ new/wireguard-tools-1.0.20210315/src/config.c       2021-03-15 
15:04:02.000000000 +0100
@@ -561,7 +561,7 @@
        return out;
 }
 
-struct wgdevice *config_read_cmd(char *argv[], int argc)
+struct wgdevice *config_read_cmd(const char *argv[], int argc)
 {
        struct wgdevice *device = calloc(1, sizeof(*device));
        struct wgpeer *peer = NULL;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wireguard-tools-1.0.20210223/src/config.h 
new/wireguard-tools-1.0.20210315/src/config.h
--- old/wireguard-tools-1.0.20210223/src/config.h       2021-02-23 
19:32:18.000000000 +0100
+++ new/wireguard-tools-1.0.20210315/src/config.h       2021-03-15 
15:04:02.000000000 +0100
@@ -19,7 +19,7 @@
        bool is_peer_section, is_device_section;
 };
 
-struct wgdevice *config_read_cmd(char *argv[], int argc);
+struct wgdevice *config_read_cmd(const char *argv[], int argc);
 bool config_read_init(struct config_ctx *ctx, bool append);
 bool config_read_line(struct config_ctx *ctx, const char *line);
 struct wgdevice *config_read_finish(struct config_ctx *ctx);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wireguard-tools-1.0.20210223/src/genkey.c 
new/wireguard-tools-1.0.20210315/src/genkey.c
--- old/wireguard-tools-1.0.20210223/src/genkey.c       2021-02-23 
19:32:18.000000000 +0100
+++ new/wireguard-tools-1.0.20210315/src/genkey.c       2021-03-15 
15:04:02.000000000 +0100
@@ -72,7 +72,7 @@
 }
 #endif
 
-int genkey_main(int argc, char *argv[])
+int genkey_main(int argc, const char *argv[])
 {
        uint8_t key[WG_KEY_LEN];
        char base64[WG_KEY_LEN_BASE64];
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wireguard-tools-1.0.20210223/src/ipc-freebsd.h 
new/wireguard-tools-1.0.20210315/src/ipc-freebsd.h
--- old/wireguard-tools-1.0.20210223/src/ipc-freebsd.h  1970-01-01 
01:00:00.000000000 +0100
+++ new/wireguard-tools-1.0.20210315/src/ipc-freebsd.h  2021-03-15 
15:04:02.000000000 +0100
@@ -0,0 +1,350 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright (C) 2015-2021 Jason A. Donenfeld <ja...@zx2c4.com>. All Rights 
Reserved.
+ *
+ */
+
+#include <sys/nv.h>
+#include <sys/sockio.h>
+#include <dev/if_wg/if_wg.h>
+
+#define IPC_SUPPORTS_KERNEL_INTERFACE
+
+static int get_dgram_socket(void)
+{
+       static int sock = -1;
+       if (sock < 0)
+               sock = socket(AF_INET, SOCK_DGRAM, 0);
+       return sock;
+}
+
+static int kernel_get_wireguard_interfaces(struct string_list *list)
+{
+       struct ifgroupreq ifgr = { .ifgr_name = "wg" };
+       struct ifg_req *ifg;
+       int s = get_dgram_socket(), ret = 0;
+
+       if (s < 0)
+               return -errno;
+
+       if (ioctl(s, SIOCGIFGMEMB, (caddr_t)&ifgr) < 0)
+               return errno == ENOENT ? 0 : -errno;
+
+       ifgr.ifgr_groups = calloc(1, ifgr.ifgr_len);
+       if (!ifgr.ifgr_groups)
+               return -errno;
+       if (ioctl(s, SIOCGIFGMEMB, (caddr_t)&ifgr) < 0) {
+               ret = -errno;
+               goto out;
+       }
+
+       for (ifg = ifgr.ifgr_groups; ifg && ifgr.ifgr_len > 0; ++ifg) {
+               if ((ret = string_list_add(list, ifg->ifgrq_member)) < 0)
+                       goto out;
+               ifgr.ifgr_len -= sizeof(struct ifg_req);
+       }
+
+out:
+       free(ifgr.ifgr_groups);
+       return ret;
+}
+
+static int kernel_get_device(struct wgdevice **device, const char *ifname)
+{
+       struct wg_data_io wgd = { 0 };
+       nvlist_t *nvl_device = NULL;
+       const nvlist_t *const *nvl_peers;
+       struct wgdevice *dev = NULL;
+       size_t size, peer_count, i;
+       uint64_t number;
+       const void *binary;
+       int ret = 0, s;
+
+       *device = NULL;
+       s = get_dgram_socket();
+       if (s < 0)
+               goto err;
+
+       strlcpy(wgd.wgd_name, ifname, sizeof(wgd.wgd_name));
+       if (ioctl(s, SIOCGWG, &wgd) < 0)
+               goto err;
+
+       wgd.wgd_data = malloc(wgd.wgd_size);
+       if (!wgd.wgd_data)
+               goto err;
+       if (ioctl(s, SIOCGWG, &wgd) < 0)
+               goto err;
+
+       dev = calloc(1, sizeof(*dev));
+       if (!dev)
+               goto err;
+       strlcpy(dev->name, ifname, sizeof(dev->name));
+       nvl_device = nvlist_unpack(wgd.wgd_data, wgd.wgd_size, 0);
+       if (!nvl_device)
+               goto err;
+
+       if (nvlist_exists_number(nvl_device, "listen-port")) {
+               number = nvlist_get_number(nvl_device, "listen-port");
+               if (number <= UINT16_MAX) {
+                       dev->listen_port = number;
+                       dev->flags |= WGDEVICE_HAS_LISTEN_PORT;
+               }
+       }
+       if (nvlist_exists_number(nvl_device, "user-cookie")) {
+               number = nvlist_get_number(nvl_device, "user-cookie");
+               if (number <= UINT32_MAX) {
+                       dev->fwmark = number;
+                       dev->flags |= WGDEVICE_HAS_FWMARK;
+               }
+       }
+       if (nvlist_exists_binary(nvl_device, "public-key")) {
+               binary = nvlist_get_binary(nvl_device, "public-key", &size);
+               if (binary && size == sizeof(dev->public_key)) {
+                       memcpy(dev->public_key, binary, 
sizeof(dev->public_key));
+                       dev->flags |= WGDEVICE_HAS_PUBLIC_KEY;
+               }
+       }
+       if (nvlist_exists_binary(nvl_device, "private-key")) {
+               binary = nvlist_get_binary(nvl_device, "private-key", &size);
+               if (binary && size == sizeof(dev->private_key)) {
+                       memcpy(dev->private_key, binary, 
sizeof(dev->private_key));
+                       dev->flags |= WGDEVICE_HAS_PRIVATE_KEY;
+               }
+       }
+       if (!nvlist_exists_nvlist_array(nvl_device, "peers"))
+               goto skip_peers;
+       nvl_peers = nvlist_get_nvlist_array(nvl_device, "peers", &peer_count);
+       if (!nvl_peers)
+               goto skip_peers;
+       for (i = 0; i < peer_count; ++i) {
+               struct wgpeer *peer;
+               struct wgallowedip *aip;
+               const nvlist_t *const *nvl_aips;
+               size_t aip_count, j;
+
+               peer = calloc(1, sizeof(*peer));
+               if (!peer)
+                       goto err_peer;
+               if (nvlist_exists_binary(nvl_peers[i], "public-key")) {
+                       binary = nvlist_get_binary(nvl_peers[i], "public-key", 
&size);
+                       if (binary && size == sizeof(peer->public_key)) {
+                               memcpy(peer->public_key, binary, 
sizeof(peer->public_key));
+                               peer->flags |= WGPEER_HAS_PUBLIC_KEY;
+                       }
+               }
+               if (nvlist_exists_binary(nvl_peers[i], "preshared-key")) {
+                       binary = nvlist_get_binary(nvl_peers[i], 
"preshared-key", &size);
+                       if (binary && size == sizeof(peer->preshared_key)) {
+                               memcpy(peer->preshared_key, binary, 
sizeof(peer->preshared_key));
+                               if (!key_is_zero(peer->preshared_key))
+                                       peer->flags |= WGPEER_HAS_PRESHARED_KEY;
+                       }
+               }
+               if (nvlist_exists_number(nvl_peers[i], 
"persistent-keepalive-interval")) {
+                       number = nvlist_get_number(nvl_peers[i], 
"persistent-keepalive-interval");
+                       if (number <= UINT16_MAX) {
+                               peer->persistent_keepalive_interval = number;
+                               peer->flags |= 
WGPEER_HAS_PERSISTENT_KEEPALIVE_INTERVAL;
+                       }
+               }
+               if (nvlist_exists_binary(nvl_peers[i], "endpoint")) {
+                       const struct sockaddr *endpoint = 
nvlist_get_binary(nvl_peers[i], "endpoint", &size);
+                       if (endpoint && size <= sizeof(peer->endpoint) && size 
>= sizeof(peer->endpoint.addr) &&
+                           (endpoint->sa_family == AF_INET || 
endpoint->sa_family == AF_INET6))
+                               memcpy(&peer->endpoint.addr, endpoint, size);
+               }
+               if (nvlist_exists_number(nvl_peers[i], "rx-bytes"))
+                       peer->rx_bytes = nvlist_get_number(nvl_peers[i], 
"rx-bytes");
+               if (nvlist_exists_number(nvl_peers[i], "tx-bytes"))
+                       peer->tx_bytes = nvlist_get_number(nvl_peers[i], 
"tx-bytes");
+               if (nvlist_exists_binary(nvl_peers[i], "last-handshake-time")) {
+                       binary = nvlist_get_binary(nvl_peers[i], 
"last-handshake-time", &size);
+                       if (binary && size == sizeof(peer->last_handshake_time))
+                               memcpy(&peer->last_handshake_time, binary, 
sizeof(peer->last_handshake_time));
+               }
+
+               if (!nvlist_exists_nvlist_array(nvl_peers[i], "allowed-ips"))
+                       goto skip_allowed_ips;
+               nvl_aips = nvlist_get_nvlist_array(nvl_peers[i], "allowed-ips", 
&aip_count);
+               if (!aip_count || !nvl_aips)
+                       goto skip_allowed_ips;
+               for (j = 0; j < aip_count; ++j) {
+                       aip = calloc(1, sizeof(*aip));
+                       if (!aip)
+                               goto err_allowed_ips;
+                       if (!nvlist_exists_number(nvl_aips[j], "cidr"))
+                               continue;
+                       number = nvlist_get_number(nvl_aips[j], "cidr");
+                       if (nvlist_exists_binary(nvl_aips[j], "ipv4")) {
+                               binary = nvlist_get_binary(nvl_aips[j], "ipv4", 
&size);
+                               if (!binary || number > 32) {
+                                       ret = EINVAL;
+                                       goto err_allowed_ips;
+                               }
+                               aip->family = AF_INET;
+                               aip->cidr = number;
+                               memcpy(&aip->ip4, binary, sizeof(aip->ip4));
+                       } else if (nvlist_exists_binary(nvl_aips[j], "ipv6")) {
+                               binary = nvlist_get_binary(nvl_aips[j], "ipv6", 
&size);
+                               if (!binary || number > 128) {
+                                       ret = EINVAL;
+                                       goto err_allowed_ips;
+                               }
+                               aip->family = AF_INET6;
+                               aip->cidr = number;
+                               memcpy(&aip->ip6, binary, sizeof(aip->ip6));
+                       } else
+                               continue;
+
+                       if (!peer->first_allowedip)
+                               peer->first_allowedip = aip;
+                       else
+                               peer->last_allowedip->next_allowedip = aip;
+                       peer->last_allowedip = aip;
+                       continue;
+
+               err_allowed_ips:
+                       if (!ret)
+                               ret = -errno;
+                       free(aip);
+                       goto err_peer;
+               }
+       skip_allowed_ips:
+               if (!dev->first_peer)
+                       dev->first_peer = peer;
+               else
+                       dev->last_peer->next_peer = peer;
+               dev->last_peer = peer;
+               continue;
+
+       err_peer:
+               if (!ret)
+                       ret = -errno;
+               free(peer);
+               goto err;
+       }
+
+skip_peers:
+       free(wgd.wgd_data);
+       nvlist_destroy(nvl_device);
+       *device = dev;
+       return 0;
+
+err:
+       if (!ret)
+               ret = -errno;
+       free(wgd.wgd_data);
+       nvlist_destroy(nvl_device);
+       free(dev);
+       return ret;
+}
+
+
+static int kernel_set_device(struct wgdevice *dev)
+{
+       struct wg_data_io wgd = { 0 };
+       nvlist_t *nvl_device = NULL, **nvl_peers = NULL;
+       size_t peer_count = 0, i = 0;
+       struct wgpeer *peer;
+       int ret = 0, s;
+
+       strlcpy(wgd.wgd_name, dev->name, sizeof(wgd.wgd_name));
+
+       nvl_device = nvlist_create(0);
+       if (!nvl_device)
+               goto err;
+
+       for_each_wgpeer(dev, peer)
+               ++peer_count;
+       if (peer_count) {
+               nvl_peers = calloc(peer_count, sizeof(*nvl_peers));
+               if (!nvl_peers)
+                       goto err;
+       }
+       if (dev->flags & WGDEVICE_HAS_PRIVATE_KEY)
+               nvlist_add_binary(nvl_device, "private-key", dev->private_key, 
sizeof(dev->private_key));
+       if (dev->flags & WGDEVICE_HAS_LISTEN_PORT)
+               nvlist_add_number(nvl_device, "listen-port", dev->listen_port);
+       if (dev->flags & WGDEVICE_HAS_FWMARK)
+               nvlist_add_number(nvl_device, "user-cookie", dev->fwmark);
+       if (dev->flags & WGDEVICE_REPLACE_PEERS)
+               nvlist_add_bool(nvl_device, "replace-peers", true);
+
+       for_each_wgpeer(dev, peer) {
+               size_t aip_count = 0, j = 0;
+               nvlist_t **nvl_aips = NULL;
+               struct wgallowedip *aip;
+
+               nvl_peers[i]  = nvlist_create(0);
+               if (!nvl_peers[i])
+                       goto err_peer;
+               for_each_wgallowedip(peer, aip)
+                       ++aip_count;
+               if (aip_count) {
+                       nvl_aips = calloc(aip_count, sizeof(*nvl_aips));
+                       if (!nvl_aips)
+                               goto err_peer;
+               }
+               nvlist_add_binary(nvl_peers[i], "public-key", peer->public_key, 
sizeof(peer->public_key));
+               if (peer->flags & WGPEER_HAS_PRESHARED_KEY)
+                       nvlist_add_binary(nvl_peers[i], "preshared-key", 
peer->preshared_key, sizeof(peer->preshared_key));
+               if (peer->flags & WGPEER_HAS_PERSISTENT_KEEPALIVE_INTERVAL)
+                       nvlist_add_number(nvl_peers[i], 
"persistent-keepalive-interval", peer->persistent_keepalive_interval);
+               if (peer->endpoint.addr.sa_family == AF_INET || 
peer->endpoint.addr.sa_family == AF_INET6)
+                       nvlist_add_binary(nvl_peers[i], "endpoint", 
&peer->endpoint.addr, peer->endpoint.addr.sa_len);
+               if (peer->flags & WGPEER_REPLACE_ALLOWEDIPS)
+                       nvlist_add_bool(nvl_peers[i], "replace-allowedips", 
true);
+               if (peer->flags & WGPEER_REMOVE_ME)
+                       nvlist_add_bool(nvl_peers[i], "remove", true);
+               for_each_wgallowedip(peer, aip) {
+                       nvl_aips[j] = nvlist_create(0);
+                       if (!nvl_aips[j])
+                               goto err_peer;
+                       nvlist_add_number(nvl_aips[j], "cidr", aip->cidr);
+                       if (aip->family == AF_INET)
+                               nvlist_add_binary(nvl_aips[j], "ipv4", 
&aip->ip4, sizeof(aip->ip4));
+                       else if (aip->family == AF_INET6)
+                               nvlist_add_binary(nvl_aips[j], "ipv6", 
&aip->ip6, sizeof(aip->ip6));
+                       ++j;
+               }
+               if (j) {
+                       nvlist_add_nvlist_array(nvl_peers[i], "allowed-ips", 
(const nvlist_t *const *)nvl_aips, j);
+                       for (j = 0; j < aip_count; ++j)
+                               nvlist_destroy(nvl_aips[j]);
+                       free(nvl_aips);
+               }
+               ++i;
+               continue;
+
+       err_peer:
+               ret = -errno;
+               for (j = 0; j < aip_count && nvl_aips; ++j)
+                       nvlist_destroy(nvl_aips[j]);
+               free(nvl_aips);
+               nvlist_destroy(nvl_peers[i]);
+               goto err;
+       }
+       if (i) {
+               nvlist_add_nvlist_array(nvl_device, "peers", (const nvlist_t 
*const *)nvl_peers, i);
+               for (i = 0; i < peer_count; ++i)
+                       nvlist_destroy(nvl_peers[i]);
+               free(nvl_peers);
+       }
+       wgd.wgd_data = nvlist_pack(nvl_device, &wgd.wgd_size);
+       nvlist_destroy(nvl_device);
+       if (!wgd.wgd_data)
+               goto err;
+       s = get_dgram_socket();
+       if (s < 0)
+               return -errno;
+       return ioctl(s, SIOCSWG, &wgd);
+
+err:
+       if (!ret)
+               ret = -errno;
+       for (i = 0; i < peer_count && nvl_peers; ++i)
+               nvlist_destroy(nvl_peers[i]);
+       free(nvl_peers);
+       nvlist_destroy(nvl_device);
+       return ret;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wireguard-tools-1.0.20210223/src/ipc-openbsd.h 
new/wireguard-tools-1.0.20210315/src/ipc-openbsd.h
--- old/wireguard-tools-1.0.20210223/src/ipc-openbsd.h  2021-02-23 
19:32:18.000000000 +0100
+++ new/wireguard-tools-1.0.20210315/src/ipc-openbsd.h  2021-03-15 
15:04:02.000000000 +0100
@@ -129,7 +129,8 @@
 
                if (wg_peer->p_flags & WG_PEER_HAS_PSK) {
                        memcpy(peer->preshared_key, wg_peer->p_psk, 
sizeof(peer->preshared_key));
-                       peer->flags |= WGPEER_HAS_PRESHARED_KEY;
+                       if (!key_is_zero(peer->preshared_key))
+                               peer->flags |= WGPEER_HAS_PRESHARED_KEY;
                }
 
                if (wg_peer->p_flags & WG_PEER_HAS_PKA) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wireguard-tools-1.0.20210223/src/ipc.c 
new/wireguard-tools-1.0.20210315/src/ipc.c
--- old/wireguard-tools-1.0.20210223/src/ipc.c  2021-02-23 19:32:18.000000000 
+0100
+++ new/wireguard-tools-1.0.20210315/src/ipc.c  2021-03-15 15:04:02.000000000 
+0100
@@ -7,6 +7,7 @@
 #include <stdlib.h>
 #include <errno.h>
 #include "containers.h"
+#include "ipc.h"
 
 struct string_list {
        char *buffer;
@@ -44,6 +45,8 @@
 #include "ipc-linux.h"
 #elif defined(__OpenBSD__)
 #include "ipc-openbsd.h"
+#elif defined(__FreeBSD__)
+#include "ipc-freebsd.h"
 #endif
 
 /* first\0second\0third\0forth\0last\0\0 */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wireguard-tools-1.0.20210223/src/pubkey.c 
new/wireguard-tools-1.0.20210315/src/pubkey.c
--- old/wireguard-tools-1.0.20210223/src/pubkey.c       2021-02-23 
19:32:18.000000000 +0100
+++ new/wireguard-tools-1.0.20210315/src/pubkey.c       2021-03-15 
15:04:02.000000000 +0100
@@ -11,7 +11,7 @@
 #include "subcommands.h"
 #include "ctype.h"
 
-int pubkey_main(int argc, char *argv[])
+int pubkey_main(int argc, const char *argv[])
 {
        uint8_t key[WG_KEY_LEN] __attribute__((aligned(sizeof(uintptr_t))));
        char base64[WG_KEY_LEN_BASE64];
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wireguard-tools-1.0.20210223/src/set.c 
new/wireguard-tools-1.0.20210315/src/set.c
--- old/wireguard-tools-1.0.20210223/src/set.c  2021-02-23 19:32:18.000000000 
+0100
+++ new/wireguard-tools-1.0.20210315/src/set.c  2021-03-15 15:04:02.000000000 
+0100
@@ -12,7 +12,7 @@
 #include "ipc.h"
 #include "subcommands.h"
 
-int set_main(int argc, char *argv[])
+int set_main(int argc, const char *argv[])
 {
        struct wgdevice *device = NULL;
        int ret = 1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wireguard-tools-1.0.20210223/src/setconf.c 
new/wireguard-tools-1.0.20210315/src/setconf.c
--- old/wireguard-tools-1.0.20210223/src/setconf.c      2021-02-23 
19:32:18.000000000 +0100
+++ new/wireguard-tools-1.0.20210315/src/setconf.c      2021-03-15 
15:04:02.000000000 +0100
@@ -98,7 +98,7 @@
        return true;
 }
 
-int setconf_main(int argc, char *argv[])
+int setconf_main(int argc, const char *argv[])
 {
        struct wgdevice *device = NULL;
        struct config_ctx ctx;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wireguard-tools-1.0.20210223/src/show.c 
new/wireguard-tools-1.0.20210315/src/show.c
--- old/wireguard-tools-1.0.20210223/src/show.c 2021-02-23 19:32:18.000000000 
+0100
+++ new/wireguard-tools-1.0.20210315/src/show.c 2021-03-15 15:04:02.000000000 
+0100
@@ -75,14 +75,14 @@
        return base64;
 }
 
-static char *maybe_key(const uint8_t maybe_key[static WG_KEY_LEN], bool 
have_it)
+static const char *maybe_key(const uint8_t maybe_key[static WG_KEY_LEN], bool 
have_it)
 {
        if (!have_it)
                return "(none)";
        return key(maybe_key);
 }
 
-static char *masked_key(const uint8_t masked_key[static WG_KEY_LEN])
+static const char *masked_key(const uint8_t masked_key[static WG_KEY_LEN])
 {
        const char *var = getenv("WG_HIDE_KEYS");
 
@@ -376,7 +376,7 @@
        return true;
 }
 
-int show_main(int argc, char *argv[])
+int show_main(int argc, const char *argv[])
 {
        int ret = 0;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wireguard-tools-1.0.20210223/src/showconf.c 
new/wireguard-tools-1.0.20210315/src/showconf.c
--- old/wireguard-tools-1.0.20210223/src/showconf.c     2021-02-23 
19:32:18.000000000 +0100
+++ new/wireguard-tools-1.0.20210315/src/showconf.c     2021-03-15 
15:04:02.000000000 +0100
@@ -18,7 +18,7 @@
 #include "ipc.h"
 #include "subcommands.h"
 
-int showconf_main(int argc, char *argv[])
+int showconf_main(int argc, const char *argv[])
 {
        char base64[WG_KEY_LEN_BASE64];
        char ip[INET6_ADDRSTRLEN];
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wireguard-tools-1.0.20210223/src/subcommands.h 
new/wireguard-tools-1.0.20210315/src/subcommands.h
--- old/wireguard-tools-1.0.20210223/src/subcommands.h  2021-02-23 
19:32:18.000000000 +0100
+++ new/wireguard-tools-1.0.20210315/src/subcommands.h  2021-03-15 
15:04:02.000000000 +0100
@@ -7,11 +7,11 @@
 #define SUBCOMMANDS_H
 
 extern const char *PROG_NAME;
-int show_main(int argc, char *argv[]);
-int showconf_main(int argc, char *argv[]);
-int set_main(int argc, char *argv[]);
-int setconf_main(int argc, char *argv[]);
-int genkey_main(int argc, char *argv[]);
-int pubkey_main(int argc, char *argv[]);
+int show_main(int argc, const char *argv[]);
+int showconf_main(int argc, const char *argv[]);
+int set_main(int argc, const char *argv[]);
+int setconf_main(int argc, const char *argv[]);
+int genkey_main(int argc, const char *argv[]);
+int pubkey_main(int argc, const char *argv[]);
 
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wireguard-tools-1.0.20210223/src/terminal.c 
new/wireguard-tools-1.0.20210315/src/terminal.c
--- old/wireguard-tools-1.0.20210223/src/terminal.c     2021-02-23 
19:32:18.000000000 +0100
+++ new/wireguard-tools-1.0.20210315/src/terminal.c     2021-03-15 
15:04:02.000000000 +0100
@@ -11,6 +11,7 @@
 #include <stdbool.h>
 #include <unistd.h>
 #include "ctype.h"
+#include "terminal.h"
 
 static bool color_mode(void)
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/wireguard-tools-1.0.20210223/src/uapi/freebsd/dev/if_wg/if_wg.h 
new/wireguard-tools-1.0.20210315/src/uapi/freebsd/dev/if_wg/if_wg.h
--- old/wireguard-tools-1.0.20210223/src/uapi/freebsd/dev/if_wg/if_wg.h 
1970-01-01 01:00:00.000000000 +0100
+++ new/wireguard-tools-1.0.20210315/src/uapi/freebsd/dev/if_wg/if_wg.h 
2021-03-15 15:04:02.000000000 +0100
@@ -0,0 +1,16 @@
+#ifndef __IF_WG_H__
+#define __IF_WG_H__
+
+#include <net/if.h>
+#include <netinet/in.h>
+
+struct wg_data_io {
+       char wgd_name[IFNAMSIZ];
+       void *wgd_data;
+       size_t wgd_size;
+};
+
+#define SIOCSWG _IOWR('i', 210, struct wg_data_io)
+#define SIOCGWG _IOWR('i', 211, struct wg_data_io)
+
+#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wireguard-tools-1.0.20210223/src/version.h 
new/wireguard-tools-1.0.20210315/src/version.h
--- old/wireguard-tools-1.0.20210223/src/version.h      2021-02-23 
19:32:18.000000000 +0100
+++ new/wireguard-tools-1.0.20210315/src/version.h      2021-03-15 
15:04:02.000000000 +0100
@@ -1,3 +1,3 @@
 #ifndef WIREGUARD_TOOLS_VERSION
-#define WIREGUARD_TOOLS_VERSION "1.0.20210223"
+#define WIREGUARD_TOOLS_VERSION "1.0.20210315"
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/wireguard-tools-1.0.20210223/src/wg-quick/freebsd.bash 
new/wireguard-tools-1.0.20210315/src/wg-quick/freebsd.bash
--- old/wireguard-tools-1.0.20210223/src/wg-quick/freebsd.bash  2021-02-23 
19:32:18.000000000 +0100
+++ new/wireguard-tools-1.0.20210315/src/wg-quick/freebsd.bash  2021-03-15 
15:04:02.000000000 +0100
@@ -8,6 +8,7 @@
 shopt -s extglob
 export LC_ALL=C
 
+exec 3>&2
 SELF="$(readlink -f "${BASH_SOURCE[0]}")"
 export PATH="${SELF%/*}:$PATH"
 
@@ -28,7 +29,7 @@
 ARGS=( "$@" )
 
 cmd() {
-       echo "[#] $*" >&2
+       echo "[#] $*" >&3
        "$@"
 }
 
@@ -114,6 +115,16 @@
 }
 
 add_if() {
+       local ret rc
+       if ret="$(cmd ifconfig wg create name "$INTERFACE" 2>&1 >/dev/null)"; 
then
+               return 0
+       fi
+       rc=$?
+       if [[ $ret == *"ifconfig: ioctl SIOCSIFNAME (set name): File exists"* 
]]; then
+               echo "$ret" >&3
+               return $rc
+       fi
+       echo "[!] Missing WireGuard kernel support ($ret). Falling back to slow 
userspace implementation." >&3
        cmd "${WG_QUICK_USERSPACE_IMPLEMENTATION:-wireguard-go}" "$INTERFACE"
 }
 
@@ -157,7 +168,11 @@
 
 del_if() {
        [[ $HAVE_SET_DNS -eq 0 ]] || unset_dns
-       cmd rm -f "/var/run/wireguard/$INTERFACE.sock"
+       if [[ -f /var/run/wireguard/$INTERFACE.sock ]]; then
+               cmd rm -f "/var/run/wireguard/$INTERFACE.sock"
+       else
+               cmd ifconfig "$INTERFACE" destroy
+       fi
        while if_exists; do
                # HACK: it would be nice to `route monitor` here and wait for 
RTM_IFANNOUNCE
                # but it turns out that the announcement is made before the 
interface
@@ -290,7 +305,6 @@
        # endpoints change.
        while read -r event; do
                [[ $event == RTM_* ]] || continue
-               [[ -e /var/run/wireguard/$INTERFACE.sock ]] || break
                if_exists || break
                [[ $AUTO_ROUTE4 -eq 1 || $AUTO_ROUTE6 -eq 1 ]] && 
set_endpoint_direct_route
                # TODO: set the mtu as well, but only if up
@@ -335,7 +349,7 @@
 }
 
 set_config() {
-       cmd wg setconf "$INTERFACE" <(echo "$WG_CONFIG")
+       echo "$WG_CONFIG" | cmd wg setconf "$INTERFACE" /dev/stdin
 }
 
 save_config() {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wireguard-tools-1.0.20210223/src/wg.c 
new/wireguard-tools-1.0.20210315/src/wg.c
--- old/wireguard-tools-1.0.20210223/src/wg.c   2021-02-23 19:32:18.000000000 
+0100
+++ new/wireguard-tools-1.0.20210315/src/wg.c   2021-03-15 15:04:02.000000000 
+0100
@@ -14,7 +14,7 @@
 
 static const struct {
        const char *subcommand;
-       int (*function)(int, char**);
+       int (*function)(int, const char**);
        const char *description;
 } subcommands[] = {
        { "show", show_main, "Shows the current configuration and device 
information" },
@@ -37,7 +37,7 @@
        fprintf(file, "You may pass `--help' to any of these subcommands to 
view usage.\n");
 }
 
-int main(int argc, char *argv[])
+int main(int argc, const char *argv[])
 {
        PROG_NAME = argv[0];
 
@@ -51,7 +51,7 @@
        }
 
        if (argc == 1) {
-               static char *new_argv[] = { "show", NULL };
+               static const char *new_argv[] = { "show", NULL };
                return show_main(1, new_argv);
        }
 

Reply via email to