Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package nebula for openSUSE:Factory checked 
in at 2025-10-11 22:51:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/nebula (Old)
 and      /work/SRC/openSUSE:Factory/.nebula.new.5300 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "nebula"

Sat Oct 11 22:51:06 2025 rev:10 rq:1310730 version:1.9.7

Changes:
--------
--- /work/SRC/openSUSE:Factory/nebula/nebula.changes    2025-07-24 
18:46:58.229239430 +0200
+++ /work/SRC/openSUSE:Factory/.nebula.new.5300/nebula.changes  2025-10-11 
22:52:21.566623496 +0200
@@ -1,0 +2,9 @@
+Sat Oct 11 14:48:33 UTC 2025 - Richard Rahl <[email protected]>
+
+- update to version 1.9.7:
+  * Disable sending recv_error messages when a packet is received outside the
+    allowable counter window
+  * Improve error messages and remove some unnecessary fatal conditions in the
+    generic udp listener
+
+-------------------------------------------------------------------

Old:
----
  nebula-1.9.6.tar.gz

New:
----
  nebula-1.9.7.tar.gz

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

Other differences:
------------------
++++++ nebula.spec ++++++
--- /var/tmp/diff_new_pack.pT14kE/_old  2025-10-11 22:52:22.202650383 +0200
+++ /var/tmp/diff_new_pack.pT14kE/_new  2025-10-11 22:52:22.214650889 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           nebula
-Version:        1.9.6
+Version:        1.9.7
 Release:        0
 Summary:        A scalable overlay networking tool
 License:        MIT
@@ -29,7 +29,7 @@
 BuildRequires:  git-core
 BuildRequires:  golang-packaging
 BuildRequires:  zstd
-BuildRequires:  golang(API) >= 1.23.6
+BuildRequires:  golang(API) >= 1.24.0
 
 %description
 Nebula is a scalable overlay networking tool with a focus on performance,
@@ -44,7 +44,7 @@
 This package only includes the %{name}-cert binary.
 
 %prep
-%autosetup -a1
+%autosetup -a1 -p1
 
 %build
 go build -buildmode=pie -mod=vendor -ldflags "-X main.Build=%{version}-dirty" 
-o %{name} ./cmd/%{name}

++++++ _service ++++++
--- /var/tmp/diff_new_pack.pT14kE/_old  2025-10-11 22:52:22.274653426 +0200
+++ /var/tmp/diff_new_pack.pT14kE/_new  2025-10-11 22:52:22.278653595 +0200
@@ -3,7 +3,7 @@
   <service name="tar_scm" mode="manual">
     <param name="url">https://github.com/slackhq/nebula.git</param>
     <param name="scm">git</param>
-    <param name="revision">refs/tags/v1.9.6</param>
+    <param name="revision">refs/tags/v1.9.7</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="versionrewrite-pattern">v(.*)</param>
     <param name="package-meta">yes</param>

++++++ nebula-1.9.6.tar.gz -> nebula-1.9.7.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nebula-1.9.6/.git/HEAD new/nebula-1.9.7/.git/HEAD
--- old/nebula-1.9.6/.git/HEAD  2025-07-18 14:39:33.000000000 +0200
+++ new/nebula-1.9.7/.git/HEAD  2025-10-10 17:31:46.000000000 +0200
@@ -1 +1 @@
-105e0ec66c11d57c06c5f1c52a064be3b50e4d25
+7c3f5339508c7dbc74eea7f925d31b28bafa1b45
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nebula-1.9.6/.git/ORIG_HEAD 
new/nebula-1.9.7/.git/ORIG_HEAD
--- old/nebula-1.9.6/.git/ORIG_HEAD     2025-07-18 14:39:33.000000000 +0200
+++ new/nebula-1.9.7/.git/ORIG_HEAD     2025-10-10 17:31:46.000000000 +0200
@@ -1 +1 @@
-105e0ec66c11d57c06c5f1c52a064be3b50e4d25
+7c3f5339508c7dbc74eea7f925d31b28bafa1b45
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nebula-1.9.6/.git/config new/nebula-1.9.7/.git/config
--- old/nebula-1.9.6/.git/config        2025-07-18 14:39:33.000000000 +0200
+++ new/nebula-1.9.7/.git/config        2025-10-10 17:31:46.000000000 +0200
@@ -1,11 +1,15 @@
 [core]
