)]}'
{
  "log": [
    {
      "commit": "025f00454fec8fd0816607a28c1ee6cd9a54b134",
      "tree": "b1946aaf367afb06f3f1e8aac8831fa5671e66c1",
      "parents": [
        "06a99cce2c9998f53eb30d2f258a9e5ff286445b"
      ],
      "author": {
        "name": "Kyle Evans",
        "email": "kevans@FreeBSD.org",
        "time": "Wed Jun 25 21:57:03 2025 -0500"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Mar 24 03:27:26 2026 +0100"
      },
      "message": "ipc: freebsd: add allowed-ip flags support for FreeBSD\n\nThe FreeBSD kernel flags will match what we define here in wg(8), just\npass them through and let the kernel sort it out.\n\nSigned-off-by: Kyle Evans \u003ckevans@FreeBSD.org\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "06a99cce2c9998f53eb30d2f258a9e5ff286445b",
      "tree": "a420e7349444eb2c0bc371b9c98f99241ffad22e",
      "parents": [
        "997ffa0c89b4a6a3998325ceeb55588bb0cf8017"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Mar 24 03:22:51 2026 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Mar 24 03:22:51 2026 +0100"
      },
      "message": "ipc: windows: support incremental allowed ips updates\n\nFollowing the Linux case, now support the same API on Windows.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "997ffa0c89b4a6a3998325ceeb55588bb0cf8017",
      "tree": "cb512f1ff43b1fb95bb88084b12c669c75aaa353",
      "parents": [
        "1090b17df4ad07a9f46f5723ad4f8e3839484dea"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sat Mar 21 12:20:43 2026 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sat Mar 21 12:20:43 2026 +0100"
      },
      "message": "global: bump copyright\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "1090b17df4ad07a9f46f5723ad4f8e3839484dea",
      "tree": "7cda2570946b3a45ec5860c8b6269c5730b0d9b1",
      "parents": [
        "49ce333da02056ae7b22ee2aeb6afe8aaed79b19"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Mar 20 22:07:25 2026 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sat Mar 21 11:42:07 2026 +0100"
      },
      "message": "wg: windows: raise min windows version to 10\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "49ce333da02056ae7b22ee2aeb6afe8aaed79b19",
      "tree": "b53b9201b0a3462160cee6e82dcc26548786cc8f",
      "parents": [
        "0a81a174dbde2371ddcf4b602ba0ecda3c5dbd67"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Feb 23 23:24:27 2026 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Feb 23 23:24:27 2026 +0100"
      },
      "message": "version: bump\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "0a81a174dbde2371ddcf4b602ba0ecda3c5dbd67",
      "tree": "96edceb360860963a8c9ac9775b0ad9954c53890",
      "parents": [
        "ede2c4804245d4069b629ef6e8c670ca033afdfc"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri May 23 20:22:37 2025 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Feb 23 23:23:04 2026 +0100"
      },
      "message": "syncconf: account for persistent keepalive removed from config file\n\nOtherwise removing a persistent keepalive from a config file wouldn\u0027t\nreflect on the runtime state.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "ede2c4804245d4069b629ef6e8c670ca033afdfc",
      "tree": "e6f2112ee6fc16387fe8262bf99cd139d35d954a",
      "parents": [
        "0cbe9938e1b1435a6ac394309c4884340240bb44"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Feb 23 23:10:48 2026 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Feb 23 23:10:51 2026 +0100"
      },
      "message": "config: preserve const correctness\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "0cbe9938e1b1435a6ac394309c4884340240bb44",
      "tree": "a1c15fc9558f7e31573e0c1c77780b3d23b4b6b9",
      "parents": [
        "ac74ed6d7dd4d77f56c7f05c053a5e645e0e33a0"
      ],
      "author": {
        "name": "Doug Freed",
        "email": "dwfreed@mtu.edu",
        "time": "Mon Apr 03 01:58:55 2023 -0400"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Feb 23 23:02:07 2026 +0100"
      },
      "message": "wg-quick@.service: add deps on wg-quick.target\n\nThese dependencies ensure that instances of this service are started\nbefore wg-quick.target is considered started, allowing other services\nto depend on wg-quick.target to mean \"all wg-quick services are started\"\n\nSigned-off-by: Doug Freed \u003cdwfreed@mtu.edu\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "ac74ed6d7dd4d77f56c7f05c053a5e645e0e33a0",
      "tree": "51ec80f9cd4ed0e97075357aabc432acd5a49e20",
      "parents": [
        "0b7d9821f2815973a2930ace28a3f73c205d0e5c"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Feb 23 22:54:42 2026 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Feb 23 22:54:42 2026 +0100"
      },
      "message": "wg-quick: linux: do not unnecessarily set sysctl\n\nIn some restrictive container namespaces, sysctl is locked down and\ncan\u0027t be changed. This shouldn\u0027t be a problem, though, at least in\ntheory, because net.ipv4.conf.all.src_valid_mark is already 1. However,\ncurrently wg-quick unconditionally sets it. Instead, check to see if\nit\u0027s already 1 before trying make it 1.\n\nSuggested-by: Dean P \u003cdean@apakossa.org\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "0b7d9821f2815973a2930ace28a3f73c205d0e5c",
      "tree": "a303913e99e623346e458199bf00b1bf97719221",
      "parents": [
        "d3b40aff964789a2a0533cb7a070592a75a996e3"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Jun 19 16:58:39 2025 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Jun 19 17:08:50 2025 +0200"
      },
      "message": "wg-quick: use addconf instead of setconf\n\nThe example in the man page at some point changed:\n\n-    \\fBPostUp \u003d wg set %i private-key \u003c(pass WireGuard/private-keys/%i)\\fP\n+    \\fBPreUp \u003d wg set %i private-key \u003c(pass WireGuard/private-keys/%i)\\fP\n\nThis is actually wrong because PreUp is followed by set_config(), which\ncalls `wg setconf`, which in turn deletes the private key from the\ninterface because it is missing from the configuration. Replacing this\nwith `wg addconf` is safe to do because the interface is newly created.\n\nSuggested-by: Matthias Dressel \u003ccode@deadcode.eu\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "d3b40aff964789a2a0533cb7a070592a75a996e3",
      "tree": "c0d2fd3f0e383e951f127320b22431841a6f1cd0",
      "parents": [
        "90deacd33da06534ee98d41c6e76e108b35cf077"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri May 23 20:59:38 2025 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri May 23 21:01:53 2025 +0200"
      },
      "message": "wg-quick: linux: deal with resolvconf migration more gracefully\n\nWhen Ubuntu systems upgrade from Debian\u0027s atrocious resolvconf to the\nsystemd-resolve symlink, they sometimes leave around\n/etc/resolvconf/interface-order, which then winds up breaking the\ndetection and passing the bogus \u0027tun.\u0027 prefix to systemd\u0027s resolvconf,\nresulting in failure. Work around this by only doing the \u0027tun.\u0027 prefix\nhack if resolvconf isn\u0027t a symlink. This is ugly but so it goes.\n\nReported-by: Andrei Borzenkov \u003carvidjaar@gmail.com\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "90deacd33da06534ee98d41c6e76e108b35cf077",
      "tree": "03a60d01cdecf85b62b362310b061a3cb0186a85",
      "parents": [
        "780182e37d2b5981171766b8f31bcefd64da7a43"
      ],
      "author": {
        "name": "Robyn Kosching",
        "email": "robyn@kosching.me",
        "time": "Wed Jan 15 12:33:50 2025 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri May 23 20:43:30 2025 +0200"
      },
      "message": "wg-quick: pass on # comments to {Pre,Post}{Up,Down}\n\nCurrently commands in {Pre,Post}{Up,Down} are stripped of everything\nstarting with the first #, even if the # is escaped or in a string. This\npatch leaves comment interpretation to the shell, as it can presumably\nalready handle the difference between comments and escaped #.\n\nSigned-off-by: Robyn Kosching \u003crobyn@kosching.me\u003e\n[Jason: massage commit message, port to other platforms]\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "780182e37d2b5981171766b8f31bcefd64da7a43",
      "tree": "304dd71cb13ed50300a6dc9fc60bf5493543bfd9",
      "parents": [
        "5150cd647073be1f1c12688aef291bdf17970154"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri May 23 20:22:37 2025 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri May 23 20:26:12 2025 +0200"
      },
      "message": "syncconf: account for psks removed from config file\n\nOtherwise removing a psk from a config file wouldn\u0027t reflect on the\nruntime state.\n\nNote that this could have been implemented more simply, by just setting\nWGPEER_HAS_PRESHARED_KEY on all of the file\u0027s peers, since the psk slot\nis zeroed by calloc in config.c, and this way ones with no set key will\nbe cleared. The downside is that this means every peer update will take\nthe handshake lock in the kernel, creating more work and possibly\ncontention:\n\n        if (preshared_key) {\n                down_write(\u0026peer-\u003ehandshake.lock);\n                memcpy(\u0026peer-\u003ehandshake.preshared_key, preshared_key,\n                       NOISE_SYMMETRIC_KEY_LEN);\n                up_write(\u0026peer-\u003ehandshake.lock);\n        }\n\nAvoid this by only setting it if there\u0027s a mismatch between the runtime\nand the file. Computationally this shouldn\u0027t make much of a difference\nbecause we can do it in the same iteration as the peer removal\ndetection.\n\nReported-by: Patrick Havelange \u003cpatrick.havelange_ext@softathome.com\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "5150cd647073be1f1c12688aef291bdf17970154",
      "tree": "9b843e6603ad4dc10a128b90c2be640bfda03a71",
      "parents": [
        "e2ecaaa739144997ccff89d6ad6ec81698ea6ced"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed May 21 23:03:08 2025 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed May 21 23:07:59 2025 +0200"
      },
      "message": "wg-quick: linux: use smallest mtu, not largest\n\nBy accident, this function was looking at the endpoint with the largest\nMTU rather than the smallest one.\n\nReported-by: Ismael Bouya \u003cismael@bouya.org\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "e2ecaaa739144997ccff89d6ad6ec81698ea6ced",
      "tree": "551bad2761e6283fd028d273540447b07fa7a400",
      "parents": [
        "2d6e041fefbb6ac0e16837ff9b325911aa3a7807"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed May 21 01:05:38 2025 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed May 21 01:05:38 2025 +0200"
      },
      "message": "version: bump\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "2d6e041fefbb6ac0e16837ff9b325911aa3a7807",
      "tree": "6f269bdd0f5ca08f9b497eb2ef89a29afc1cae15",
      "parents": [
        "a2dbc3377e0f16f57f856e696162da62ab5b3766"
      ],
      "author": {
        "name": "Ilia Shipitsin",
        "email": "chipitsine@gmail.com",
        "time": "Wed May 21 00:57:50 2025 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed May 21 00:58:11 2025 +0200"
      },
      "message": "config: handle strdup failure\n\nSigned-off-by: Ilia Shipitsin \u003cchipitsine@gmail.com\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "a2dbc3377e0f16f57f856e696162da62ab5b3766",
      "tree": "3bbbb0b0c2a25f037b8b5a103798efa82db99c97",
      "parents": [
        "dce8ac6e2fa30f8b07e84859f244f81b3c6b2353"
      ],
      "author": {
        "name": "TriangleSnake",
        "email": "trianglesnake2002@gmail.com",
        "time": "Mon May 05 15:13:06 2025 +0800"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed May 21 00:16:18 2025 +0200"
      },
      "message": "wg-quick: linux: add \u0027dev\u0027 to \u0027ip link add\u0027 to avoid keyword conflicts\n\nSigned-off-by: TriangleSnake \u003ctrianglesnake2002@gmail.com\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "dce8ac6e2fa30f8b07e84859f244f81b3c6b2353",
      "tree": "75bd5c981f2d8f8a5c68638acba3a69edee72398",
      "parents": [
        "0788f90810efde88cfa07ed96e7eca77c7f2eedd"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue May 20 22:12:39 2025 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue May 20 22:12:39 2025 +0200"
      },
      "message": "ipc: add stub for allowedips flags on other platforms\n\nOn UAPI, just pass along the -. On other platforms, return an error and\nadd a TODO comment.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "0788f90810efde88cfa07ed96e7eca77c7f2eedd",
      "tree": "4ad2ca7cf268a645ba0f7a9a76ab0ba712e6097a",
      "parents": [
        "13d190bc72ce1753fbf0d1d6828677d1bc743807"
      ],
      "author": {
        "name": "Jordan Rife",
        "email": "jordan@jrife.io",
        "time": "Sat May 17 12:29:51 2025 -0700"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue May 20 22:03:58 2025 +0200"
      },
      "message": "ipc: linux: support incremental allowed ips updates\n\nExtend the interface of `wg set` to leverage the WGALLOWEDIP_F_REMOVE_ME\nflag, a direct way of removing a single allowed ip from a peer,\nallowing for incremental updates to a peer\u0027s configuration. By default,\nallowed-ips fully replaces a peer\u0027s allowed ips using\nWGPEER_REPLACE_ALLOWEDIPS under the hood. When \u0027+\u0027 or \u0027-\u0027 is prepended\nto any ip in the list, wg clears WGPEER_F_REPLACE_ALLOWEDIPS and sets\nthe WGALLOWEDIP_F_REMOVE_ME flag on any ip prefixed with \u0027-\u0027.\n\n$ wg set wg0 peer \u003cPUBKEY\u003e allowed-ips +192.168.88.0/24,-192.168.0.1/32\n\nThis command means \"add 192.168.88.0/24 to this peer\u0027s allowed ips if\nnot present, and remove 192.168.0.1/32 if present\".\n\nUse -isystem so that headers in uapi/ take precedence over system\nheaders; otherwise, the build will fail on systems running kernels\nwithout the WGALLOWEDIP_F_REMOVE_ME flag.\n\nNote that this patch is meant to be merged alongside the kernel patch\nthat introduces the flag.\n\nSigned-off-by: Jordan Rife \u003cjordan@jrife.io\u003e\n[Jason: removed linux ifdefs; this will eventually come to other platforms too. minor style nits.]\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "13d190bc72ce1753fbf0d1d6828677d1bc743807",
      "tree": "7f717a77f4abe91dcfb793d6b843602c74730169",
      "parents": [
        "13f4ac4cb74b5a833fa7f825ba785b1e5774e84f"
      ],
      "author": {
        "name": "Kyle Evans",
        "email": "kevans@FreeBSD.org",
        "time": "Fri Apr 11 21:46:03 2025 -0500"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue May 20 21:59:23 2025 +0200"
      },
      "message": "ipc: freebsd: use AF_LOCAL for the control socket\n\nAF_INET assumes that IPv4 is built into the kernel, but it\u0027s completely\nvalid to build a kernel without it.  unix(4) sockets, on the other hand,\nare not-optional in the kernel build.  Given that interface ioctls can\nbe invoked on any kind of socket, switch to the safer one to avoid\nbreaking on IPv6-only kernels.\n\nSigned-off-by: Kyle Evans \u003ckevans@FreeBSD.org\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "13f4ac4cb74b5a833fa7f825ba785b1e5774e84f",
      "tree": "198559247d53267080d051a94797f1307c1ca1b0",
      "parents": [
        "729242a11466934f47690ddaf9a3465983b859e5"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Aug 04 16:04:36 2023 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Aug 04 16:04:36 2023 +0200"
      },
      "message": "ipc: linux: enforce IFNAMSIZ limit\n\nlibmnl doesn\u0027t check lengths, so do our own checking before copying the\ninterface name to the netlink buffer.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "729242a11466934f47690ddaf9a3465983b859e5",
      "tree": "8e6416a0d1c5b288b59100d4dd09f8dc5a6ff1d1",
      "parents": [
        "e6888dd74ee4215449517f43aba9c11a1633ea4e"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu May 18 03:17:02 2023 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu May 18 16:39:49 2023 +0200"
      },
      "message": "man: set private key in PreUp rather than PostUp\n\nThis is probably more sensible, since there\u0027s no point in letting\ntraffic flow before the interface is configured.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "e6888dd74ee4215449517f43aba9c11a1633ea4e",
      "tree": "04f7e1c38db20a607a535c2619349660cde17c60",
      "parents": [
        "b4f6b4f229d291daf7c35c6f1e7f4841cc6d69bc"
      ],
      "author": {
        "name": "Daniel Gröber",
        "email": "dxld@darkboxed.org",
        "time": "Wed Dec 07 19:00:31 2022 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu May 18 16:38:34 2023 +0200"
      },
      "message": "wg-quick: run PreUp hook after creating interface\n\nCurrently PreUp hooks run before the interface is created. This is\nproblematic for moving the device into a Linux VRFs as this will\ncurrently clear all assigned IPv6 addressess (possibly a bug), so if we\ndid this in PostUp (i.e. before add_addr) we\u0027ll have to manually re-add\nall assigned addresses. This is obviously less than ideal.\n\nInstead create the wg device just before running PreUp hooks. We apply\nthis to all platforms for consistency.\n\nTest case:\n\n    $ ip link add vrf-test type vrf table 1234\n    $ ip link add wg-test type wireguard\n    $ ip addr add dev wg-test 192.168.42.42/24\n    $ ip addr add dev wg-test fe80::/64\n\n    $ ip -br addr show wg-test\n    wg-test          DOWN           192.168.42.42/24 fe80::/64\n\n    $ ip link set dev wg-test master vrf-test\n\n    $ ip -br addr show wg-test\n    wg-test          DOWN           192.168.42.42/32\n\nSigned-off-by: Daniel Gröber \u003cdxld@darkboxed.org\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "b4f6b4f229d291daf7c35c6f1e7f4841cc6d69bc",
      "tree": "9586e7b81411c2e48195ae125a2da3d8a3cd5520",
      "parents": [
        "139aac59a5ab7da913d4b6dd62692fa90e2ccad4"
      ],
      "author": {
        "name": "Dmitry Selivanov",
        "email": "dseliv@gmail.com",
        "time": "Wed Feb 08 09:30:16 2023 +0300"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Feb 08 13:47:47 2023 -0300"
      },
      "message": "show: fix show all endpoints output\n\nCurrently \"wg show all endpoints\" prints interface name only once\nwhile other \"show all\" commands print it on each line as man says.\n\nSigned-off-by: Dmitry Selivanov \u003cdseliv@gmail.com\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "139aac59a5ab7da913d4b6dd62692fa90e2ccad4",
      "tree": "6c7fde8e6650632f980434611fcda3d986c43190",
      "parents": [
        "dbf49a7d17d69b8af365ce2521df110a4710c819"
      ],
      "author": {
        "name": "Kyle Evans",
        "email": "kevans@FreeBSD.org",
        "time": "Thu Nov 03 13:20:29 2022 -0500"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Nov 03 19:57:26 2022 +0100"
      },
      "message": "ipc: freebsd: NULL out some freed memory in kernel_set_device()\n\nThe `err` path in kernel_set_device() will attempt to free() allocated\nnvl_peers, but these two cases meant we could end up attempting a use\nafter free or a double free, as we rely on nvlist_destroy(NULL) being\na NOP as well as free(NULL).\n\nFreeBSD-Coverity:\t1500421\nSigned-off-by: Kyle Evans \u003ckevans@FreeBSD.org\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "dbf49a7d17d69b8af365ce2521df110a4710c819",
      "tree": "aa779b1d9233c4f5838e57f0e542a70b6d1f13a8",
      "parents": [
        "ca2e89ff21794b1853f628b8d5cb0f91eb140461"
      ],
      "author": {
        "name": "Kyle Evans",
        "email": "kevans@FreeBSD.org",
        "time": "Thu Nov 03 12:59:01 2022 -0500"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Nov 03 19:57:21 2022 +0100"
      },
      "message": "ipc: freebsd: avoid leaking memory in kernel_get_device()\n\nPrimarily, front-load validation of an allowed-ip entry to before we\nallocate `aip`, so that we don\u0027t need to free() it if we end up skipping\nthis entry.  Assert that `aip` is NULL after we exit the loop, as we\nshould have transfered ownership to the `peer` or freed it in all paths\nthrough the allowed-ip loop.\n\nFreeBSD-Coverity:\t1500405\nSigned-off-by: Kyle Evans \u003ckevans@FreeBSD.org\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "ca2e89ff21794b1853f628b8d5cb0f91eb140461",
      "tree": "4015574da7c48175ed6affd15b3ff765591b037e",
      "parents": [
        "7b2ae7aa2f52fbac65874a641cbfbb0182d0ba46"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Oct 31 15:38:58 2022 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Oct 31 15:39:30 2022 +0100"
      },
      "message": "show: apply const to right part of pointer\n\nWithout this -Wcast-qual complains:\n\nshow.c:30:43: warning: cast from \u0027const void *\u0027 to \u0027const void **\u0027 drops const qualifier [-Wcast-qual]\n        const struct wgpeer *a \u003d *(const void **)first, *b \u003d *(const void **)second;\n                                                 ^\nshow.c:30:71: warning: cast from \u0027const void *\u0027 to \u0027const void **\u0027 drops const qualifier [-Wcast-qual]\n        const struct wgpeer *a \u003d *(const void **)first, *b \u003d *(const void **)second;\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "7b2ae7aa2f52fbac65874a641cbfbb0182d0ba46",
      "tree": "cbc00493180a4b7dbc95b2b49afc196287f718cf",
      "parents": [
        "71799a8f6d1450b63071a21cad6ed434b348d3d5"
      ],
      "author": {
        "name": "Kyle Evans",
        "email": "kevans@FreeBSD.org",
        "time": "Fri Oct 28 20:45:05 2022 -0500"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sat Oct 29 03:51:47 2022 +0200"
      },
      "message": "ipc: freebsd: move if_wg path to reflect new in-tree location\n\nWhen we re-added if_wg to the tree, we changed directories in dev to\nstrip the if_ (we don\u0027t use this prefix for other interfaces\u0027\ndirectories). Adjust it here as a convenience, so that when we import\nwireguard-tools to FreeBSD the path will just work as-is with our usual\nbuild.\n\nSigned-off-by: Kyle Evans \u003ckevans@FreeBSD.org\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "71799a8f6d1450b63071a21cad6ed434b348d3d5",
      "tree": "20e5554c36e3b2b48fd89e00d8dcbec093d1067a",
      "parents": [
        "5b9c1d6d74376d4983a3055078225d95104194f0"
      ],
      "author": {
        "name": "Tom Yan",
        "email": "tom.ty89@gmail.com",
        "time": "Fri Jun 17 19:34:19 2022 +0800"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Jun 17 13:53:43 2022 +0200"
      },
      "message": "wg-quick: linux: prevent traffic from momentarily leaking into tunnel\n\nThe wireguard route table ip rule should stay as a no-op until the\n`suppress_prefixlength 0 table main` rule is in effect. Therefore, add\nthe wireguard default route to its route table after the latter rule is\nadded.\n\nSigned-off-by: Tom Yan \u003ctom.ty89@gmail.com\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "5b9c1d6d74376d4983a3055078225d95104194f0",
      "tree": "71e5d9f757d196b60f328a962c382bce2b9a657d",
      "parents": [
        "c0b68d2eafaf2b44df9377ba0844bc315163247e"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Jun 10 19:35:38 2022 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Jun 10 19:35:38 2022 +0200"
      },
      "message": "global: dual license core files as MIT for FreeBSD\n\nTo make it easier for FreeBSD to import wg(8), dual license the core\nfiles as MIT, so that they don\u0027t have any trouble.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "c0b68d2eafaf2b44df9377ba0844bc315163247e",
      "tree": "9b08a7fd3375191f05130d238044af0d83a5c1dd",
      "parents": [
        "1fd95708391088742c139010cc6b821add941dec"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue May 10 12:40:49 2022 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue May 10 12:40:49 2022 +0200"
      },
      "message": "wg-quick: android: use right regex for host-vs-IP\n\nLooks like the \"is valid ifname\" regex was copy and pasted from\nwg-quick.bash instead of the \"is valid IP\" regex.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "1fd95708391088742c139010cc6b821add941dec",
      "tree": "e50c297be39089753331ba075d839e2e8a9dce01",
      "parents": [
        "b906ecb614d93a69ef78c67bfd240554fbc95270"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Jan 04 13:07:49 2022 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Jan 04 13:07:49 2022 +0100"
      },
      "message": "reresolve-dns: use $EPOCHSECONDS instead of $(date +%s)\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "b906ecb614d93a69ef78c67bfd240554fbc95270",
      "tree": "37e2a9578d662a070fcc4cff0cfe488dc73aa271",
      "parents": [
        "1ee37b8e4833a25efe6f1fc0d5bdcb476148f4ba"
      ],
      "author": {
        "name": "Mikael Magnusson",
        "email": "mikma@users.sourceforge.net",
        "time": "Sat Nov 07 13:32:56 2020 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Oct 22 13:26:04 2021 -0600"
      },
      "message": "embeddable-wg-library: add named wg_endpoint union\n\nDefine wg_endpoint as a named union to allow users of the emeddable\nlibrary to use the type in function arguments, variables etc.\n\nSigned-off-by: Mikael Magnusson \u003cmikma@users.sourceforge.net\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "1ee37b8e4833a25efe6f1fc0d5bdcb476148f4ba",
      "tree": "663f3bb6728ae24853650b04f671b84dba006ddf",
      "parents": [
        "3ba6527130c502144e7388b900138bca6260f4e8"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Oct 06 17:18:40 2021 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Oct 06 17:18:40 2021 -0600"
      },
      "message": "ipc: use more clever PnP enumerator\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "3ba6527130c502144e7388b900138bca6260f4e8",
      "tree": "9657b5ec9f7d528b517e82bcd93327d1f6359c82",
      "parents": [
        "84ac6add7eaa08a95081933d016eebcf132499d0"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Sep 14 00:43:31 2021 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Sep 14 00:43:31 2021 +0200"
      },
      "message": "version: bump\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "84ac6add7eaa08a95081933d016eebcf132499d0",
      "tree": "1c4cc7edb9d87759e5d996a9eee35573052d667a",
      "parents": [
        "af260d529eaa4387632c3d8dc8b02fd11c54f6bb"
      ],
      "author": {
        "name": "Matt Dunwoodie",
        "email": "ncon@noconroy.net",
        "time": "Tue Sep 07 21:48:53 2021 +1000"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Sep 14 00:40:51 2021 +0200"
      },
      "message": "wg-quick: openbsd: set DNS with resolvd(8)\n\nOpenBSD has introduced a new daemon named resolvd(8) to manage\nresolv.conf. This creates problems with the old \"horrible way\" of\ncompletely replacing resolv.conf. Resolvd will attempt to merge manual\nchanges with DNS servers discovered through dhcpleased(8) and slaacd(8).\nUnfortunately, resolvd puts any manual modifications at the end of\nresolv.conf, meaning that the wg-quick name servers will be queried\nlast.\n\nThe process for handling multiple name servers (at least with libc) is\nto try a name server, and if the query times out, try the next, until\nout of name servers, then repeat trying all name servers until a maximum\nnumber of retries are performed. The name servers are queried in the\norder listed in resolv.conf and the timeout is 5 seconds.\n\nWith this patch, we ensure the wg-quick name server is first in\nresolv.conf (as route creates the name server with \"static\" priority),\nbut cannot ensure it is exclusive. Therfore, it may be possible that\nqueries are leaked to other name servers if the wg-quick name server\ndoesn\u0027t respond within 5 seconds.\n\nWe have another problem however, and that is if resolvd detects unwind\nis running, it will set 127.0.0.1 as the only name server in\nresolv.conf. unwind does not have deterministic name server selection in\nthe default configuration.  This means, all a user would need to do to\ninadvertently cause persistent query leaks would be to run `rcctl enable\nunwind`.\n\nThere are warnings added when these situations may occur.\n\nThe next step is to add an exclusive flag and search to route and\nresolvd.\n\nReported-by: Matthieu Herrb \u003cmatthieu@herrb.eu\u003e\nSigned-off-by: Matt Dunwoodie \u003cncon@noconroy.net\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "af260d529eaa4387632c3d8dc8b02fd11c54f6bb",
      "tree": "173a2cde19239d9a58041c235a2a76adb5dc483e",
      "parents": [
        "b3aafa6103be853678b4c74664e2fcdfba597b55"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Sep 09 23:22:17 2021 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Sep 09 23:36:29 2021 +0200"
      },
      "message": "wg-quick: android: adjust for android 12\n\nhttps://android-review.googlesource.com/c/platform/system/netd/+/1671532\n\nReported-by: engstk \u003ceng.stk@sapo.pt\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "b3aafa6103be853678b4c74664e2fcdfba597b55",
      "tree": "4877ca6b4a4ca7d14e12f0ab5a6936ee62451b46",
      "parents": [
        "52597c351554ec7f39c0817d45771d1f30572f4b"
      ],
      "author": {
        "name": "Laura Hausmann",
        "email": "laura@hausmann.dev",
        "time": "Thu Aug 12 21:29:15 2021 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Aug 12 22:03:04 2021 +0200"
      },
      "message": "wg-quick: darwin: account for \"link#XX\" gateways\n\nOn macOS, under specific configurations, the `netstat -nr -f inet` and\n`netstat -nr -f inet6` outputs break gateway collection.\n\nSigned-off-by: Laura Hausmann \u003claura@hausmann.dev\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "52597c351554ec7f39c0817d45771d1f30572f4b",
      "tree": "5d9c7e1636b7c878eaad08a0ab284137db461a57",
      "parents": [
        "fabe24df3a350eac3fc6deade05b20108cb13c39"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sat Jul 31 00:39:58 2021 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sat Jul 31 01:01:53 2021 +0200"
      },
      "message": "ipc: windows: use devpkey instead of nci for name\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "fabe24df3a350eac3fc6deade05b20108cb13c39",
      "tree": "8ac3b4abafd847fad100ff33905e40c7eebfd229",
      "parents": [
        "c70bea7a314fa71c8ff44581079c6dd2d090ad63"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Jun 30 01:56:24 2021 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Jul 20 13:24:18 2021 +0200"
      },
      "message": "ipc: windows: don\u0027t display disabled adapters\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "c70bea7a314fa71c8ff44581079c6dd2d090ad63",
      "tree": "cc296de274752b88e05d35c8adfb5599f1d52820",
      "parents": [
        "d58df7ed10f0595484dc78c6b457425e03109f7f"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Jun 24 01:52:06 2021 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Jul 20 13:24:18 2021 +0200"
      },
      "message": "ipc: remove windows elevation\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "d58df7ed10f0595484dc78c6b457425e03109f7f",
      "tree": "673c87b19fe50cea3f658ffa6fb1625bbe469cc7",
      "parents": [
        "f65c82456d4acdf96f3c0ce769bcecb61550f367"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Jun 24 13:35:48 2021 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Jul 20 13:24:18 2021 +0200"
      },
      "message": "ipc: cache windows lookups to avoid O(n^2) with nested lookups\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "f65c82456d4acdf96f3c0ce769bcecb61550f367",
      "tree": "2e5aa6ab3fdc30bc930ad3934361220b40c0cb7a",
      "parents": [
        "9a7e4364b1eef3fd34928fbf967a982c8bf2019d"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Jun 23 15:43:39 2021 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Jul 20 13:24:18 2021 +0200"
      },
      "message": "ipc: add wireguard-nt support\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "9a7e4364b1eef3fd34928fbf967a982c8bf2019d",
      "tree": "c55c0632736df7609c1828ef21897f11da90438b",
      "parents": [
        "197689a3cd310859a194ec0bebe6bf50c97171ba"
      ],
      "author": {
        "name": "Hangbin Liu",
        "email": "liuhangbin@gmail.com",
        "time": "Mon May 17 16:17:30 2021 +0800"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon May 17 11:43:06 2021 +0200"
      },
      "message": "contrib/launchd: fix xml syntax error\n\nThe current plist xml gets error \"DOCTYPE improperly terminated\" with xml\nsyntax checker[1]. The example in apple doc[2] also doesn\u0027t have semicolon\nat the end of DOCTYPE line.\n\n[1] https://www.w3schools.com/xml/xml_validator.asp\n[2] https://opensource.apple.com/source/launchd/launchd-257/launchd/doc/HOWTO.html\n\nFixes: b30e74b5956a (\"wg-quick: darwin: support being called from launchd\")\nSigned-off-by: Hangbin Liu \u003cliuhangbin@gmail.com\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "197689a3cd310859a194ec0bebe6bf50c97171ba",
      "tree": "b62990400af30def09c88f2d727a8149a4068eb2",
      "parents": [
        "ecb1ea29d71e850d245f89ac709cf77438dc7b02"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu May 06 12:54:29 2021 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu May 06 12:54:29 2021 +0200"
      },
      "message": "man: mention BSD debugging\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "ecb1ea29d71e850d245f89ac709cf77438dc7b02",
      "tree": "cbc20f55a2b86b3ec8fc64ab851c61269e5b5cfa",
      "parents": [
        "96e42feb3f41e2161141d4958e2637d9dee6f90a"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sat Apr 24 16:43:19 2021 -0400"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sat Apr 24 16:43:19 2021 -0400"
      },
      "message": "version: bump\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "96e42feb3f41e2161141d4958e2637d9dee6f90a",
      "tree": "a261fe6e018748e093f1718eaca7afb9ccc970bb",
      "parents": [
        "3124afbea3c7e04e89ad98db4d1d621f491b531a"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Apr 20 21:31:45 2021 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Apr 20 21:36:19 2021 -0600"
      },
      "message": "wg-quick: kill route monitor when loop terminates\n\nIf the route monitor doesn\u0027t attempt to write more to stdout, then this\nleaves a process hanging around. Kill it explicitly. We also switch to\nusing exec in the process substitution, to reduce a bash process.\n\nCloses: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id\u003d255286\nReported-by: Christos Chatzaras \u003cchris@cretaforce.gr\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "3124afbea3c7e04e89ad98db4d1d621f491b531a",
      "tree": "d1b041693e74f36d133e6ea3d22fc4c320bde6fb",
      "parents": [
        "163cef8b9013898bbe0d0b8d4afd25264e999858"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun Apr 18 20:40:02 2021 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun Apr 18 20:40:02 2021 -0600"
      },
      "message": "wg-quick: freebsd: use ifconfig for determining if interface is up\n\nWe no longer need the arp hack, as these bugs have been fixed in the\nFreeBSD kernel.\n\nThis partially reverts 090639ae90fb45ac05e3158e1e31e5bf15fd9559.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "163cef8b9013898bbe0d0b8d4afd25264e999858",
      "tree": "5d37355d9391480eff3059589f73040f755a6140",
      "parents": [
        "a43f0b634e714cd5cddff373b00c964a57e7b7fc"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Mar 23 12:28:22 2021 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Mar 23 12:29:33 2021 -0600"
      },
      "message": "wg-quick: freebsd: do not assume point-to-point interface flag\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "a43f0b634e714cd5cddff373b00c964a57e7b7fc",
      "tree": "543b951a15d18318775a7465c00e0214fe1f2ce3",
      "parents": [
        "622408872fd6f3a58e98e88d39d30e98968314fa"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun Mar 21 10:15:32 2021 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun Mar 21 10:15:53 2021 -0600"
      },
      "message": "wg-quick: freebsd: check for socket using -S, not -f\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "622408872fd6f3a58e98e88d39d30e98968314fa",
      "tree": "41b9dc1a4ea533dfc017b6d88841f484a07fcfd2",
      "parents": [
        "9c811e0f2d87b84388d1a3b78865384940b30e10"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Mar 15 08:04:02 2021 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Mar 15 08:04:02 2021 -0600"
      },
      "message": "version: bump\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "9c811e0f2d87b84388d1a3b78865384940b30e10",
      "tree": "c6614078224688b4bcf89f93eb33cee64d50bcdb",
      "parents": [
        "4e4867dc95126f27bbb487a5d72c58916ca53e93"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sat Mar 13 21:20:19 2021 -0700"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sat Mar 13 21:20:19 2021 -0700"
      },
      "message": "wg-quick: freebsd: avoid writing private keys to /tmp\n\nFreeBSD\u0027s bash doesn\u0027t handle \u003c(...) safely, creating a temporary file\ninstead of using /proc/self/fd/N like on Linux. Work around this by\nusing a simple pipeline with /dev/stdin.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "4e4867dc95126f27bbb487a5d72c58916ca53e93",
      "tree": "e5a8994c3d6eed8304d45b5a3676f240524aeeec",
      "parents": [
        "f51349c52b8d343f8e7d63015415516771b884dc"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Mar 11 15:35:15 2021 -0700"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Mar 11 15:35:15 2021 -0700"
      },
      "message": "ipc: uniformly ignore preshared keys that are zero\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "f51349c52b8d343f8e7d63015415516771b884dc",
      "tree": "044ec51cd25b4eb9562294fbaf16ed1286b92a5d",
      "parents": [
        "576e40056d78b236578fa03db46527926d891d14"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Mar 10 20:24:40 2021 -0700"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Mar 11 15:02:07 2021 -0700"
      },
      "message": "ipc: freebsd: add initial FreeBSD support\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "576e40056d78b236578fa03db46527926d891d14",
      "tree": "a806e023e6855566dd162bd3fcb6620b8f7188f5",
      "parents": [
        "396b85280ae2dbb46ee494ca2b35000028f855d6"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Mar 10 21:17:59 2021 -0700"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Mar 11 09:05:14 2021 -0700"
      },
      "message": "wg-quick: freebsd: add kernel support\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "396b85280ae2dbb46ee494ca2b35000028f855d6",
      "tree": "3110d621513c1d952f0061ab745a6d4ad263558c",
      "parents": [
        "88bc64366e939f916a02e8ac5c341c8df766bac4"
      ],
      "author": {
        "name": "Kyle Evans",
        "email": "kevans@FreeBSD.org",
        "time": "Wed Mar 10 08:44:36 2021 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Mar 10 17:35:20 2021 -0700"
      },
      "message": "wireguard-tools: drag in headers for prototypes\n\nipc.c and terminal.c provide definitions for prototypes in their\nrespective headers, drag those in.\n\nSigned-off-by: Kyle Evans \u003ckevans@FreeBSD.org\u003e\n"
    },
    {
      "commit": "88bc64366e939f916a02e8ac5c341c8df766bac4",
      "tree": "6f0cb88ccfe72cf08820b11b7232f696ac3b3b67",
      "parents": [
        "957702af94af22e10377493608befd9750815b5d"
      ],
      "author": {
        "name": "Kyle Evans",
        "email": "kevans@FreeBSD.org",
        "time": "Wed Mar 10 08:43:56 2021 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Mar 10 17:35:18 2021 -0700"
      },
      "message": "wireguard-tools: const correctness\n\nFixes much of the noise from a FreeBSD WARNS\u003d6 build of wg(8)\n\nSigned-off-by: Kyle Evans \u003ckevans@FreeBSD.org\u003e\n"
    },
    {
      "commit": "957702af94af22e10377493608befd9750815b5d",
      "tree": "bdced2722f665ba19ed136185d2e151b1ce7c018",
      "parents": [
        "6d3b876492298d0e311053567ecd7084972a8bc8"
      ],
      "author": {
        "name": "Florian Eckert",
        "email": "fe@dev.tdt.de",
        "time": "Thu May 14 11:35:20 2020 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Mar 05 14:37:11 2021 -0700"
      },
      "message": "Makefile: fix version indicator\n\nIf we execute `wg --version` we get a different version string that does\nnot match with the version string in the openwrt makefile.\n\nCurrent version string:\n`wireguard-tools vreboot-13159-gac5caa2718 -https://git.zx2c4.com/wireguard-tools/`\n\nCorrected versions string:\n`wireguard-tools v1.0.20200319 -https://git.zx2c4.com/wireguard-tools/`\n\nSigned-off-by: Florian Eckert \u003cfe@dev.tdt.de\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "6d3b876492298d0e311053567ecd7084972a8bc8",
      "tree": "d2a9df290bc8c35fa3c0da0485390453b03a890d",
      "parents": [
        "e8fa0f662f2541952e745d9c7fff0eeaec538a5c"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Feb 23 19:32:18 2021 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Feb 23 19:32:18 2021 +0100"
      },
      "message": "version: bump\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "e8fa0f662f2541952e745d9c7fff0eeaec538a5c",
      "tree": "22c15d9eb53fdfef9d28a586b822ea188d1cbb97",
      "parents": [
        "f97e81c0940606334baebda232c24b7af4717ec8"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Jan 27 15:22:20 2021 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Jan 27 15:22:20 2021 +0100"
      },
      "message": "ipc: read trailing responses after set operation\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "f97e81c0940606334baebda232c24b7af4717ec8",
      "tree": "a7bcc63b1a80e393980f0aebe093fb2bd4850291",
      "parents": [
        "457f96b65e4f7241aceaa7cb9c7bbce7be1a2212"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Jan 26 23:02:37 2021 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Jan 26 23:02:37 2021 +0100"
      },
      "message": "man: LOG_LEVEL variables changed nae\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "457f96b65e4f7241aceaa7cb9c7bbce7be1a2212",
      "tree": "fd31c75511840023621f7324676a911d4f652a62",
      "parents": [
        "66ed611bd0f477fbe5792212d0a88076bec9bf3b"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Jan 25 21:22:36 2021 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Jan 25 21:22:36 2021 +0100"
      },
      "message": "ipc: do not use fscanf with trailing \\n\n\nIf the stream is not closed, then this winds up hanging forever. So\nremove the trailing \\n\\n and check manually after.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "66ed611bd0f477fbe5792212d0a88076bec9bf3b",
      "tree": "85377520fc5b4145c7f995b11a5b5d449727ffed",
      "parents": [
        "7e506135f7da13cc13b51f2d0db47da364b2de7b"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Dec 18 23:40:15 2020 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Dec 18 23:40:15 2020 +0100"
      },
      "message": "sticky-sockets: do not use SO_REUSEADDR\n\nThis makes little sense for unicast UDP sockets.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "7e506135f7da13cc13b51f2d0db47da364b2de7b",
      "tree": "5ca7df80fa754211c23c135714148bf349737723",
      "parents": [
        "5e24780d4cb259b7392db0fe7f0c2f129bd598f3"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun Dec 13 22:29:09 2020 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun Dec 13 22:29:09 2020 +0100"
      },
      "message": "completion: add help and syncconf completions\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "5e24780d4cb259b7392db0fe7f0c2f129bd598f3",
      "tree": "beb062831792a4b15e74ac654148d4a7a01ce1ad",
      "parents": [
        "843a2566970880c91d7252dc3d5646dcb79c2d78"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Dec 11 14:17:27 2020 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Dec 11 14:17:27 2020 +0100"
      },
      "message": "wincompat: do not elevate by default\n\nElevation makes it detach from the console, which means the results are\nhidden.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "843a2566970880c91d7252dc3d5646dcb79c2d78",
      "tree": "a9d055cf0d79a489dbf49c1a34f99074b1ce2f67",
      "parents": [
        "66714e2c47bb0ff55e6f8360301af833f879b6ac"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Dec 11 13:59:14 2020 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Dec 11 13:59:14 2020 +0100"
      },
      "message": "wincompat: add resource and manifest and enable lto\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "66714e2c47bb0ff55e6f8360301af833f879b6ac",
      "tree": "837eacc887e0cb6343b67858a6072b103d258ad6",
      "parents": [
        "b637db46928de35b0e48db59770eabe9721812a4"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Nov 09 11:46:01 2020 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Nov 09 11:46:01 2020 +0100"
      },
      "message": "wincompat: recent mingw has inet_ntop/inet_pton\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "b637db46928de35b0e48db59770eabe9721812a4",
      "tree": "ed150c9d47bb80e3865496501ce61fba9ae7bd9e",
      "parents": [
        "c3f26340e63b9f815a752af0a8bbc757b7f0cac1"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Oct 29 12:44:08 2020 +0100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Oct 29 12:44:47 2020 +0100"
      },
      "message": "embeddable-wg-library: sync latest from netlink.h\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "c3f26340e63b9f815a752af0a8bbc757b7f0cac1",
      "tree": "2f55d4ff2891c868aec56c8df21f0388d11b353b",
      "parents": [
        "265e81a344defb05bd7d420d125cde169b8995af"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun Oct 18 22:27:22 2020 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Oct 19 13:29:28 2020 +0200"
      },
      "message": "wg-quick: openbsd: no use for userspace support\n\nWith alignment between the kernel and userspace, along with userspace\npackages, we can now rely on the kernel in the future always having\nwg(4).\n\nThis also simplifies the interface selection logic, and stores the\nwg-quick interface name as the description.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "265e81a344defb05bd7d420d125cde169b8995af",
      "tree": "c0be861638f4e1e88b3f5e0d9aaf4e45bac33313",
      "parents": [
        "7a321ce808ef9cec1f45cce92befcc9e170d3aa9"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Sep 15 16:19:49 2020 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Sep 15 16:20:22 2020 +0200"
      },
      "message": "wg-quick: android: do not free iterated pointer\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "7a321ce808ef9cec1f45cce92befcc9e170d3aa9",
      "tree": "d0389a3fc258d949687bb47ee0866ca0cf4f2ecb",
      "parents": [
        "91fbeb4a926b8a75274d012a3994ef337dca51d9"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Aug 27 10:22:09 2020 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Aug 27 10:22:09 2020 +0200"
      },
      "message": "version: bump\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "91fbeb4a926b8a75274d012a3994ef337dca51d9",
      "tree": "b5738ff567d29c528690efa171fe52604bcd3be6",
      "parents": [
        "9a0d65e2afbd6e418c883e0de8555b4fac29f1d5"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Aug 27 10:17:42 2020 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Aug 27 10:19:31 2020 +0200"
      },
      "message": "Revert \"wg-quick: wait on process substitutions\"\n\nThis reverts commit 26683f6c9ad18d9914b23312c221f27fd5ecab51, which\nmeans the old problem comes back. That\u0027s an issue. But waiting on\nprocess substitutions is not available with commonly used bash versions:\n\n  # wg-quick up demo\n  [#] ip link add demo type wireguard\n  [#] wg setconf demo /dev/fd/63\n  /usr/bin/wg-quick: line 251: wait: pid 2955 is not a child of this shell\n  [#] ip link delete dev demo\n\nThis means we have to wait a few years before fixing this issue. IOW,\nbash limitation; can\u0027t fix.\n\nReported-by: Theodore Mozzo \u003ctheodore.mozzo@gmail.com\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "9a0d65e2afbd6e418c883e0de8555b4fac29f1d5",
      "tree": "cb53dba886fa5341e82187e39bd321b23b9c219a",
      "parents": [
        "fbca033c69d7073033e05507293e5101d29b43ef"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Aug 25 21:54:22 2020 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Aug 25 21:54:22 2020 +0200"
      },
      "message": "wg-quick: android: use iproute2 to bring up interface instead of ndc\n\nAndroid 11\u0027s ndc regresses even more, but it turns out that netd doesn\u0027t\nneed to track up/down state via direct invocation, so just set the\ninterface up by way of normal iproute2.\n\nReported-by: Harsh Shandilya \u003cme@msfjarvis.dev\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "fbca033c69d7073033e05507293e5101d29b43ef",
      "tree": "814971f09e780fd41e13f81a19c90382922bf72a",
      "parents": [
        "26683f6c9ad18d9914b23312c221f27fd5ecab51"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Aug 20 12:06:22 2020 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Aug 20 12:06:22 2020 +0200"
      },
      "message": "version: bump\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "26683f6c9ad18d9914b23312c221f27fd5ecab51",
      "tree": "227e8e54141c29a967c61f2a01a4d464d8b2a17a",
      "parents": [
        "13fac76a71f25631d7415ba457bdab267d0950d4"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Aug 03 10:18:40 2020 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Aug 06 17:47:14 2020 +0200"
      },
      "message": "wg-quick: wait on process substitutions\n\nBash does not propagate error values, which is a bummer, but process\nsubstitutions are a useful feature. Introduce a new idiom to deal with\nthis: either \"; wait $!\" after the line to propagate the error, or \"||\ntrue\" to indicate explicitly that we don\u0027t care about the error.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "13fac76a71f25631d7415ba457bdab267d0950d4",
      "tree": "76914bbdca93094302783c211f539ff5c6c1bdd0",
      "parents": [
        "cf2bf0952498059c6a8987bb54b58987748af7e2"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Aug 04 14:49:21 2020 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Aug 06 17:47:14 2020 +0200"
      },
      "message": "ctype: use non-locale-specific ctype.h\n\nWe also make these constant time, even though we\u0027re never distinguishing\nbetween bits of a secret using them. From that perspective, though, this\nis markedly better than the locale-specific table lookups in glibc, even\nthough base64 characters span two cache lines and valid private keys\nmust hit both.\n\nCo-authored-by: Samuel Neves \u003csneves@dei.uc.pt\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\nSigned-off-by: Samuel Neves \u003csneves@dei.uc.pt\u003e\n"
    },
    {
      "commit": "cf2bf0952498059c6a8987bb54b58987748af7e2",
      "tree": "b90a7801ba3b68b5c4cbecf2dd7e57b0c982f282",
      "parents": [
        "b4a8a18797335de6d3d416e14a2ad769219426db"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Aug 04 14:04:52 2020 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Aug 06 17:47:14 2020 +0200"
      },
      "message": "pubkey: isblank is a subset of isspace\n\nTherefore, there\u0027s no need to test both.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "b4a8a18797335de6d3d416e14a2ad769219426db",
      "tree": "c133bd56e636f862e119ff93670ece209f499433",
      "parents": [
        "a66219fa107e1bf0a03ebbbc405879c1f0a826c5"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Jul 28 10:57:54 2020 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Tue Jul 28 14:19:10 2020 +0200"
      },
      "message": "man: wg-quick: use syncconf instead of addconf for strip example\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "a66219fa107e1bf0a03ebbbc405879c1f0a826c5",
      "tree": "635935fdfd8dbe930f1619e1056b7fd79a5b962a",
      "parents": [
        "eb4665ecf082033d986c64453e2becce19bc7af7"
      ],
      "author": {
        "name": "Domonkos P. Tomcsanyi",
        "email": "domi@tomcsanyi.net",
        "time": "Fri Jul 24 16:21:52 2020 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Jul 24 16:23:47 2020 +0200"
      },
      "message": "systemd: add reload target to systemd unit\n\nUsers can now run `systemctl reload wg-quick@wgnet0`, as described in\nthe wg-quick(8) man page. Note that this won\u0027t adjust Address\u003d, DNS\u003d, or\nthe various other non-wg(8) fields.\n\nSigned-off-by: Domonkos P. Tomcsanyi \u003cdomi@tomcsanyi.net\u003e\n[zx2c4: use exec for bash commands to reduce excess forks, and rewrite\n        commit message]\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "eb4665ecf082033d986c64453e2becce19bc7af7",
      "tree": "a105defb5f8849d5d12f330eaec0ccc3d59a1fb5",
      "parents": [
        "197995d50c398db0565d77b577c2a34c6e4f7466"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon May 25 18:05:14 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon May 25 18:07:49 2020 -0600"
      },
      "message": "wincompat: fold random into genkey\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "197995d50c398db0565d77b577c2a34c6e4f7466",
      "tree": "e6ee08a41410757870b5e219b31808e30bda51c8",
      "parents": [
        "c45d422a93d57f6fdec429640ff7f96b396beed4"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon May 25 17:13:20 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon May 25 17:21:18 2020 -0600"
      },
      "message": "ipc: split into separate files per-platform\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "c45d422a93d57f6fdec429640ff7f96b396beed4",
      "tree": "9be3e47dbb96706f5707965fc6450c6dd0626a08",
      "parents": [
        "56cb39fb225e284c21d3a33efeb84eff1fd94798"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed May 13 18:29:41 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed May 13 18:29:41 2020 -0600"
      },
      "message": "version: bump\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "56cb39fb225e284c21d3a33efeb84eff1fd94798",
      "tree": "625d2dfc5d73b2c7b869a2cc35e9476e4657cac1",
      "parents": [
        "0cfde946b1ffc35fff57501f3d9eb675a2dd2dba"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed May 13 00:37:46 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed May 13 01:55:32 2020 -0600"
      },
      "message": "ipc: openbsd: switch to array ioctl interface\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "0cfde946b1ffc35fff57501f3d9eb675a2dd2dba",
      "tree": "3326a36a259302de9309a39a92faee5865040317",
      "parents": [
        "8137c14dc63ee371108237ead4f15e06ffc97f5e"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon May 11 21:31:05 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon May 11 21:31:05 2020 -0600"
      },
      "message": "Makefile: remember to install all systemd units\n\nReported-by: Unit 193 \u003cunit193@unit193.net\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "8137c14dc63ee371108237ead4f15e06ffc97f5e",
      "tree": "7b7b0d8654be845be13cf9d386aed2f1b3b63f5b",
      "parents": [
        "10b4e7677f984894e92e7de73d734d40ac0af7bb"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun May 10 22:20:44 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun May 10 22:20:44 2020 -0600"
      },
      "message": "version: bump\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "10b4e7677f984894e92e7de73d734d40ac0af7bb",
      "tree": "e34a5d7eaef1c9c4887b1db29e5249dd12caa73d",
      "parents": [
        "9eda95d084d72ef7412e1af359242d6839215c48"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun May 10 00:58:31 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun May 10 22:15:08 2020 -0600"
      },
      "message": "wg-quick: cleanup openbsd support\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "9eda95d084d72ef7412e1af359242d6839215c48",
      "tree": "d56790fe3bffbc22916fbd578cf6f2c190a3f5b5",
      "parents": [
        "d4a32c97fd0953acfe18ce4eb3bdea8b33af1d23"
      ],
      "author": {
        "name": "Matt Dunwoodie",
        "email": "ncon@noconroy.net",
        "time": "Sun May 10 02:06:14 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun May 10 22:10:02 2020 -0600"
      },
      "message": "wg-quick: add support for openbsd kernel implementation\n\nSigned-off-by: Matt Dunwoodie \u003cncon@noconroy.net\u003e\n"
    },
    {
      "commit": "d4a32c97fd0953acfe18ce4eb3bdea8b33af1d23",
      "tree": "ed066f4b8f68cc8c4815814f00b55b0c94ad4027",
      "parents": [
        "5c66f6ecd19037845ea3587ef1cc03928f3fa76b"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun May 10 00:24:46 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun May 10 22:10:02 2020 -0600"
      },
      "message": "ipc: cleanup openbsd support\n\nWe also add a wg_if.h in the fallback include path.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "5c66f6ecd19037845ea3587ef1cc03928f3fa76b",
      "tree": "71c22ad4d79b56036ae136962506e7d1b1b3e68b",
      "parents": [
        "b60e30e19607555f8a640e72391a77bcac254e28"
      ],
      "author": {
        "name": "Matt Dunwoodie",
        "email": "ncon@noconroy.net",
        "time": "Sun Dec 29 12:48:38 2019 +1100"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun May 10 02:05:42 2020 -0600"
      },
      "message": "ipc: add support for openbsd kernel implementation\n\nSigned-off-by: Matt Dunwoodie \u003cncon@noconroy.net\u003e\n"
    },
    {
      "commit": "b60e30e19607555f8a640e72391a77bcac254e28",
      "tree": "b04403f722d5a11c749819c26e9eb2c098098c1e",
      "parents": [
        "7f236c79570642d466c5acab890b26c3a07f4f7a"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sat May 09 23:20:03 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun May 10 01:28:57 2020 -0600"
      },
      "message": "ipc: remove extra space\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "7f236c79570642d466c5acab890b26c3a07f4f7a",
      "tree": "efae9b46fc54a72fb408e56a0fb11960f0ebfb97",
      "parents": [
        "238ca4059136f5cd8a2f7defbf1772a9eafe8625"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri May 08 23:15:50 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sat May 09 00:29:53 2020 -0600"
      },
      "message": "wg-quick: support dns search domains\n\nIf DNS\u003d has an IP in it, treat it as a DNS server. If DNS\u003d has a non-IP\nin it, treat it as a DNS search domain.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "238ca4059136f5cd8a2f7defbf1772a9eafe8625",
      "tree": "6eaabc5b7496939ac3a0d08afc5d135bf4bf2feb",
      "parents": [
        "891fb523a23a33a8e3832319877159753bfd057a"
      ],
      "author": {
        "name": "Martin Hauke",
        "email": "mardnh@gmx.de",
        "time": "Fri May 01 23:55:55 2020 +0200"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri May 01 15:58:59 2020 -0600"
      },
      "message": "systemd: add wg-quick.target\n\nAdd file wg-quick.target, which allows starting and stopping all\nwg-quick@.service instances at once.\n\nSigned-off-by: Martin Hauke \u003cmardnh@gmx.de\u003e\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "891fb523a23a33a8e3832319877159753bfd057a",
      "tree": "6a3db35db998b93886685f15203b02e6c098e3fe",
      "parents": [
        "3377409bb334e8d371f254586210e3884b7e7c75"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Apr 20 22:52:35 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Apr 20 22:52:35 2020 -0600"
      },
      "message": "terminal: specialize color_mode to stdout only\n\nBy specializing this to stdout, we can cache the isatty result.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "3377409bb334e8d371f254586210e3884b7e7c75",
      "tree": "2672d86621d420b09df6cd3baecafbe3c82d4260",
      "parents": [
        "e189f9942d54b6900f7140c1f4a41312cb6889eb"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Apr 08 23:51:16 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Wed Apr 08 23:54:42 2020 -0600"
      },
      "message": "git: add gitattributes so tarball doesn\u0027t have gitignore files\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "e189f9942d54b6900f7140c1f4a41312cb6889eb",
      "tree": "d4e9d8b78f29c0dbf5f730ec12515d7db2389a95",
      "parents": [
        "20e28d2b0f4ae522cf14abcc5a29f9ade24f217b"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun Apr 05 19:38:11 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Sun Apr 05 19:38:11 2020 -0600"
      },
      "message": "wg-quick: android: support application whitelist\n\nPrior we only supported a blacklist, but actually a whitelist is an\neasier algorithm because that\u0027s internally how netd considers it, so we\ndon\u0027t need to find range spans. This commit adds an IncludedApplications\nkey.\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "20e28d2b0f4ae522cf14abcc5a29f9ade24f217b",
      "tree": "5799079464b67d6580e9414616880020e3493189",
      "parents": [
        "dc00c8c577bb8260da9c9c937af907751d7ffd24"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Apr 03 23:14:07 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Fri Apr 03 23:14:07 2020 -0600"
      },
      "message": "highlighter: insist on 256-bit keys, not 257-bit or 258-bit\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "dc00c8c577bb8260da9c9c937af907751d7ffd24",
      "tree": "8422265cc26d2313ee865a3e039580ec12493703",
      "parents": [
        "a8063adc8ae9b4fc9848500e93f94bee8ad2e585"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Mar 23 00:06:24 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Mon Mar 23 00:06:24 2020 -0600"
      },
      "message": "Makefile: simplify silent cleaning\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "a8063adc8ae9b4fc9848500e93f94bee8ad2e585",
      "tree": "c8dd879015580bb9f05f00b6d8a0c168594c178a",
      "parents": [
        "be969b7fe1ceda4f2df839e622ec1e27db0667c9"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Mar 19 16:46:35 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Mar 19 16:46:35 2020 -0600"
      },
      "message": "version: bump\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "be969b7fe1ceda4f2df839e622ec1e27db0667c9",
      "tree": "0425d6db2a0638fd182deb77ad3c7490a5fe2aac",
      "parents": [
        "e98b84ab84ca11948f5b3dc0dddea9e0d8fd21e4"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Mar 19 16:33:14 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Mar 19 16:33:14 2020 -0600"
      },
      "message": "wincompat: use new protected prefix on Windows\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    },
    {
      "commit": "e98b84ab84ca11948f5b3dc0dddea9e0d8fd21e4",
      "tree": "a5e10000e36cce847556e3715fa59faba3a465c7",
      "parents": [
        "828ffc88cd6d6813a82520640d09e7827bf2dcd2"
      ],
      "author": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Mar 19 16:29:27 2020 -0600"
      },
      "committer": {
        "name": "Jason A. Donenfeld",
        "email": "Jason@zx2c4.com",
        "time": "Thu Mar 19 16:29:27 2020 -0600"
      },
      "message": "wincompat: use string_list instead of inflatable_buffer\n\nSigned-off-by: Jason A. Donenfeld \u003cJason@zx2c4.com\u003e\n"
    }
  ],
  "next": "828ffc88cd6d6813a82520640d09e7827bf2dcd2"
}