-       repositoryformatversion = 0
+       repositoryformatversion = 1
        filemode = true
        bare = false
        logallrefupdates = true
 [remote "origin"]
        url = https://github.com/slackhq/nebula.git
        fetch = +refs/heads/*:refs/remotes/origin/*
+       promisor = true
+       partialclonefilter = tree:0
 [branch "master"]
        remote = origin
        merge = refs/heads/master
+[extensions]
+       partialClone = origin
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nebula-1.9.6/.git/hooks/pre-commit.sample 
new/nebula-1.9.7/.git/hooks/pre-commit.sample
--- old/nebula-1.9.6/.git/hooks/pre-commit.sample       2025-07-18 
14:39:33.000000000 +0200
+++ new/nebula-1.9.7/.git/hooks/pre-commit.sample       2025-10-10 
17:31:46.000000000 +0200
@@ -28,7 +28,7 @@
        # Note that the use of brackets around a tr range is ok here, (it's
        # even required, for portability to Solaris 10's /usr/bin/tr), since
        # the square bracket bytes happen to fall in the designated range.
-       test $(git diff --cached --name-only --diff-filter=A -z $against |
+       test $(git diff-index --cached --name-only --diff-filter=A -z $against |
          LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0
 then
        cat <<\EOF
Binary files old/nebula-1.9.6/.git/index and new/nebula-1.9.7/.git/index differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nebula-1.9.6/.git/logs/HEAD 
new/nebula-1.9.7/.git/logs/HEAD
--- old/nebula-1.9.6/.git/logs/HEAD     2025-07-18 14:39:33.000000000 +0200
+++ new/nebula-1.9.7/.git/logs/HEAD     2025-10-10 17:31:46.000000000 +0200
@@ -1,2 +1,2 @@
-0000000000000000000000000000000000000000 
91eff0341802468ac5d53c3510cbbcd94ed560bc Andreas Lorenz 
<[email protected]> 1753277393 +0200 clone: from 
https://github.com/slackhq/nebula.git
-91eff0341802468ac5d53c3510cbbcd94ed560bc 
105e0ec66c11d57c06c5f1c52a064be3b50e4d25 Andreas Lorenz 
<[email protected]> 1753277394 +0200 checkout: moving from 
master to refs/tags/v1.9.6
+0000000000000000000000000000000000000000 
45c1d3eab386287182ac228c8ec8c9beaf3b1211 Richard Rahl <[email protected]> 
1760193592 +0200  clone: from https://github.com/slackhq/nebula.git
+45c1d3eab386287182ac228c8ec8c9beaf3b1211 
7c3f5339508c7dbc74eea7f925d31b28bafa1b45 Richard Rahl <[email protected]> 
1760193597 +0200  checkout: moving from master to refs/tags/v1.9.7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nebula-1.9.6/.git/logs/refs/heads/master 
new/nebula-1.9.7/.git/logs/refs/heads/master
--- old/nebula-1.9.6/.git/logs/refs/heads/master        2025-07-18 
14:39:33.000000000 +0200
+++ new/nebula-1.9.7/.git/logs/refs/heads/master        2025-10-10 
17:31:46.000000000 +0200
@@ -1 +1 @@
-0000000000000000000000000000000000000000 
91eff0341802468ac5d53c3510cbbcd94ed560bc Andreas Lorenz 
<[email protected]> 1753277393 +0200 clone: from 
https://github.com/slackhq/nebula.git
+0000000000000000000000000000000000000000 
45c1d3eab386287182ac228c8ec8c9beaf3b1211 Richard Rahl <[email protected]> 
1760193592 +0200  clone: from https://github.com/slackhq/nebula.git
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nebula-1.9.6/.git/logs/refs/remotes/origin/HEAD 
new/nebula-1.9.7/.git/logs/refs/remotes/origin/HEAD
--- old/nebula-1.9.6/.git/logs/refs/remotes/origin/HEAD 2025-07-18 
14:39:33.000000000 +0200
+++ new/nebula-1.9.7/.git/logs/refs/remotes/origin/HEAD 2025-10-10 
17:31:46.000000000 +0200
@@ -1 +1 @@
-0000000000000000000000000000000000000000 
91eff0341802468ac5d53c3510cbbcd94ed560bc Andreas Lorenz 
<[email protected]> 1753277393 +0200 clone: from 
https://github.com/slackhq/nebula.git
+0000000000000000000000000000000000000000 
45c1d3eab386287182ac228c8ec8c9beaf3b1211 Richard Rahl <[email protected]> 
1760193592 +0200  clone: from https://github.com/slackhq/nebula.git
Binary files 
old/nebula-1.9.6/.git/objects/pack/pack-55cf3bbc3c6428b5ac15e3511eb3425f40a71d61.idx
 and 
new/nebula-1.9.7/.git/objects/pack/pack-55cf3bbc3c6428b5ac15e3511eb3425f40a71d61.idx
 differ
Binary files 
old/nebula-1.9.6/.git/objects/pack/pack-55cf3bbc3c6428b5ac15e3511eb3425f40a71d61.pack
 and 
new/nebula-1.9.7/.git/objects/pack/pack-55cf3bbc3c6428b5ac15e3511eb3425f40a71d61.pack
 differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/nebula-1.9.6/.git/objects/pack/pack-55cf3bbc3c6428b5ac15e3511eb3425f40a71d61.promisor
 
new/nebula-1.9.7/.git/objects/pack/pack-55cf3bbc3c6428b5ac15e3511eb3425f40a71d61.promisor
--- 
old/nebula-1.9.6/.git/objects/pack/pack-55cf3bbc3c6428b5ac15e3511eb3425f40a71d61.promisor
   1970-01-01 01:00:00.000000000 +0100
+++ 
new/nebula-1.9.7/.git/objects/pack/pack-55cf3bbc3c6428b5ac15e3511eb3425f40a71d61.promisor
   2025-10-10 17:31:46.000000000 +0200
@@ -0,0 +1,216 @@
+0017794f4638f1a1b4e469619a9824accac6ccea 
0017794f4638f1a1b4e469619a9824accac6ccea
+026bfbd4bf01a2e63e2602c542d72fe1dc79ea83 
026bfbd4bf01a2e63e2602c542d72fe1dc79ea83
+02eaad9e7e8a47c55e7df5fc06ab39396b1f9e21 
02eaad9e7e8a47c55e7df5fc06ab39396b1f9e21
+07146ab31355f68386d156efa1cb6e38fd957f02 
07146ab31355f68386d156efa1cb6e38fd957f02
+082906d9b996ace359ff6725b5235afb096c5583 
082906d9b996ace359ff6725b5235afb096c5583
+09a181d6d2b3679dec68446bd6c8366add39139d 
09a181d6d2b3679dec68446bd6c8366add39139d
+0b199a5ad77b9710ea16d938b9673a5a6fd451fd 
0b199a5ad77b9710ea16d938b9673a5a6fd451fd
+0bb2345ac0bc40f01a8a0ec0e4939503cd911990 
0bb2345ac0bc40f01a8a0ec0e4939503cd911990
+0be7f978b641716b97ddd7e1aa23b76e9bcb5513 
0be7f978b641716b97ddd7e1aa23b76e9bcb5513
+0caf86a4d76001da9e2b89e6218fa6e78440f542 
0caf86a4d76001da9e2b89e6218fa6e78440f542
+0dd82286ff15e235a158b31c7a6bfe5925c7c68d 
0dd82286ff15e235a158b31c7a6bfe5925c7c68d
+0e28bb425b095e5ab683df554ce269e1c7fe2dbb 
0e28bb425b095e5ab683df554ce269e1c7fe2dbb
+102ddb3262f7251addc9188c3bbcedfbb1061638 
102ddb3262f7251addc9188c3bbcedfbb1061638
+10e8472c5e6892adfeba1a8bd4dfa6c18915486d 
10e8472c5e6892adfeba1a8bd4dfa6c18915486d
+129744fd2513138b0d3269fcdf61bdc5a1f0bd78 
129744fd2513138b0d3269fcdf61bdc5a1f0bd78
+12a848794037c671b6d016d099c517138ef8b9ea 
12a848794037c671b6d016d099c517138ef8b9ea
+131879d2bda28c0d995ece3c7d0125e8cc918edf 
131879d2bda28c0d995ece3c7d0125e8cc918edf
+14ba2ce145c06795b4387de56029e160697140b2 
14ba2ce145c06795b4387de56029e160697140b2
+16e6a680fefc2fc02952634fce616297c1725157 
16e6a680fefc2fc02952634fce616297c1725157
+16e768ee42b7416f77f5f2f603688c8e28679d17 
16e768ee42b7416f77f5f2f603688c8e28679d17
+174b2419295f96e03b91375aa00e340a736878a1 
174b2419295f96e03b91375aa00e340a736878a1
+1856877edd8c720151972053861e24edae427321 
1856877edd8c720151972053861e24edae427321
+1b72a0ffd5e12ab8c21c85c811a0dda470745594 
1b72a0ffd5e12ab8c21c85c811a0dda470745594
+1b777c3743a9f9aee4f0bdb020a0c49becbd3bfc 
1b777c3743a9f9aee4f0bdb020a0c49becbd3bfc
+1c1842da5532f71f64ab20a23e3ceade57046140 
1c1842da5532f71f64ab20a23e3ceade57046140
+1c1e3c50f06fd892d70291164b419ff60ecc456c 
1c1e3c50f06fd892d70291164b419ff60ecc456c
+1db60a7c41b17e09f1f24f0ed795b514f3edcab4 
1db60a7c41b17e09f1f24f0ed795b514f3edcab4
+1de3c196d8cd91143d395a01f6e5406ab9890be0 
1de3c196d8cd91143d395a01f6e5406ab9890be0
+1e27a6bf56c7aa0c7f0e6d43b2f21b3c9a6049ad 
1e27a6bf56c7aa0c7f0e6d43b2f21b3c9a6049ad
+2034405a70048b4afbf04c625828ee3819324bef 
2034405a70048b4afbf04c625828ee3819324bef
+221ab778e868eced82cdb8751ee35ff10bfbd0c6 
221ab778e868eced82cdb8751ee35ff10bfbd0c6
+261ed3642b694b55ba1cf8b6ec6a7033693548de 
261ed3642b694b55ba1cf8b6ec6a7033693548de
+2ab97dba062208bcb6ffc32bef8347d586751038 
2ab97dba062208bcb6ffc32bef8347d586751038
+2beca66c91c38c5ee8036319e29fe439c94d4195 
2beca66c91c38c5ee8036319e29fe439c94d4195
+2bf1d725d0776ef0846a9c7c18d0b446ecde8eac 
2bf1d725d0776ef0846a9c7c18d0b446ecde8eac
+2bf480f22f46e452d7e6126f4877ab7812735368 
2bf480f22f46e452d7e6126f4877ab7812735368
+2e6d34b5faa44aa8eb00dcc8d5ef9772e8f62771 
2e6d34b5faa44aa8eb00dcc8d5ef9772e8f62771
+2e92e7e2046e6a6a2d24b5503680147dc29a005d 
2e92e7e2046e6a6a2d24b5503680147dc29a005d
+2f8efbfb9c3c73aa551a992a8cfb0111667b38a5 
2f8efbfb9c3c73aa551a992a8cfb0111667b38a5
+2fab9274b8c46eb5c8415ac1c7c67ff8ff645919 
2fab9274b8c46eb5c8415ac1c7c67ff8ff645919
+2fd2ff665a07420fc61da940806bf1cb98f8e374 
2fd2ff665a07420fc61da940806bf1cb98f8e374
+30e0965b9512a84c879dae7dea2e98dc07e4b6bc 
30e0965b9512a84c879dae7dea2e98dc07e4b6bc
+311afc24ea9e31343f8e9be650e715f1a98e67ca 
311afc24ea9e31343f8e9be650e715f1a98e67ca
+32de1a0dc422823c07c82e7a01370d3970311b1d 
32de1a0dc422823c07c82e7a01370d3970311b1d
+34c2a71c969d0ee15cc00315989be6e1cf0ee5bb 
34c2a71c969d0ee15cc00315989be6e1cf0ee5bb
+34fe17e5902aebb08a0a2e04d7c713919ff28c35 
34fe17e5902aebb08a0a2e04d7c713919ff28c35
+356e58903c80f91edf169bf8feb4f01738abf3e7 
356e58903c80f91edf169bf8feb4f01738abf3e7
+36b0fc94c25000a774e77f2953ec2627f2c74705 
36b0fc94c25000a774e77f2953ec2627f2c74705
+36d043bcd53f5526b521f8c3dce5c1bb1115f02a 
36d043bcd53f5526b521f8c3dce5c1bb1115f02a
+38dbef62f8db5a796c503ae9c91b37f3e0b1e62c 
38dbef62f8db5a796c503ae9c91b37f3e0b1e62c
+3a61d186b89a7dce20daeaf9253399f1806614d8 
3a61d186b89a7dce20daeaf9253399f1806614d8
+3b69159ad93ce3fb1c56da2ad24c40b04a355949 
3b69159ad93ce3fb1c56da2ad24c40b04a355949
+3b7cdd1c9a1d4efbf1082648c0d6e712525bc7a0 
3b7cdd1c9a1d4efbf1082648c0d6e712525bc7a0
+3b7d5859a33a410f6b66e33c78a920ce9b277c40 
3b7d5859a33a410f6b66e33c78a920ce9b277c40
+3eb085920fb79bb590408e163d0d46b1b25cec5f 
3eb085920fb79bb590408e163d0d46b1b25cec5f
+400e275b469b6bf0d21ecbfc628fa55d68263571 
400e275b469b6bf0d21ecbfc628fa55d68263571
+40c7fc5d2ddb829e975340837b2bfbf596ecf063 
40c7fc5d2ddb829e975340837b2bfbf596ecf063
+42c32c8a520c9b03a2a0b61f0e16c0913a686750 
42c32c8a520c9b03a2a0b61f0e16c0913a686750
+44d874659e00ff3b34c38bef65ad60e81bd2728b 
44d874659e00ff3b34c38bef65ad60e81bd2728b
+451dac533c8735a622115df6321b3323dc9e0e74 
451dac533c8735a622115df6321b3323dc9e0e74
+48c5a978375782660aa4d688f511a7ad786b182d 
48c5a978375782660aa4d688f511a7ad786b182d
+496f84c278ad092dff6d5f6e66bc0004012b24c5 
496f84c278ad092dff6d5f6e66bc0004012b24c5
+49ac19fb1dc998b15a9b26b4792f7056e6fab5aa 
49ac19fb1dc998b15a9b26b4792f7056e6fab5aa
+4b1d0bd0d028528610d5f38b77a6e9937ea07a1c 
4b1d0bd0d028528610d5f38b77a6e9937ea07a1c
+4c236aeed55c552d69aef89ebf5fd9a8d5f6648a 
4c236aeed55c552d69aef89ebf5fd9a8d5f6648a
+4db474f42c27e2c10f85dbf21298ac3ae5bf0c54 
4db474f42c27e2c10f85dbf21298ac3ae5bf0c54
+52d5297acf175af825dea3b30503c07e3cb77d28 
52d5297acf175af825dea3b30503c07e3cb77d28
+53d373866942a4874b77d2578789999e90a9c929 
53d373866942a4874b77d2578789999e90a9c929
+547037c5a10a71380bc2e12a5ff4b9389e3a73d9 
547037c5a10a71380bc2e12a5ff4b9389e3a73d9
+55068f31b3acc61768fc384cc6683ea605c1fd2a 
55068f31b3acc61768fc384cc6683ea605c1fd2a
+5510324577e5132312f0440ea0686c0a3ecb7e12 
5510324577e5132312f0440ea0686c0a3ecb7e12
+55974f0f30cc47c64fb6f6aa4634f73d013acfc6 
55974f0f30cc47c64fb6f6aa4634f73d013acfc6
+55d441f4a8017b2ea30eae55137c52f2829dba5f 
55d441f4a8017b2ea30eae55137c52f2829dba5f
+56dd1c2513560fe82a7ecb896af203744f4b1b5b 
56dd1c2513560fe82a7ecb896af203744f4b1b5b
+57990a7943a518013e8a86e0c3d8e99c9fadc01f 
57990a7943a518013e8a86e0c3d8e99c9fadc01f
+59d38a910513c77e6d936e72a74f51f824ec46c2 
59d38a910513c77e6d936e72a74f51f824ec46c2
+5afeaeabe191d7878ca66eebf370d07572c8ae18 
5afeaeabe191d7878ca66eebf370d07572c8ae18
+5cf0a028abab5fa3606ff15513ae87cab10aac95 
5cf0a028abab5fa3606ff15513ae87cab10aac95
+5dd355ca24f262cc7778b5d9f4d95c591a06c80d 
5dd355ca24f262cc7778b5d9f4d95c591a06c80d
+5ff87bd8fa033114469783f5a3b9c78e23955c01 
5ff87bd8fa033114469783f5a3b9c78e23955c01
+6135f36c0e14ae67c346e4c9e19ec79b7fb205f8 
6135f36c0e14ae67c346e4c9e19ec79b7fb205f8
+61989581b57d3e7d8fd446f6bedd052e19546fd9 
61989581b57d3e7d8fd446f6bedd052e19546fd9
+647dd72b801f3609c1fa55816cd2b1931f591206 
647dd72b801f3609c1fa55816cd2b1931f591206
+65ef31a5656c7b49517e3d1c70a75c2a53ff0599 
65ef31a5656c7b49517e3d1c70a75c2a53ff0599
+66b4851e9e4fd460146b90618f77faaf5a3e8eaf 
66b4851e9e4fd460146b90618f77faaf5a3e8eaf
+692c1840da4afc594e1aee2daea89109023d02d4 
692c1840da4afc594e1aee2daea89109023d02d4
+6bf6a8ded9fb99bde5affb206cfff7c696e47565 
6bf6a8ded9fb99bde5affb206cfff7c696e47565
+6d04027aa7ab62201683f852fd13d8e70bd045a2 
6d04027aa7ab62201683f852fd13d8e70bd045a2
+6d5c8a433279de7637aed7ab48574b65540a8d54 
6d5c8a433279de7637aed7ab48574b65540a8d54
+6df893c1670d288edc6bda7b99b4883ef6a34865 
6df893c1670d288edc6bda7b99b4883ef6a34865
+6f5249703c5c383b5c6db79c58c992d4937c7c07 
6f5249703c5c383b5c6db79c58c992d4937c7c07
+7061de6acf773ff4e53f59a42fc5d00a4bb5d6a6 
7061de6acf773ff4e53f59a42fc5d00a4bb5d6a6
+70b07f4e3252539a0ddd7fe3954c244716787e4f 
70b07f4e3252539a0ddd7fe3954c244716787e4f
+71b83f433fdac1cd69384227ded09527a559c452 
71b83f433fdac1cd69384227ded09527a559c452
+7242c72ac919b54b3bc8c206e307b3441f7652e2 
7242c72ac919b54b3bc8c206e307b3441f7652e2
+7276dfa1325163a2fa2c31506d9ecda2773c802d 
7276dfa1325163a2fa2c31506d9ecda2773c802d
+7323d1203dfe86339abdc2d09b9c3a36e9ed1489 
7323d1203dfe86339abdc2d09b9c3a36e9ed1489
+73576546981aea68ec60ecef9aa66df7a8a2fab8 
73576546981aea68ec60ecef9aa66df7a8a2fab8
+796b96d1c402326528b4ba3c12ee9d92d0e212e9 
796b96d1c402326528b4ba3c12ee9d92d0e212e9
+7aac1289f73262e69ef73251c4267e993ec412ad 
7aac1289f73262e69ef73251c4267e993ec412ad
+7d8f2eb8fbd90b7d895b6587331446edb1f3146b 
7d8f2eb8fbd90b7d895b6587331446edb1f3146b
+8129560efeaf185ef1ef3cac5cd78383995b145a 
8129560efeaf185ef1ef3cac5cd78383995b145a
+814c77a1126feea315c49216ee8b1412a9f7600a 
814c77a1126feea315c49216ee8b1412a9f7600a
+8354c094ea61d80dd3d9462e303d4261ffcb1892 
8354c094ea61d80dd3d9462e303d4261ffcb1892
+84362efe75be3af7f0f2976b257b470dcdce28b6 
84362efe75be3af7f0f2976b257b470dcdce28b6
+855815a7bb26ae7fdfda34c1abe906265143084f 
855815a7bb26ae7fdfda34c1abe906265143084f
+87cc216f81f3ff0eaf745b3762e434005997f919 
87cc216f81f3ff0eaf745b3762e434005997f919
+886e024406d4d75c30ed22ed7b0929b7555a1524 
886e024406d4d75c30ed22ed7b0929b7555a1524
+895b0df358ff8d66c48e9f649c91affffdaa6a79 
895b0df358ff8d66c48e9f649c91affffdaa6a79
+89f94772682096261658d8ff92fb3298a82427b3 
89f94772682096261658d8ff92fb3298a82427b3
+8a56d667e4edddbee885bb109067a8d6e945fc66 
8a56d667e4edddbee885bb109067a8d6e945fc66
+8ae78f3cbd78d69821a1a499df8016e781139f5d 
8ae78f3cbd78d69821a1a499df8016e781139f5d
+8c3dca558ce2b3443f1cd95ce86d7dfde3fa7dbd 
8c3dca558ce2b3443f1cd95ce86d7dfde3fa7dbd
+8c88439248a753c368b833ee55e8310c03737afe 
8c88439248a753c368b833ee55e8310c03737afe
+8d0eaa1dbb78fb9df513030d3187829ac57afd6d 
8d0eaa1dbb78fb9df513030d3187829ac57afd6d
+8d5e6c14ae680a1259afd494b278f41290b4ecbf 
8d5e6c14ae680a1259afd494b278f41290b4ecbf
+91297ab00d1166e3c3cb540aeb479ec80735b65c 
91297ab00d1166e3c3cb540aeb479ec80735b65c
+94e868cc2a3e395aefd09ed3b86bec597b6c138e 
94e868cc2a3e395aefd09ed3b86bec597b6c138e
+95abe018ec6a5ddccd0e3900e9b3b03ece7df6e6 
95abe018ec6a5ddccd0e3900e9b3b03ece7df6e6
+95d9893ef37f8cd4dbb02cacf5d3b4d0d0cd626e 
95d9893ef37f8cd4dbb02cacf5d3b4d0d0cd626e
+971c156d7982d890341bd81dffb4946ec6a06060 
971c156d7982d890341bd81dffb4946ec6a06060
+976a2742308b3194ca482b692adfadf6e64b5526 
976a2742308b3194ca482b692adfadf6e64b5526
+99006756884f658d1ab7a04495e45f118113303d 
99006756884f658d1ab7a04495e45f118113303d
+9a26c2908e0dbdc39b1cb21395d40dd85fd8f669 
9a26c2908e0dbdc39b1cb21395d40dd85fd8f669
+9a959a55da3c94427ba7786dc64e01951751818e 
9a959a55da3c94427ba7786dc64e01951751818e
+9c113e185938fcd0e21af6b7f9773ef96ac3d83e 
9c113e185938fcd0e21af6b7f9773ef96ac3d83e
+9cd9d37f2025c7d8f242226e6a99d7404cb3dbe6 
9cd9d37f2025c7d8f242226e6a99d7404cb3dbe6
+9f00c391d8e723adc766b208efa60bc0dfc2f24d 
9f00c391d8e723adc766b208efa60bc0dfc2f24d
+a17003bc377611ccbc1589215ee8b7aedc85796f 
a17003bc377611ccbc1589215ee8b7aedc85796f
+a54fb0f30f6048101cad79c191a70e5a9c263746 
a54fb0f30f6048101cad79c191a70e5a9c263746
+a5aabdce5e65d9620beb040e748a5bb9c9ed89ac 
a5aabdce5e65d9620beb040e748a5bb9c9ed89ac
+a63b3d017b5837e966f3964e6436791c43bf21e3 
a63b3d017b5837e966f3964e6436791c43bf21e3
+a7e537424c5528bdc2b358ee1058d1509fe16566 
a7e537424c5528bdc2b358ee1058d1509fe16566
+a8b60ba7bfdf33c8c2475210a3d757da40e7d954 
a8b60ba7bfdf33c8c2475210a3d757da40e7d954
+a932e58665dff9167c24abdbc63bc8120001f264 
a932e58665dff9167c24abdbc63bc8120001f264
+aaf6f29c99a183e6b558abc1f84895d8e824a92d 
aaf6f29c99a183e6b558abc1f84895d8e824a92d
+ab5218f8dbfb8a6fcaef2d88e40b681591229193 
ab5218f8dbfb8a6fcaef2d88e40b681591229193
+abf74a0fa2c7ab37e9f79cb3495c73203c0006a4 
abf74a0fa2c7ab37e9f79cb3495c73203c0006a4
+ac21cb131be1e3a60d8e899b61cd992b367a5649 
ac21cb131be1e3a60d8e899b61cd992b367a5649
+aee04e77bfbd6601adbcd5a46435f059e31cf6e4 
aee04e77bfbd6601adbcd5a46435f059e31cf6e4
+af6480effb6b4339eb78b77311634c546f8c6d11 
af6480effb6b4339eb78b77311634c546f8c6d11
+b0fdd5fb364d58b55ee39c5d9055e871d5195426 
b0fdd5fb364d58b55ee39c5d9055e871d5195426
+b18e52447c872fcd40abb1ce334253d153335e09 
b18e52447c872fcd40abb1ce334253d153335e09
+b1cbde92ad38dc1b0246df46349fc69cce60dbc1 
b1cbde92ad38dc1b0246df46349fc69cce60dbc1
+b2bba762992ff77f7ffd0c08a6c6ba5f029222ff 
b2bba762992ff77f7ffd0c08a6c6ba5f029222ff
+b4f96c6c8413d4bc2c8fb5994232ad158d8475a9 
b4f96c6c8413d4bc2c8fb5994232ad158d8475a9
+b5a717d82d7ba9ea31228d97c4207f4c9fb9066c 
b5a717d82d7ba9ea31228d97c4207f4c9fb9066c
+b6712fbb102d667bd8d7b33b15416f520dd78995 
b6712fbb102d667bd8d7b33b15416f520dd78995
+b865391e7738ff0e9d98e75a1282deb6d0f0ea66 
b865391e7738ff0e9d98e75a1282deb6d0f0ea66
+bb19195469431a0e2b94832ea9e7a60b1e30c6fc 
bb19195469431a0e2b94832ea9e7a60b1e30c6fc
+bbfcb22601c5cffae7341b26965124649fe08688 
bbfcb22601c5cffae7341b26965124649fe08688
+bc8d3f0e60565567a8b8598972614dce7d4ffccd 
bc8d3f0e60565567a8b8598972614dce7d4ffccd
+bd82a9523344a2585ca30f1ae20c69e3c19e4c6f 
bd82a9523344a2585ca30f1ae20c69e3c19e4c6f
+be746f4096f772a5e4a461263375f0ce939fd21c 
be746f4096f772a5e4a461263375f0ce939fd21c
+bea4d1d941736c9da1b6668b2d8b549b8ab4e66d 
bea4d1d941736c9da1b6668b2d8b549b8ab4e66d
+bedb2ecba74dd989d429d14197e4e51595edb188 
bedb2ecba74dd989d429d14197e4e51595edb188
+bfff621a7ca4e6baf72151ab8918fbc19391a46b 
bfff621a7ca4e6baf72151ab8918fbc19391a46b
+c0c6233c58ca8f33cb4f3333c027886a0a0dcf3d 
c0c6233c58ca8f33cb4f3333c027886a0a0dcf3d
+c167e70d8b20ec2254115c7b72673605b6a27625 
c167e70d8b20ec2254115c7b72673605b6a27625
+c1b4c398b44cec672dc8a32b83e4ec489466881e 
c1b4c398b44cec672dc8a32b83e4ec489466881e
+c423cfc72547100e9f9db1aeeb205bc6e5154309 
c423cfc72547100e9f9db1aeeb205bc6e5154309
+c8264ab7eaab9dc3aca8d6d2c0871eadff2fbf4f 
c8264ab7eaab9dc3aca8d6d2c0871eadff2fbf4f
+c86b0bc3ef91cd92d5020d809938560c08d3ad1e 
c86b0bc3ef91cd92d5020d809938560c08d3ad1e
+c88626f93bfb9d7c4cb6e8e4b67f23d0012d7695 
c88626f93bfb9d7c4cb6e8e4b67f23d0012d7695
+c88c45cc9facb1fd6a9accfe9baec6360b7d431e 
c88c45cc9facb1fd6a9accfe9baec6360b7d431e
+c8a4c64aafacbc447fa4474a04fd7e2400c901f9 
c8a4c64aafacbc447fa4474a04fd7e2400c901f9
+c9c7730de063da9473cfb52991f3da2afb30e455 
c9c7730de063da9473cfb52991f3da2afb30e455
+ca65805f6a0541cbeb534b12565505b1a99eb09c 
ca65805f6a0541cbeb534b12565505b1a99eb09c
+cb21e57440d91389c263898cb8752b639254be9c 
cb21e57440d91389c263898cb8752b639254be9c
+cba56fcea1613399ca819d93372c374c9a9ec44f 
cba56fcea1613399ca819d93372c374c9a9ec44f
+d0b64b936318af6541ae64ad2830fc6a04f38abe 
d0b64b936318af6541ae64ad2830fc6a04f38abe
+d1c7ba91853fca818c6ae6c5c29d54a464ebf1fc 
d1c7ba91853fca818c6ae6c5c29d54a464ebf1fc
+d1f8ecf7a045e2559efb03efb4ca3e93a5a131c3 
d1f8ecf7a045e2559efb03efb4ca3e93a5a131c3
+d24ed31b4afa6a7912a1a0089664390733505a4e 
d24ed31b4afa6a7912a1a0089664390733505a4e
+d8a1188a10b7feb75dd0dbb6bb039652cd792b50 
d8a1188a10b7feb75dd0dbb6bb039652cd792b50
+db36fec73eced367b288192827364f6e40fbfb50 
db36fec73eced367b288192827364f6e40fbfb50
+dbc29510f90ed2d462f3f98568281f4bfbadae1f 
dbc29510f90ed2d462f3f98568281f4bfbadae1f
+dc4e4aeeb1400f75fa40bfd4d2503a029c03c52c 
dc4e4aeeb1400f75fa40bfd4d2503a029c03c52c
+dcd132b0ab7e4220ce11dc171c06ede0331300a4 
dcd132b0ab7e4220ce11dc171c06ede0331300a4
+ddc808f94f89f623fee361e510d505edef1a2ebf 
ddc808f94f89f623fee361e510d505edef1a2ebf
+de8f1cdf0682d02cd02af6884d7545045f8ae6e1 
de8f1cdf0682d02cd02af6884d7545045f8ae6e1
+df1ed8d8d3fb949fbb485625d18578fec983a164 
df1ed8d8d3fb949fbb485625d18578fec983a164
+dfdace95f1f7c76cdf1290941dc7d454da232d65 
dfdace95f1f7c76cdf1290941dc7d454da232d65
+e1d0d95d881f314f3314eeafd1acb10c7d7db140 
e1d0d95d881f314f3314eeafd1acb10c7d7db140
+e2508c83cc1b77af7bbeae6671efa899433c183d 
e2508c83cc1b77af7bbeae6671efa899433c183d
+e34a4ad0d0afc2d990c5e7c80e4f5e9d2bf71b7a 
e34a4ad0d0afc2d990c5e7c80e4f5e9d2bf71b7a
+e4f41049713e4c689f7dbd69d34db8500ca0c01a 
e4f41049713e4c689f7dbd69d34db8500ca0c01a
+e51e11209636712d12a4d7629083b2ffab45cae9 
e51e11209636712d12a4d7629083b2ffab45cae9
+e62860938cee3569c3655b4c2793cdf76ba3a6c5 
e62860938cee3569c3655b4c2793cdf76ba3a6c5
+e6f43cdf11080a6b0975deaade076968102684eb 
e6f43cdf11080a6b0975deaade076968102684eb
+e71d3260c0d5cf249fa01b40067de17e787e47d8 
e71d3260c0d5cf249fa01b40067de17e787e47d8
+e7758e0943c0589f31b874e5e388e78502695cbe 
e7758e0943c0589f31b874e5e388e78502695cbe
+e8a5d312089d683c4be3128ca64589d3a65cd775 
e8a5d312089d683c4be3128ca64589d3a65cd775
+e9ad19bb6a8eb6b49a695c8ad20518c692c98f65 
e9ad19bb6a8eb6b49a695c8ad20518c692c98f65
+ea1023348db967cc3a84371c44fd4af857dc0e8c 
ea1023348db967cc3a84371c44fd4af857dc0e8c
+eb296fb07648eb17121c05842ffb30967f38bb0b 
eb296fb07648eb17121c05842ffb30967f38bb0b
+ebc6f522db6b0acbf14b4d5e6b2fb8512265c786 
ebc6f522db6b0acbf14b4d5e6b2fb8512265c786
+ebcb592efaf746782bc382a81b32eb6587189a52 
ebcb592efaf746782bc382a81b32eb6587189a52
+ec0bf64b88443e002d2984c5ecfb113c612ec0f9 
ec0bf64b88443e002d2984c5ecfb113c612ec0f9
+ec5a4b0fcce773b45cb7bad33bd15be0e98b18ee 
ec5a4b0fcce773b45cb7bad33bd15be0e98b18ee
+f1c91a72d5b2abd30f40dc0cd0f555daf58aaf9a 
f1c91a72d5b2abd30f40dc0cd0f555daf58aaf9a
+f1f1ec6281d556093b203f341b89738190d6f527 
f1f1ec6281d556093b203f341b89738190d6f527
+f22509b8972edabd4a409f4d98e3e5c37f03d222 
f22509b8972edabd4a409f4d98e3e5c37f03d222
+f2805d0c816bd929b1299f137652a8b0e84a46d5 
f2805d0c816bd929b1299f137652a8b0e84a46d5
+f3642961c9660f495dec47f5e4e4fc37e6b077e3 
f3642961c9660f495dec47f5e4e4fc37e6b077e3
+f555e5f5bec4c42b15a8faac133a2dd4a8a1e220 
f555e5f5bec4c42b15a8faac133a2dd4a8a1e220
+f83c94fb49a3eea0d902a8275d58a32382f858b0 
f83c94fb49a3eea0d902a8275d58a32382f858b0
+f8567b500786d35d29204bb54f6a312874724bbd 
f8567b500786d35d29204bb54f6a312874724bbd
+f863133f777c9dc6bb70f020eb23d1a292434d31 
f863133f777c9dc6bb70f020eb23d1a292434d31
+f8a89ef59b4f74566cb2b086b1a88eaabd3ccb4c 
f8a89ef59b4f74566cb2b086b1a88eaabd3ccb4c
+f92e72d7e8387d4a32eb40dfa46f6fc2e37fe047 
f92e72d7e8387d4a32eb40dfa46f6fc2e37fe047
+fab9cff1f116904ad8ec40ce484982b96f803425 
fab9cff1f116904ad8ec40ce484982b96f803425
+faee443de13f19e9bc85be0860ed04ae6b53e90d 
faee443de13f19e9bc85be0860ed04ae6b53e90d
+fc8ac97ac2ba18ea0d5a299b74b1dc9b57fa18fa 
fc8ac97ac2ba18ea0d5a299b74b1dc9b57fa18fa
+fe40c5334da4f8b5ffcf386bea5e75642fc1fa9c 
fe40c5334da4f8b5ffcf386bea5e75642fc1fa9c
+ff4410ceaa222796900e6ad456aff00ea95948a6 
ff4410ceaa222796900e6ad456aff00ea95948a6
Binary files 
old/nebula-1.9.6/.git/objects/pack/pack-55cf3bbc3c6428b5ac15e3511eb3425f40a71d61.rev
 and 
new/nebula-1.9.7/.git/objects/pack/pack-55cf3bbc3c6428b5ac15e3511eb3425f40a71d61.rev
 differ
Binary files 
old/nebula-1.9.6/.git/objects/pack/pack-7b4ec155f4fde2efb65578bf5714ed16ed6c07d1.idx
 and 
new/nebula-1.9.7/.git/objects/pack/pack-7b4ec155f4fde2efb65578bf5714ed16ed6c07d1.idx
 differ
Binary files 
old/nebula-1.9.6/.git/objects/pack/pack-7b4ec155f4fde2efb65578bf5714ed16ed6c07d1.pack
 and 
new/nebula-1.9.7/.git/objects/pack/pack-7b4ec155f4fde2efb65578bf5714ed16ed6c07d1.pack
 differ
Binary files 
old/nebula-1.9.6/.git/objects/pack/pack-7b4ec155f4fde2efb65578bf5714ed16ed6c07d1.rev
 and 
new/nebula-1.9.7/.git/objects/pack/pack-7b4ec155f4fde2efb65578bf5714ed16ed6c07d1.rev
 differ
Binary files 
old/nebula-1.9.6/.git/objects/pack/pack-96857295374f5107d22af392066d62f7f502f57a.idx
 and 
new/nebula-1.9.7/.git/objects/pack/pack-96857295374f5107d22af392066d62f7f502f57a.idx
 differ
Binary files 
old/nebula-1.9.6/.git/objects/pack/pack-96857295374f5107d22af392066d62f7f502f57a.pack
 and 
new/nebula-1.9.7/.git/objects/pack/pack-96857295374f5107d22af392066d62f7f502f57a.pack
 differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/nebula-1.9.6/.git/objects/pack/pack-96857295374f5107d22af392066d62f7f502f57a.promisor
 
new/nebula-1.9.7/.git/objects/pack/pack-96857295374f5107d22af392066d62f7f502f57a.promisor
--- 
old/nebula-1.9.6/.git/objects/pack/pack-96857295374f5107d22af392066d62f7f502f57a.promisor
   1970-01-01 01:00:00.000000000 +0100
+++ 
new/nebula-1.9.7/.git/objects/pack/pack-96857295374f5107d22af392066d62f7f502f57a.promisor
   2025-10-10 17:31:46.000000000 +0200
@@ -0,0 +1,122 @@
+02d02f5d64428d9a841cee7df12ac159836b5789 
02d02f5d64428d9a841cee7df12ac159836b5789
+0b573e6b344309da856dd6b9e747f8e2ecf93e65 
0b573e6b344309da856dd6b9e747f8e2ecf93e65
+0d0943f0ac369354ac6b6db9da6f880e0584d73a 
0d0943f0ac369354ac6b6db9da6f880e0584d73a
+0e7e20d4122d33d90b4f1b03722f6f8874dd1090 
0e7e20d4122d33d90b4f1b03722f6f8874dd1090
+0e9c62abaea0722385c650014de4ba65f257b1c2 
0e9c62abaea0722385c650014de4ba65f257b1c2
+0efb9675691ae7ad3e375ca9ccc44078eee51cf0 
0efb9675691ae7ad3e375ca9ccc44078eee51cf0
+12460da1f85968dd6e9365afdb99ed94995e2988 
12460da1f85968dd6e9365afdb99ed94995e2988
+130f8f99f5e18129e754884c37f5822b7038ee28 
130f8f99f5e18129e754884c37f5822b7038ee28
+1916f8923b6f80775b5d2550947ca722d5431e3a 
1916f8923b6f80775b5d2550947ca722d5431e3a
+1aea83273596bf6a26a3b065af178176dd3cf475 
1aea83273596bf6a26a3b065af178176dd3cf475
+1bb4ef5f70bdb2caec407d8778dbcab5ed070ab5 
1bb4ef5f70bdb2caec407d8778dbcab5ed070ab5
+1dd3c8cf5a4e39539a87c9b09ef23d3ab1f7d0ca 
1dd3c8cf5a4e39539a87c9b09ef23d3ab1f7d0ca
+1e67940115ecbec34b25deeb7b714978ee2f4532 
1e67940115ecbec34b25deeb7b714978ee2f4532
+20981f08cc90bd27b0a7155a420e9b31854d4cf0 
20981f08cc90bd27b0a7155a420e9b31854d4cf0
+24ab24f78dd3b6aa3f4a59f0052573a8c83f83a6 
24ab24f78dd3b6aa3f4a59f0052573a8c83f83a6
+2599f5f2ea0386daed0e3c45ba5a8b0c7e01e998 
2599f5f2ea0386daed0e3c45ba5a8b0c7e01e998
+28170b622cf5c5fbdf3349152e1f6c80888b1961 
28170b622cf5c5fbdf3349152e1f6c80888b1961
+2b5e6e937141af36ad4974569e64a68d16067818 
2b5e6e937141af36ad4974569e64a68d16067818
+2ff0954d62e2717fc6de38b6f0276e2079b6105f 
2ff0954d62e2717fc6de38b6f0276e2079b6105f
+30178c03451593c58a9c17d33953d67ef3910b15 
30178c03451593c58a9c17d33953d67ef3910b15
+31762090de0fdeadb7f92e3a92a19a1a41ad7939 
31762090de0fdeadb7f92e3a92a19a1a41ad7939
+31987db86295fc6beff233918a5031e913f4fcd4 
31987db86295fc6beff233918a5031e913f4fcd4
+3558e1a542336e677d00715ff3f3e54e5abe80a5 
3558e1a542336e677d00715ff3f3e54e5abe80a5
+3570e0750597c554d37c726ca02d0900c18e0f7c 
3570e0750597c554d37c726ca02d0900c18e0f7c
+35d644689f272a6d2e97236c0596adb574d5626f 
35d644689f272a6d2e97236c0596adb574d5626f
+375b4223a11baf4b78894f567c5a2daa96ce788a 
375b4223a11baf4b78894f567c5a2daa96ce788a
+3a534051d81c867a0d20a43718eeda67c75967e2 
3a534051d81c867a0d20a43718eeda67c75967e2
+3acc8ded4a7a40da60a0a55af92feac3209a9925 
3acc8ded4a7a40da60a0a55af92feac3209a9925
+3afd6cb05db16a686168b86e861cd404be58ac11 
3afd6cb05db16a686168b86e861cd404be58ac11
+3cb50ddb691644d4b4a19c1da0f7281d4fbf0619 
3cb50ddb691644d4b4a19c1da0f7281d4fbf0619
+3d0fa1b65e6515aa47c43e04cabee6d789ecd12a 
3d0fa1b65e6515aa47c43e04cabee6d789ecd12a
+3d883093c812cae51d9c1a689477ef282da57b00 
3d883093c812cae51d9c1a689477ef282da57b00
+3da3fa09a62ab67be738b600dbfacd195ef5fae1 
3da3fa09a62ab67be738b600dbfacd195ef5fae1
+4c6364ef5629748ecb29546213ed7d39c8d00f86 
4c6364ef5629748ecb29546213ed7d39c8d00f86
+4d47e785f6d44abf54dcbfea6cdeced03e9b0a6e 
4d47e785f6d44abf54dcbfea6cdeced03e9b0a6e
+4ddd301829ef40e49f967084e52b83a49a7600f8 
4ddd301829ef40e49f967084e52b83a49a7600f8
+4e5d51d0c3cc495775582d00a11fb46fa62bb2d3 
4e5d51d0c3cc495775582d00a11fb46fa62bb2d3
+5041f82ce386d917a3017497f623dcccd3c8e66e 
5041f82ce386d917a3017497f623dcccd3c8e66e
+50ad6ad5bcc1168e4b187a66796b404587b77602 
50ad6ad5bcc1168e4b187a66796b404587b77602
+50b7d62b22f780dd105d76fdf2562a3b698e3d72 
50b7d62b22f780dd105d76fdf2562a3b698e3d72
+523968c2352e3904d9f21e373d90604e297ad914 
523968c2352e3904d9f21e373d90604e297ad914
+527f55bc7b0ff270940b0edbbcf2dade3b33e28c 
527f55bc7b0ff270940b0edbbcf2dade3b33e28c
+54833bdc789754f8b3086f94764e7ac990786b11 
54833bdc789754f8b3086f94764e7ac990786b11
+56472dd44b1fcc8c114327512f2a38855547adbb 
56472dd44b1fcc8c114327512f2a38855547adbb
+578e83e302893414448a8b0365047180bb5e0846 
578e83e302893414448a8b0365047180bb5e0846
+58705a775ff9f6d12b59d2427993fbd0bc3c6c96 
58705a775ff9f6d12b59d2427993fbd0bc3c6c96
+5fea65c47bc22ceef5d9d6a45d04fc5c6dc478ff 
5fea65c47bc22ceef5d9d6a45d04fc5c6dc478ff
+62a892b00189463dbd90248b95d0877618e7f242 
62a892b00189463dbd90248b95d0877618e7f242
+62f406560ca38e7e37dc0ae2b8a8d663631c18af 
62f406560ca38e7e37dc0ae2b8a8d663631c18af
+6463ccbba5dc27e71aeb73073adb9d5b1a65b6b6 
6463ccbba5dc27e71aeb73073adb9d5b1a65b6b6
+65a6e3e8601e1a4c2b716c183b9727ed41cff887 
65a6e3e8601e1a4c2b716c183b9727ed41cff887
+65ea91f5105a5681011580b4bf219f50e187a21d 
65ea91f5105a5681011580b4bf219f50e187a21d
+66a118a8d0ff856d3fe2466abe7857d371270bc0 
66a118a8d0ff856d3fe2466abe7857d371270bc0
+69f6ae84f47316b8772977a072b24188c4a409c9 
69f6ae84f47316b8772977a072b24188c4a409c9
+6a023abf20b6ef8e38c2bc8a73447cb2183e8ddc 
6a023abf20b6ef8e38c2bc8a73447cb2183e8ddc
+6c6c7951563aa1bc4dbe4184900f6277c8d43bba 
6c6c7951563aa1bc4dbe4184900f6277c8d43bba
+6ff1cb0bdfa23d878e53bfb465f0f64558e00a23 
6ff1cb0bdfa23d878e53bfb465f0f64558e00a23
+719e0349e709c0cfc781f941fb3d4effea45c9d9 
719e0349e709c0cfc781f941fb3d4effea45c9d9
+71df805f882b109ae8fd51b6b69837ba0a770bf5 
71df805f882b109ae8fd51b6b69837ba0a770bf5
+74041ca55e0d24e650ab6312211cb9d40995488e 
74041ca55e0d24e650ab6312211cb9d40995488e
+746d6a3ab8f3bde7a9b1cfd3d839981145737909 
746d6a3ab8f3bde7a9b1cfd3d839981145737909
+765a006654bf2bfd46614853267f550520694275 
765a006654bf2bfd46614853267f550520694275
+76cf72fc3c197c5186c639d07d6934232cec5b41 
76cf72fc3c197c5186c639d07d6934232cec5b41
+79790a1265e3556c5497c0cb73526c12dc6c896b 
79790a1265e3556c5497c0cb73526c12dc6c896b
+7f19fe4db78f8549561625fcfee241c7ba7ec2b4 
7f19fe4db78f8549561625fcfee241c7ba7ec2b4
+87a0de75bb09f4848f55abc1eb03c4fc20d13525 
87a0de75bb09f4848f55abc1eb03c4fc20d13525
+88e33b7e99ede588bc2ce54be2327a0dda6325ac 
88e33b7e99ede588bc2ce54be2327a0dda6325ac
+8954f4c473e33ee0eb605a7090e5735bf3867961 
8954f4c473e33ee0eb605a7090e5735bf3867961
+8a409d25d744bd745e7a7ae0c9e76440b2def1ae 
8a409d25d744bd745e7a7ae0c9e76440b2def1ae
+8c9123e08791cbd7d919469332b1117c4edddb60 
8c9123e08791cbd7d919469332b1117c4edddb60
+8ccc9943ccba295c4d35fda506f4f919df64f818 
8ccc9943ccba295c4d35fda506f4f919df64f818
+900b01e5b86403ddc8a882c78e83b77f9d9a4bca 
900b01e5b86403ddc8a882c78e83b77f9d9a4bca
+90e0de231d26236502b12c1d6868afbd52757c98 
90e0de231d26236502b12c1d6868afbd52757c98
+94bb02fe3b8aee70415af5caf5c86a0a72a71e33 
94bb02fe3b8aee70415af5caf5c86a0a72a71e33
+94e2c6beb00cdb71df7c28efe30e2726272fe527 
94e2c6beb00cdb71df7c28efe30e2726272fe527
+98ad9b408df48383fc7aaa6012d7cad96d499359 
98ad9b408df48383fc7aaa6012d7cad96d499359
+9a3b3f3bb6c9996e90a98f88f7256fe37fd2fd04 
9a3b3f3bb6c9996e90a98f88f7256fe37fd2fd04
+9e8c721ee0cc3e4a39215b3042634151580ab01a 
9e8c721ee0cc3e4a39215b3042634151580ab01a
+9fa8a5492ea5e52de8ce4a5f32e9fad303e747a9 
9fa8a5492ea5e52de8ce4a5f32e9fad303e747a9
+a78b45f54c3c214eb64d08a9dd46f928f1abe95e 
a78b45f54c3c214eb64d08a9dd46f928f1abe95e
+adb2e84cfa391ed0fad8fde3b4e6d652cd5dd59c 
adb2e84cfa391ed0fad8fde3b4e6d652cd5dd59c
+adf83a26779d2f188caf97d70bc677a36378b3f7 
adf83a26779d2f188caf97d70bc677a36378b3f7
+ae19a28f5be753b7de15acb3ec07c5d9557901f7 
ae19a28f5be753b7de15acb3ec07c5d9557901f7
+ae2ed500c037a90f85d55d6ef8bc70728d4f716a 
ae2ed500c037a90f85d55d6ef8bc70728d4f716a
+b22dfc08a0612d2d4ab193e41016ae071c052039 
b22dfc08a0612d2d4ab193e41016ae071c052039
+b281906f51af72f38c5e75c549c5393402d77eac 
b281906f51af72f38c5e75c549c5393402d77eac
+b2d1d1b5bf17bab6942d313d1347ec4952f7b19b 
b2d1d1b5bf17bab6942d313d1347ec4952f7b19b
+b3c723a462fda42bf18d738b96430e7ba20e88aa 
b3c723a462fda42bf18d738b96430e7ba20e88aa
+b5be25f3e84201a67e0a788912a32dc0d39f5461 
b5be25f3e84201a67e0a788912a32dc0d39f5461
+b7a6b04d869a74dbaed3dfdaff105c8381eb6b2c 
b7a6b04d869a74dbaed3dfdaff105c8381eb6b2c
+b803d30a659910d127644c3a32aaf3fac6b2cc25 
b803d30a659910d127644c3a32aaf3fac6b2cc25
+b9bdd4c1a53dccc12d7e443a731bfa1f9a96e426 
b9bdd4c1a53dccc12d7e443a731bfa1f9a96e426
+ba15723a143661719cb66dac3f730fe8b96ef204 
ba15723a143661719cb66dac3f730fe8b96ef204
+bba2a55c6e7916c40229b27a110ce72aa4244461 
bba2a55c6e7916c40229b27a110ce72aa4244461
+bdfeb5802b314a0f050ca33e3a727d9b88968e50 
bdfeb5802b314a0f050ca33e3a727d9b88968e50
+bedd2b266cc4d22b26a6744339af6b227541a37b 
bedd2b266cc4d22b26a6744339af6b227541a37b
+c14ab2e77f78b3fde66b6235c7170b6afd487a29 
c14ab2e77f78b3fde66b6235c7170b6afd487a29
+c2e61df070b30a8bf65737b367765afaf4a7c6bc 
c2e61df070b30a8bf65737b367765afaf4a7c6bc
+c546653a2f4a9401b1acb3de2d72b4609af86052 
c546653a2f4a9401b1acb3de2d72b4609af86052
+c5c15c520ae4d12c73427f889fec36d449c37909 
c5c15c520ae4d12c73427f889fec36d449c37909
+c8b3d08af1d714a4ebfb4f3e011026a90223a9fb 
c8b3d08af1d714a4ebfb4f3e011026a90223a9fb
+c9559136f0fdbe4b4f9bdab6dc244092221d8791 
c9559136f0fdbe4b4f9bdab6dc244092221d8791
+cd5f750cd5b8a6c5ba963b6e258c71107911d28c 
cd5f750cd5b8a6c5ba963b6e258c71107911d28c
+cfb99c220c82f11ad2d07f1cde478e33867244be 
cfb99c220c82f11ad2d07f1cde478e33867244be
+d0103879af61feff70b97819b27973aad422b67d 
d0103879af61feff70b97819b27973aad422b67d
+d46540f0434e01361d3457dd8e7adf0e33fd156a 
d46540f0434e01361d3457dd8e7adf0e33fd156a
+d7710f9abe38cd77d2e4414d2611bd1cc509bcbc 
d7710f9abe38cd77d2e4414d2611bd1cc509bcbc
+d78f564cf0c941fc6e9af1dad4c8503b755d567d 
d78f564cf0c941fc6e9af1dad4c8503b755d567d
+d7913894b8ec4919bbd2a5a1e550e961eaac2708 
d7913894b8ec4919bbd2a5a1e550e961eaac2708
+d94cbf1455ae059597b0d32f7fe0e219ec8b965a 
d94cbf1455ae059597b0d32f7fe0e219ec8b965a
+df2dd4e59057d118df7d6eed5ea5fc56188dbd54 
df2dd4e59057d118df7d6eed5ea5fc56188dbd54
+e0d41aec9e990af54e362447b0478003081bfc4d 
e0d41aec9e990af54e362447b0478003081bfc4d
+e5845d1cc73d1bc845da36d6035913705018a854 
e5845d1cc73d1bc845da36d6035913705018a854
+eebabd339646ede2e5828e7c7a83e6fde9d54c01 
eebabd339646ede2e5828e7c7a83e6fde9d54c01
+eee83cf29d097750a183ea1df6b417b890ef90bf 
eee83cf29d097750a183ea1df6b417b890ef90bf
+f03a3535f7e2c52fb694e52c2648468b953d91c0 
f03a3535f7e2c52fb694e52c2648468b953d91c0
+f0f4c78dd18003cbb3af0e8ff85a8e14388ecc05 
f0f4c78dd18003cbb3af0e8ff85a8e14388ecc05
+f9d4bfa48c9bdf9a794351ed3772bae71a97e8b4 
f9d4bfa48c9bdf9a794351ed3772bae71a97e8b4
+fa14f4295e56b3f83cf17dd6b4113bb9f78faa4a 
fa14f4295e56b3f83cf17dd6b4113bb9f78faa4a
+fa4e443040e88b54ad7ba28064d7c15acb137a10 
fa4e443040e88b54ad7ba28064d7c15acb137a10
+fa9439302b7483c7dffdae0703cf6a617389033e 
fa9439302b7483c7dffdae0703cf6a617389033e
+fbf58295a33eabf503fcf991f050a7ea58bba3b0 
fbf58295a33eabf503fcf991f050a7ea58bba3b0
Binary files 
old/nebula-1.9.6/.git/objects/pack/pack-96857295374f5107d22af392066d62f7f502f57a.rev
 and 
new/nebula-1.9.7/.git/objects/pack/pack-96857295374f5107d22af392066d62f7f502f57a.rev
 differ
Binary files 
old/nebula-1.9.6/.git/objects/pack/pack-b82908deda8db041db180e2858a6c3efdabea4ce.idx
 and 
new/nebula-1.9.7/.git/objects/pack/pack-b82908deda8db041db180e2858a6c3efdabea4ce.idx
 differ
Binary files 
old/nebula-1.9.6/.git/objects/pack/pack-b82908deda8db041db180e2858a6c3efdabea4ce.pack
 and 
new/nebula-1.9.7/.git/objects/pack/pack-b82908deda8db041db180e2858a6c3efdabea4ce.pack
 differ
Binary files 
old/nebula-1.9.6/.git/objects/pack/pack-b82908deda8db041db180e2858a6c3efdabea4ce.rev
 and 
new/nebula-1.9.7/.git/objects/pack/pack-b82908deda8db041db180e2858a6c3efdabea4ce.rev
 differ
Binary files 
old/nebula-1.9.6/.git/objects/pack/pack-c745111f5f3f056b26b8ec2ecb5942fb0e1c2cf6.idx
 and 
new/nebula-1.9.7/.git/objects/pack/pack-c745111f5f3f056b26b8ec2ecb5942fb0e1c2cf6.idx
 differ
Binary files 
old/nebula-1.9.6/.git/objects/pack/pack-c745111f5f3f056b26b8ec2ecb5942fb0e1c2cf6.pack
 and 
new/nebula-1.9.7/.git/objects/pack/pack-c745111f5f3f056b26b8ec2ecb5942fb0e1c2cf6.pack
 differ
Binary files 
old/nebula-1.9.6/.git/objects/pack/pack-c745111f5f3f056b26b8ec2ecb5942fb0e1c2cf6.rev
 and 
new/nebula-1.9.7/.git/objects/pack/pack-c745111f5f3f056b26b8ec2ecb5942fb0e1c2cf6.rev
 differ
Binary files 
old/nebula-1.9.6/.git/objects/pack/pack-d9a8771d70e5655b423a15b7024745c8a65f2bab.idx
 and 
new/nebula-1.9.7/.git/objects/pack/pack-d9a8771d70e5655b423a15b7024745c8a65f2bab.idx
 differ
Binary files 
old/nebula-1.9.6/.git/objects/pack/pack-d9a8771d70e5655b423a15b7024745c8a65f2bab.pack
 and 
new/nebula-1.9.7/.git/objects/pack/pack-d9a8771d70e5655b423a15b7024745c8a65f2bab.pack
 differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/nebula-1.9.6/.git/objects/pack/pack-d9a8771d70e5655b423a15b7024745c8a65f2bab.promisor
 
new/nebula-1.9.7/.git/objects/pack/pack-d9a8771d70e5655b423a15b7024745c8a65f2bab.promisor
--- 
old/nebula-1.9.6/.git/objects/pack/pack-d9a8771d70e5655b423a15b7024745c8a65f2bab.promisor
   1970-01-01 01:00:00.000000000 +0100
+++ 
new/nebula-1.9.7/.git/objects/pack/pack-d9a8771d70e5655b423a15b7024745c8a65f2bab.promisor
   2025-10-10 17:31:46.000000000 +0200
@@ -0,0 +1,62 @@
+45c1d3eab386287182ac228c8ec8c9beaf3b1211 HEAD
+0af7e6a1ddadd96dfe967ba49e456f2c67969b1e refs/heads/add-http-pprof
+e5e449cb1978f4bc76c95247cff6044690f1f5f4 refs/heads/bits-test
+f8fe454972d740556600cf2ec9e69caf7a18ff75 refs/heads/cert-v2-more-todo
+f488873d70810e693e729b0822b71ea7f6331050 refs/heads/cert-v2-reloads
+5fa386bb703fec75a7a59ac6de9350013a52293d 
refs/heads/cert-v2-reloads-with-relay-stuff
+824cd3f0d6bc2c36a6515bc93a2c56c3fa8b90b5 refs/heads/changelog-v1.9.7
+2ea8a72d5c9688985603370e46ba9520950cbca8 refs/heads/channels
+9101b62162b2f55a21e37e800cc84a18be9b5278 refs/heads/cross-stack-relay
+8f0892ce4bef56735653d858df8c24b351a35e4d refs/heads/default-build-version
+99cd812ac3c4bd05a1eb7910ae13fb3617b815b8 
refs/heads/dependabot/github_actions/actions/checkout-5
+a773b156217ec53df81ae4f0e8c0633a343cf8f1 
refs/heads/dependabot/github_actions/actions/download-artifact-5
+ea96d875333af88bb3312f83827bf8500343b3ea 
refs/heads/dependabot/go_modules/github.com/gaissmai/bart-0.25.0
+aada7a5b9154a7178b30e19f8c8150b0b3f9acc1 
refs/heads/dependabot/go_modules/github.com/kardianos/service-1.2.4
+1b368eacdefb007834b3b8978b500f9d6b7588c3 
refs/heads/dependabot/go_modules/github.com/miekg/dns-1.1.68
+6b753403ced97ad5f71370155d5de57a32eb4f0e 
refs/heads/dependabot/go_modules/github.com/prometheus/client_golang-1.23.2
+a8ffc6e2b7486b2f54e6be70db73e73e48b456b2 
refs/heads/dependabot/go_modules/golang-x-dependencies-651a1b6385
+b418a081a8feebe5740574a43a3364578c9e1c61 refs/heads/fips140
+48f5d2a57d7f5bbd504854f6d3ab3acf7c951854 refs/heads/firewall-forward-table
+491e7e9faa4d8b6849e29edbad3386561ec88d00 refs/heads/go-yaml-v3
+c338f52ec96e5e5cfba103a20b0b6529a97b4d5d refs/heads/holepunch-remote-allow-list
+db11e2f1af19017d21ef5912a5613d48b9db3d02 refs/heads/interface-hooks
+5ceac2b078bcb816d9d738c570a35a0a3bc33c78 refs/heads/jay.wren-dns-ctx
+2400e2392be3fcb87bf6ef3badc30ee6689ba848 refs/heads/jay.wren-lint
+9c6fb08a6dd15e950731a0440691c234e4227b30 
refs/heads/make-boringcrypto-checklinkname
+45c1d3eab386287182ac228c8ec8c9beaf3b1211 refs/heads/master
+0496ef101efc0a4a57e8d31eb938aadff1075a2f refs/heads/multiport
+d4aea03dd1236a032fe5508e29cf0494768ba71c refs/heads/mutex-debug
+d7c0b643f833134b128823df10be03cc2312813b refs/heads/no-exit
+06372e12f1a2fd763c2a8a9d465f5b80511de614 refs/heads/prometheus-static-labels
+6d5299715ebb720197f0095b8c287ff0b94928f5 refs/heads/psk
+0681195da3f68b6bcda375a2c8f31fca105fec61 refs/heads/psk-v2
+7c3f5339508c7dbc74eea7f925d31b28bafa1b45 refs/heads/release-1.9
+d400d9a5ecb588586c3b9a11f69dda006caed39c 
refs/heads/release-1.9-hostmap-networks-fix
+4c745e8cfe032899e6188f12e241d1adb13a3856 refs/heads/remove-olddead-tunnels
+03ab9a1208a32cb59d1f4a917ad66b1ed618d803 refs/heads/synctrace
+e1e8fb87fa675f9978e119c38d93d3a93bc5e7cd refs/heads/tun-name-template
+9642afa14989ee490cda2f6e8c6ceef1ae5b11bd refs/heads/update-lh-on-netlink-addr
+b6c6b96c79a5c64d98fd77162c4427811e69c2e1 refs/heads/windows_udp_buffer_setting
+f9d3d521b62aa52463d008ef4e2f2133daaa0b4c refs/tags/v1.0.0
+0312a3e4408836e2a58a08171c31d7b13ae917e2 refs/tags/v1.1.0
+019d573fd023224454e7dce0d68fcf4155f77b91 refs/tags/v1.2.0
+14bd5487d818474fcd39a12b12789a6daeaa210a refs/tags/v1.3.0
+8ef4213a01084719c80a7bd3d1c04e3999ba673c refs/tags/v1.4.0
+57a32f7c15f1ea105507958aac538ae736474158 refs/tags/v1.5.0
+6f6452112c7bd441dc4bea2134a9cda3faea858a refs/tags/v1.5.2
+d2847cddd89fb1c44b3da10a84e7a9b3e2f55131 refs/tags/v1.6.0
+e6f8783d68238d851832a892ece04b0877644f4c refs/tags/v1.6.1
+2bd87e2fd9648115aae5eec6c8405dff4415bb60 refs/tags/v1.7.0
+dc15e3c8f7e27deb87260749015bcc9d80846314 refs/tags/v1.7.1
+fe5893ceb0e59a00921d412c542351af21858279 refs/tags/v1.7.2
+2b49fed0ff9829f2cddff6b9b84daa4573015ba0 refs/tags/v1.8.0
+8a6a50394fc0af13759121a33f6b822da3d7e2b0 refs/tags/v1.8.1
+0627ffad3e6db253fee4309fb2fbf6c3e6bfc138 refs/tags/v1.8.2
+2e19289b18f2617e9b89ca1017795861f79e3001 refs/tags/v1.9.0
+c9a28bc6ee349611a4946e83d51729f4656fdcd7 refs/tags/v1.9.1
+72d867cdb6bd15dccc51a64ecd5c6af545996298 refs/tags/v1.9.2
+68d6c921d3f355bce2be65450d99def28c957482 refs/tags/v1.9.3
+50504c0f3d54a87ed608587010d6358936e1587a refs/tags/v1.9.4
+a2dd225410da9c21b51df1312dc8aa0bf8358c3c refs/tags/v1.9.5
+86fa4053b125adcc2f587cce9aee8af95894f444 refs/tags/v1.9.6
+0c17c48bb173f5208f265b0c3fe074feeb1d4a3b refs/tags/v1.9.7
Binary files 
old/nebula-1.9.6/.git/objects/pack/pack-d9a8771d70e5655b423a15b7024745c8a65f2bab.rev
 and 
new/nebula-1.9.7/.git/objects/pack/pack-d9a8771d70e5655b423a15b7024745c8a65f2bab.rev
 differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nebula-1.9.6/.git/packed-refs 
new/nebula-1.9.7/.git/packed-refs
--- old/nebula-1.9.6/.git/packed-refs   2025-07-18 14:39:33.000000000 +0200
+++ new/nebula-1.9.7/.git/packed-refs   2025-10-10 17:31:46.000000000 +0200
@@ -1,28 +1,41 @@
 # pack-refs with: peeled fully-peeled sorted 
 0af7e6a1ddadd96dfe967ba49e456f2c67969b1e refs/remotes/origin/add-http-pprof
+e5e449cb1978f4bc76c95247cff6044690f1f5f4 refs/remotes/origin/bits-test
 f8fe454972d740556600cf2ec9e69caf7a18ff75 refs/remotes/origin/cert-v2-more-todo
-2b5d51bcac4ffa738925312b105a3a768d21bd83 refs/remotes/origin/channels
+f488873d70810e693e729b0822b71ea7f6331050 refs/remotes/origin/cert-v2-reloads
+5fa386bb703fec75a7a59ac6de9350013a52293d 
refs/remotes/origin/cert-v2-reloads-with-relay-stuff
+824cd3f0d6bc2c36a6515bc93a2c56c3fa8b90b5 refs/remotes/origin/changelog-v1.9.7
+2ea8a72d5c9688985603370e46ba9520950cbca8 refs/remotes/origin/channels
+9101b62162b2f55a21e37e800cc84a18be9b5278 refs/remotes/origin/cross-stack-relay
 8f0892ce4bef56735653d858df8c24b351a35e4d 
refs/remotes/origin/default-build-version
-d3d0a6fb3bccf6d2aa25f50a85bf317b432378b3 
refs/remotes/origin/dependabot/go_modules/github.com/gaissmai/bart-0.20.5
+99cd812ac3c4bd05a1eb7910ae13fb3617b815b8 
refs/remotes/origin/dependabot/github_actions/actions/checkout-5
+a773b156217ec53df81ae4f0e8c0633a343cf8f1 
refs/remotes/origin/dependabot/github_actions/actions/download-artifact-5
+ea96d875333af88bb3312f83827bf8500343b3ea 
refs/remotes/origin/dependabot/go_modules/github.com/gaissmai/bart-0.25.0
 aada7a5b9154a7178b30e19f8c8150b0b3f9acc1 
refs/remotes/origin/dependabot/go_modules/github.com/kardianos/service-1.2.4
-a59ea487689f736c99606b85f4e1b2e37c377968 
refs/remotes/origin/dependabot/go_modules/github.com/miekg/dns-1.1.67
-b7f1f9af72429719fcc3786af4618131ce18bda4 
refs/remotes/origin/dependabot/go_modules/golang-x-dependencies-651a1b6385
-4485c476416696bf538a632748501b249e7c0b9b refs/remotes/origin/fips140
-0d6b19ee8f9bbfefba42978746096ecc35af498f 
refs/remotes/origin/holepunch-remote-allow-list
+1b368eacdefb007834b3b8978b500f9d6b7588c3 
refs/remotes/origin/dependabot/go_modules/github.com/miekg/dns-1.1.68
+6b753403ced97ad5f71370155d5de57a32eb4f0e 
refs/remotes/origin/dependabot/go_modules/github.com/prometheus/client_golang-1.23.2
+a8ffc6e2b7486b2f54e6be70db73e73e48b456b2 
refs/remotes/origin/dependabot/go_modules/golang-x-dependencies-651a1b6385
+b418a081a8feebe5740574a43a3364578c9e1c61 refs/remotes/origin/fips140
+48f5d2a57d7f5bbd504854f6d3ab3acf7c951854 
refs/remotes/origin/firewall-forward-table
+491e7e9faa4d8b6849e29edbad3386561ec88d00 refs/remotes/origin/go-yaml-v3
+c338f52ec96e5e5cfba103a20b0b6529a97b4d5d 
refs/remotes/origin/holepunch-remote-allow-list
 db11e2f1af19017d21ef5912a5613d48b9db3d02 refs/remotes/origin/interface-hooks
 5ceac2b078bcb816d9d738c570a35a0a3bc33c78 refs/remotes/origin/jay.wren-dns-ctx
 2400e2392be3fcb87bf6ef3badc30ee6689ba848 refs/remotes/origin/jay.wren-lint
 9c6fb08a6dd15e950731a0440691c234e4227b30 
refs/remotes/origin/make-boringcrypto-checklinkname
-91eff0341802468ac5d53c3510cbbcd94ed560bc refs/remotes/origin/master
-ae9de47dd919fc8101226dbd0916369b10002e6f refs/remotes/origin/multiport
+45c1d3eab386287182ac228c8ec8c9beaf3b1211 refs/remotes/origin/master
+0496ef101efc0a4a57e8d31eb938aadff1075a2f refs/remotes/origin/multiport
 d4aea03dd1236a032fe5508e29cf0494768ba71c refs/remotes/origin/mutex-debug
 d7c0b643f833134b128823df10be03cc2312813b refs/remotes/origin/no-exit
 06372e12f1a2fd763c2a8a9d465f5b80511de614 
refs/remotes/origin/prometheus-static-labels
 6d5299715ebb720197f0095b8c287ff0b94928f5 refs/remotes/origin/psk
 0681195da3f68b6bcda375a2c8f31fca105fec61 refs/remotes/origin/psk-v2
-105e0ec66c11d57c06c5f1c52a064be3b50e4d25 refs/remotes/origin/release-1.9
+7c3f5339508c7dbc74eea7f925d31b28bafa1b45 refs/remotes/origin/release-1.9
+d400d9a5ecb588586c3b9a11f69dda006caed39c 
refs/remotes/origin/release-1.9-hostmap-networks-fix
 4c745e8cfe032899e6188f12e241d1adb13a3856 
refs/remotes/origin/remove-olddead-tunnels
 03ab9a1208a32cb59d1f4a917ad66b1ed618d803 refs/remotes/origin/synctrace
+e1e8fb87fa675f9978e119c38d93d3a93bc5e7cd refs/remotes/origin/tun-name-template
+9642afa14989ee490cda2f6e8c6ceef1ae5b11bd 
refs/remotes/origin/update-lh-on-netlink-addr
 b6c6b96c79a5c64d98fd77162c4427811e69c2e1 
refs/remotes/origin/windows_udp_buffer_setting
 f9d3d521b62aa52463d008ef4e2f2133daaa0b4c refs/tags/v1.0.0
 0312a3e4408836e2a58a08171c31d7b13ae917e2 refs/tags/v1.1.0
@@ -67,3 +80,5 @@
 ^b55b9019a72c7320b5c6dd54d2c31ad89f1e8990
 86fa4053b125adcc2f587cce9aee8af95894f444 refs/tags/v1.9.6
 ^105e0ec66c11d57c06c5f1c52a064be3b50e4d25
+0c17c48bb173f5208f265b0c3fe074feeb1d4a3b refs/tags/v1.9.7
+^7c3f5339508c7dbc74eea7f925d31b28bafa1b45
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nebula-1.9.6/.git/refs/heads/master 
new/nebula-1.9.7/.git/refs/heads/master
--- old/nebula-1.9.6/.git/refs/heads/master     2025-07-18 14:39:33.000000000 
+0200
+++ new/nebula-1.9.7/.git/refs/heads/master     2025-10-10 17:31:46.000000000 
+0200
@@ -1 +1 @@
-91eff0341802468ac5d53c3510cbbcd94ed560bc
+45c1d3eab386287182ac228c8ec8c9beaf3b1211
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nebula-1.9.6/CHANGELOG.md 
new/nebula-1.9.7/CHANGELOG.md
--- old/nebula-1.9.6/CHANGELOG.md       2025-07-18 14:39:33.000000000 +0200
+++ new/nebula-1.9.7/CHANGELOG.md       2025-10-10 17:31:46.000000000 +0200
@@ -7,6 +7,18 @@
 
 ## [Unreleased]
 
+## [1.9.7] - 2025-10-10
+
+### Security
+
+- Fix an issue where Nebula could incorrectly accept and process a packet from 
an erroneous source IP when the sender's
+  certificate is configured with unsafe_routes (cert v1/v2) or multiple IPs 
(cert v2). (#1494)
+
+### Changed
+
+- Disable sending `recv_error` messages when a packet is received outside the 
allowable counter window. (#1459)
+- Improve error messages and remove some unnecessary fatal conditions in the 
Windows and generic udp listener. (#1543)
+
 ## [1.9.6] - 2025-7-15
 
 ### Added
@@ -687,7 +699,8 @@
 
 - Initial public release.
 
-[Unreleased]: https://github.com/slackhq/nebula/compare/v1.9.6...HEAD
+[Unreleased]: https://github.com/slackhq/nebula/compare/v1.9.7...HEAD
+[1.9.7]: https://github.com/slackhq/nebula/releases/tag/v1.9.7
 [1.9.6]: https://github.com/slackhq/nebula/releases/tag/v1.9.6
 [1.9.5]: https://github.com/slackhq/nebula/releases/tag/v1.9.5
 [1.9.4]: https://github.com/slackhq/nebula/releases/tag/v1.9.4
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nebula-1.9.6/hostmap.go new/nebula-1.9.7/hostmap.go
--- old/nebula-1.9.6/hostmap.go 2025-07-18 14:39:33.000000000 +0200
+++ new/nebula-1.9.7/hostmap.go 2025-10-10 17:31:46.000000000 +0200
@@ -22,7 +22,6 @@
 const defaultReQueryEvery = 5000       // Count of packets sent before 
re-querying a hostinfo to the lighthouse
 const defaultReQueryWait = time.Minute // Minimum amount of seconds to wait 
before re-querying a hostinfo the lighthouse. Evaluated every ReQueryEvery
 const MaxRemotes = 10
-const maxRecvError = 4
 
 // MaxHostInfosPerVpnIp is the max number of hostinfos we will track for a 
given vpn ip
 // 5 allows for an initial handshake and each host pair re-handshaking twice
@@ -220,7 +219,6 @@
        remoteIndexId   uint32
        localIndexId    uint32
        vpnIp           netip.Addr
-       recvError       atomic.Uint32
        remoteCidr      *bart.Table[struct{}]
        relayState      RelayState
 
@@ -705,13 +703,6 @@
        return false
 }
 
-func (i *HostInfo) RecvErrorExceeded() bool {
-       if i.recvError.Add(1) >= maxRecvError {
-               return true
-       }
-       return true
-}
-
 func (i *HostInfo) CreateRemoteCIDR(c *cert.NebulaCertificate) {
        if len(c.Details.Ips) == 1 && len(c.Details.Subnets) == 0 {
                // Simple case, no CIDRTree needed
@@ -723,8 +714,7 @@
                //TODO: IPV6-WORK what to do when ip is invalid?
                nip, _ := netip.AddrFromSlice(ip.IP)
                nip = nip.Unmap()
-               bits, _ := ip.Mask.Size()
-               remoteCidr.Insert(netip.PrefixFrom(nip, bits), struct{}{})
+               remoteCidr.Insert(netip.PrefixFrom(nip, nip.BitLen()), 
struct{}{})
        }
 
        for _, n := range c.Details.Subnets {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nebula-1.9.6/hostmap_test.go 
new/nebula-1.9.7/hostmap_test.go
--- old/nebula-1.9.6/hostmap_test.go    2025-07-18 14:39:33.000000000 +0200
+++ new/nebula-1.9.7/hostmap_test.go    2025-10-10 17:31:46.000000000 +0200
@@ -1,9 +1,11 @@
 package nebula
 
 import (
+       "net"
        "net/netip"
        "testing"
 
+       "github.com/slackhq/nebula/cert"
        "github.com/slackhq/nebula/config"
        "github.com/slackhq/nebula/test"
        "github.com/stretchr/testify/assert"
@@ -87,6 +89,40 @@
        assert.Nil(t, h2.next)
 }
 
+func TestHostInfo_CreateRemoteCIDR(t *testing.T) {
+       h := HostInfo{}
+       c := &cert.NebulaCertificate{
+               Details: cert.NebulaCertificateDetails{
+                       Ips: []*net.IPNet{
+                               {
+                                       IP:   net.IPv4(1, 2, 3, 4),
+                                       Mask: net.IPv4Mask(255, 255, 255, 0),
+                               },
+                       },
+               },
+       }
+
+       // remoteCidr should be empty with only 1 ip address present in the 
certificate
+       h.CreateRemoteCIDR(c)
+       assert.Empty(t, h.remoteCidr)
+
+       // remoteCidr should be populated if there is also a subnet in the 
certificate
+       c.Details.Subnets = []*net.IPNet{
+               {
+                       IP:   net.IPv4(9, 2, 3, 4),
+                       Mask: net.IPv4Mask(255, 255, 255, 0),
+               },
+       }
+       h.CreateRemoteCIDR(c)
+       assert.NotEmpty(t, h.remoteCidr)
+       _, ok := h.remoteCidr.Lookup(netip.MustParseAddr("1.2.3.0"))
+       assert.False(t, ok, "An ip address within the certificates network 
should not be found")
+       _, ok = h.remoteCidr.Lookup(netip.MustParseAddr("1.2.3.4"))
+       assert.True(t, ok, "An exact ip address match should be found")
+       _, ok = h.remoteCidr.Lookup(netip.MustParseAddr("9.2.3.4"))
+       assert.True(t, ok, "An ip address within the subnets should be found")
+}
+
 func TestHostMap_DeleteHostInfo(t *testing.T) {
        l := test.NewLogger()
        hm := newHostMap(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nebula-1.9.6/outside.go new/nebula-1.9.7/outside.go
--- old/nebula-1.9.6/outside.go 2025-07-18 14:39:33.000000000 +0200
+++ new/nebula-1.9.7/outside.go 2025-10-10 17:31:46.000000000 +0200
@@ -286,16 +286,18 @@
 
 }
 
+// handleEncrypted returns true if a packet should be processed, false 
otherwise
 func (f *Interface) handleEncrypted(ci *ConnectionState, addr netip.AddrPort, 
h *header.H) bool {
-       // If connectionstate exists and the replay protector allows, process 
packet
-       // Else, send recv errors for 300 seconds after a restart to allow fast 
reconnection.
-       if ci == nil || !ci.window.Check(f.l, h.MessageCounter) {
+       // If connectionstate does not exist, send a recv error, if possible, 
to encourage a fast reconnect
+       if ci == nil {
                if addr.IsValid() {
                        f.maybeSendRecvError(addr, h.RemoteIndex)
-                       return false
-               } else {
-                       return false
                }
+               return false
+       }
+       // If the window check fails, refuse to process the packet, but don't 
send a recv error
+       if !ci.window.Check(f.l, h.MessageCounter) {
+               return false
        }
 
        return true
@@ -458,10 +460,6 @@
                return
        }
 
-       if !hostinfo.RecvErrorExceeded() {
-               return
-       }
-
        if hostinfo.remote.IsValid() && hostinfo.remote != addr {
                f.l.Infoln("Someone spoofing recv_errors? ", addr, 
hostinfo.remote)
                return
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nebula-1.9.6/udp/udp_generic.go 
new/nebula-1.9.7/udp/udp_generic.go
--- old/nebula-1.9.6/udp/udp_generic.go 2025-07-18 14:39:33.000000000 +0200
+++ new/nebula-1.9.7/udp/udp_generic.go 2025-10-10 17:31:46.000000000 +0200
@@ -10,9 +10,11 @@
 
 import (
        "context"
+       "errors"
        "fmt"
        "net"
        "net/netip"
+       "time"
 
        "github.com/sirupsen/logrus"
        "github.com/slackhq/nebula/config"
@@ -80,12 +82,22 @@
        fwPacket := &firewall.Packet{}
        nb := make([]byte, 12, 12)
 
+       var lastRecvErr time.Time
+
        for {
                // Just read one packet at a time
                n, rua, err := u.ReadFromUDPAddrPort(buffer)
                if err != nil {
-                       u.l.WithError(err).Debug("udp socket is closed, exiting 
read loop")
-                       return
+                       if errors.Is(err, net.ErrClosed) {
+                               u.l.WithError(err).Debug("udp socket is closed, 
exiting read loop")
+                               return
+                       }
+                       // Dampen unexpected message warns to once per minute
+                       if lastRecvErr.IsZero() || time.Since(lastRecvErr) > 
time.Minute {
+                               lastRecvErr = time.Now()
+                               u.l.WithError(err).Warn("unexpected udp socket 
receive error")
+                       }
+                       continue
                }
 
                r(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nebula-1.9.6/udp/udp_rio_windows.go 
new/nebula-1.9.7/udp/udp_rio_windows.go
--- old/nebula-1.9.6/udp/udp_rio_windows.go     2025-07-18 14:39:33.000000000 
+0200
+++ new/nebula-1.9.7/udp/udp_rio_windows.go     2025-10-10 17:31:46.000000000 
+0200
@@ -14,6 +14,7 @@
        "sync"
        "sync/atomic"
        "syscall"
+       "time"
        "unsafe"
 
        "github.com/sirupsen/logrus"
@@ -69,7 +70,7 @@
 
        u := &RIOConn{l: l}
 
-       err := u.bind(&windows.SockaddrInet6{Addr: addr.As16(), Port: port})
+       err := u.bind(l, &windows.SockaddrInet6{Addr: addr.As16(), Port: port})
        if err != nil {
                return nil, fmt.Errorf("bind: %w", err)
        }
@@ -85,11 +86,11 @@
        return u, nil
 }
 
-func (u *RIOConn) bind(sa windows.Sockaddr) error {
+func (u *RIOConn) bind(l *logrus.Logger, sa windows.Sockaddr) error {
        var err error
        u.sock, err = winrio.Socket(windows.AF_INET6, windows.SOCK_DGRAM, 
windows.IPPROTO_UDP)
        if err != nil {
-               return err
+               return fmt.Errorf("winrio.Socket error: %w", err)
        }
 
        // Enable v4 for this socket
@@ -103,35 +104,40 @@
        size := uint32(unsafe.Sizeof(flag))
        err = syscall.WSAIoctl(syscall.Handle(u.sock), 
syscall.SIO_UDP_CONNRESET, (*byte)(unsafe.Pointer(&flag)), size, nil, 0, &ret, 
nil, 0)
        if err != nil {
-               return err
+               // This is a best-effort to prevent errors from being returned 
by the udp recv operation.
+               // Quietly log a failure and continue.
+               l.WithError(err).Debug("failed to set UDP_CONNRESET ioctl")
        }
+
        ret = 0
        flag = 0
        size = uint32(unsafe.Sizeof(flag))
        SIO_UDP_NETRESET := uint32(syscall.IOC_IN | syscall.IOC_VENDOR | 15)
        err = syscall.WSAIoctl(syscall.Handle(u.sock), SIO_UDP_NETRESET, 
(*byte)(unsafe.Pointer(&flag)), size, nil, 0, &ret, nil, 0)
        if err != nil {
-               return err
+               // This is a best-effort to prevent errors from being returned 
by the udp recv operation.
+               // Quietly log a failure and continue.
+               l.WithError(err).Debug("failed to set UDP_NETRESET ioctl")
        }
 
        err = u.rx.Open()
        if err != nil {
-               return err
+               return fmt.Errorf("error rx.Open(): %w", err)
        }
 
        err = u.tx.Open()
        if err != nil {
-               return err
+               return fmt.Errorf("error tx.Open(): %w", err)
        }
 
        u.rq, err = winrio.CreateRequestQueue(u.sock, packetsPerRing, 1, 
packetsPerRing, 1, u.rx.cq, u.tx.cq, 0)
        if err != nil {
-               return err
+               return fmt.Errorf("error CreateRequestQueue: %w", err)
        }
 
        err = windows.Bind(u.sock, sa)
        if err != nil {
-               return err
+               return fmt.Errorf("error windows.Bind(): %w", err)
        }
 
        return nil
@@ -144,15 +150,22 @@
        fwPacket := &firewall.Packet{}
        nb := make([]byte, 12, 12)
 
+       var lastRecvErr time.Time
+
        for {
                // Just read one packet at a time
                n, rua, err := u.receive(buffer)
+
                if err != nil {
                        if errors.Is(err, net.ErrClosed) {
                                u.l.WithError(err).Debug("udp socket is closed, 
exiting read loop")
                                return
                        }
-                       u.l.WithError(err).Error("unexpected udp socket receive 
error")
+                       // Dampen unexpected message warns to once per minute
+                       if lastRecvErr.IsZero() || time.Since(lastRecvErr) > 
time.Minute {
+                               lastRecvErr = time.Now()
+                               u.l.WithError(err).Warn("unexpected udp socket 
receive error")
+                       }
                        continue
                }
 

++++++ vendor.tar.zst ++++++

Reply via email to