Your message dated Mon, 20 Mar 2023 00:59:53 +0100
with message-id <zbeh+x6q4apjm...@ramacher.at>
and subject line Re: Bug#1033180: unblock: stayrtr/0.5.1-1
has caused the Debian Bug report #1033180,
regarding unblock: stayrtr/0.5.1-1
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ow...@bugs.debian.org
immediately.)


-- 
1033180: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1033180
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian....@packages.debian.org
Usertags: unblock
X-Debbugs-Cc: stay...@packages.debian.org
Control: affects -1 + src:stayrtr

Please unblock package stayrtr

The new upstream release contains only an important bug fix, needed to 
stop the daemon from crashing in specific conditions.
(This is the upstream bug report of a Debian user who was stuck with the 
version in testing: https://github.com/bgp/stayrtr/issues/96.)

diff attached, edited for clarity.

unblock stayrtr/0.5.1-1

-- 
ciao,
Marco
diff -Nru stayrtr-0.5.0/cmd/stayrtr/stayrtr.go 
stayrtr-0.5.1/cmd/stayrtr/stayrtr.go
--- stayrtr-0.5.0/cmd/stayrtr/stayrtr.go        2023-02-23 22:35:40.000000000 
+0100
+++ stayrtr-0.5.1/cmd/stayrtr/stayrtr.go        2023-03-01 15:36:19.000000000 
+0100
@@ -261,6 +261,38 @@
                vrplist = append(vrplist, vrp)
        }
 
+       sort.Slice(vrplist, func(i, j int) bool {
+               // Sort VRPs as per draft-ietf-sidrops-8210bis-10
+               /*
+                       11. ROA PDU Race Minimization
+                               When a cache is sending ROA (IPv4 or IPv6) PDUs 
to a router, especially an initial
+                               full load in response to a Reset Query PDU, two 
undesirable race conditions are possible:
+
+                       Break Before Make:
+                               For some prefix P, an AS may announce two (or 
more) ROAs because they are in the
+                               process of changing what provider AS is 
announcing P. This is a case of "make before break."
+                               If a cache is feeding a router and sends the 
one not yet in service a significant time
+                               before sending the one currently in service, 
then BGP data could be marked invalid during
+                               the interval. To minimize that interval, the 
cache SHOULD announce all ROAs for the same
+                               prefix as close to sequentially as possible.
+                       Shorter Prefix First:
+                               If an AS has issued a ROA for P0, and another 
AS (likely their customer) has issued a ROA
+                               for P1 which is a sub-prefix of P0, a router 
which receives the ROA for P0 before that for
+                               P1 is likely to mark a BGP prefix P1 invalid. 
Therefore, the cache SHOULD announce the
+                               sub-prefix P1 before the covering prefix P0.
+               */
+               CIDRSizei, _ := vrplist[i].Prefix.Mask.Size()
+               CIDRSizej, _ := vrplist[j].Prefix.Mask.Size()
+               if CIDRSizei == CIDRSizej {
+                       if vrplist[i].MaxLen != vrplist[j].MaxLen {
+                               return vrplist[i].MaxLen > vrplist[j].MaxLen
+                       }
+                       return bytes.Compare(vrplist[i].Prefix.IP, 
vrplist[j].Prefix.IP) < 1
+               } else {
+                       return CIDRSizei > CIDRSizej
+               }
+       })
+
        for _, v := range brklistjson {
                if v.Expires != nil {
                        // Prevent stale VRPs from being considered
@@ -299,7 +331,7 @@
                }
 
                // Ensure that these are sorted, otherwise they
-               // don't has right.
+               // don't hash right.
                sort.Slice(v.Providers, func(i, j int) bool {
                        return v.Providers[i] < v.Providers[j]
                })
diff -Nru stayrtr-0.5.0/cmd/stayrtr/stayrtr_test.go 
stayrtr-0.5.1/cmd/stayrtr/stayrtr_test.go
--- stayrtr-0.5.0/cmd/stayrtr/stayrtr_test.go   2023-02-23 22:35:40.000000000 
+0100
+++ stayrtr-0.5.1/cmd/stayrtr/stayrtr_test.go   2023-03-01 15:36:19.000000000 
+0100
@@ -103,11 +103,6 @@
        got, _, _, count, v4count, v6count := processData(stuff, nil, nil)
        want := []rtr.VRP{
                {
-                       Prefix: mustParseIPNet("192.168.0.0/24"),
-                       MaxLen: 24,
-                       ASN:    123,
-               },
-               {
                        Prefix: mustParseIPNet("2001:db8::/32"),
                        MaxLen: 33,
                        ASN:    123,
@@ -117,6 +112,11 @@
                        MaxLen: 25,
                        ASN:    123,
                },
+               {
+                       Prefix: mustParseIPNet("192.168.0.0/24"),
+                       MaxLen: 24,
+                       ASN:    123,
+               },
        }
        if count != 3 || v4count != 2 || v6count != 1 {
                t.Errorf("Wanted count = 3, v4count = 2, v6count = 1, but got 
%d, %d, %d", count, v4count, v6count)
diff -Nru stayrtr-0.5.0/debian/changelog stayrtr-0.5.1/debian/changelog
--- stayrtr-0.5.0/debian/changelog      2023-02-27 03:36:29.000000000 +0100
+++ stayrtr-0.5.1/debian/changelog      2023-03-05 01:11:49.000000000 +0100
@@ -1,3 +1,9 @@
+stayrtr (0.5.1-1) unstable; urgency=medium
+
+  * New upstream release.
+
+ -- Marco d'Itri <m...@linux.it>  Sun, 05 Mar 2023 01:11:49 +0100
+
 stayrtr (0.5.0-1) unstable; urgency=medium
 
   * New upstream release.
diff -Nru stayrtr-0.5.0/debian/patches/series 
stayrtr-0.5.1/debian/patches/series
--- stayrtr-0.5.0/debian/patches/series 2023-02-27 03:20:33.000000000 +0100
+++ stayrtr-0.5.1/debian/patches/series 1970-01-01 01:00:00.000000000 +0100
@@ -1 +0,0 @@
-commit-8a3a71e
diff -Nru stayrtr-0.5.0/go.mod stayrtr-0.5.1/go.mod
--- stayrtr-0.5.0/go.mod        2023-02-23 22:35:40.000000000 +0100
+++ stayrtr-0.5.1/go.mod        2023-03-01 15:36:19.000000000 +0100
@@ -7,6 +7,6 @@
        github.com/prometheus/client_golang v1.11.1
        github.com/sirupsen/logrus v1.8.1
        github.com/stretchr/testify v1.4.0
-       golang.org/x/crypto v0.0.0-20210921155107-089bfa567519
-       golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1
+       golang.org/x/crypto v0.6.0
+       golang.org/x/sys v0.5.0
 )

Attachment: signature.asc
Description: PGP signature


--- End Message ---
--- Begin Message ---
On 2023-03-19 02:23:00 +0100, Marco d'Itri wrote:
> Package: release.debian.org
> Severity: normal
> User: release.debian....@packages.debian.org
> Usertags: unblock
> X-Debbugs-Cc: stay...@packages.debian.org
> Control: affects -1 + src:stayrtr
> 
> Please unblock package stayrtr
> 
> The new upstream release contains only an important bug fix, needed to 
> stop the daemon from crashing in specific conditions.
> (This is the upstream bug report of a Debian user who was stuck with the 
> version in testing: https://github.com/bgp/stayrtr/issues/96.)
> 
> diff attached, edited for clarity.
> 
> unblock stayrtr/0.5.1-1

stayrtr is not a key package and has successful autopkgtests. It will
migrate without an unblock in a couple of days.

Cheers

> 
> -- 
> ciao,
> Marco

> diff -Nru stayrtr-0.5.0/cmd/stayrtr/stayrtr.go 
> stayrtr-0.5.1/cmd/stayrtr/stayrtr.go
> --- stayrtr-0.5.0/cmd/stayrtr/stayrtr.go      2023-02-23 22:35:40.000000000 
> +0100
> +++ stayrtr-0.5.1/cmd/stayrtr/stayrtr.go      2023-03-01 15:36:19.000000000 
> +0100
> @@ -261,6 +261,38 @@
>               vrplist = append(vrplist, vrp)
>       }
>  
> +     sort.Slice(vrplist, func(i, j int) bool {
> +             // Sort VRPs as per draft-ietf-sidrops-8210bis-10
> +             /*
> +                     11. ROA PDU Race Minimization
> +                             When a cache is sending ROA (IPv4 or IPv6) PDUs 
> to a router, especially an initial
> +                             full load in response to a Reset Query PDU, two 
> undesirable race conditions are possible:
> +
> +                     Break Before Make:
> +                             For some prefix P, an AS may announce two (or 
> more) ROAs because they are in the
> +                             process of changing what provider AS is 
> announcing P. This is a case of "make before break."
> +                             If a cache is feeding a router and sends the 
> one not yet in service a significant time
> +                             before sending the one currently in service, 
> then BGP data could be marked invalid during
> +                             the interval. To minimize that interval, the 
> cache SHOULD announce all ROAs for the same
> +                             prefix as close to sequentially as possible.
> +                     Shorter Prefix First:
> +                             If an AS has issued a ROA for P0, and another 
> AS (likely their customer) has issued a ROA
> +                             for P1 which is a sub-prefix of P0, a router 
> which receives the ROA for P0 before that for
> +                             P1 is likely to mark a BGP prefix P1 invalid. 
> Therefore, the cache SHOULD announce the
> +                             sub-prefix P1 before the covering prefix P0.
> +             */
> +             CIDRSizei, _ := vrplist[i].Prefix.Mask.Size()
> +             CIDRSizej, _ := vrplist[j].Prefix.Mask.Size()
> +             if CIDRSizei == CIDRSizej {
> +                     if vrplist[i].MaxLen != vrplist[j].MaxLen {
> +                             return vrplist[i].MaxLen > vrplist[j].MaxLen
> +                     }
> +                     return bytes.Compare(vrplist[i].Prefix.IP, 
> vrplist[j].Prefix.IP) < 1
> +             } else {
> +                     return CIDRSizei > CIDRSizej
> +             }
> +     })
> +
>       for _, v := range brklistjson {
>               if v.Expires != nil {
>                       // Prevent stale VRPs from being considered
> @@ -299,7 +331,7 @@
>               }
>  
>               // Ensure that these are sorted, otherwise they
> -             // don't has right.
> +             // don't hash right.
>               sort.Slice(v.Providers, func(i, j int) bool {
>                       return v.Providers[i] < v.Providers[j]
>               })
> diff -Nru stayrtr-0.5.0/cmd/stayrtr/stayrtr_test.go 
> stayrtr-0.5.1/cmd/stayrtr/stayrtr_test.go
> --- stayrtr-0.5.0/cmd/stayrtr/stayrtr_test.go 2023-02-23 22:35:40.000000000 
> +0100
> +++ stayrtr-0.5.1/cmd/stayrtr/stayrtr_test.go 2023-03-01 15:36:19.000000000 
> +0100
> @@ -103,11 +103,6 @@
>       got, _, _, count, v4count, v6count := processData(stuff, nil, nil)
>       want := []rtr.VRP{
>               {
> -                     Prefix: mustParseIPNet("192.168.0.0/24"),
> -                     MaxLen: 24,
> -                     ASN:    123,
> -             },
> -             {
>                       Prefix: mustParseIPNet("2001:db8::/32"),
>                       MaxLen: 33,
>                       ASN:    123,
> @@ -117,6 +112,11 @@
>                       MaxLen: 25,
>                       ASN:    123,
>               },
> +             {
> +                     Prefix: mustParseIPNet("192.168.0.0/24"),
> +                     MaxLen: 24,
> +                     ASN:    123,
> +             },
>       }
>       if count != 3 || v4count != 2 || v6count != 1 {
>               t.Errorf("Wanted count = 3, v4count = 2, v6count = 1, but got 
> %d, %d, %d", count, v4count, v6count)
> diff -Nru stayrtr-0.5.0/debian/changelog stayrtr-0.5.1/debian/changelog
> --- stayrtr-0.5.0/debian/changelog    2023-02-27 03:36:29.000000000 +0100
> +++ stayrtr-0.5.1/debian/changelog    2023-03-05 01:11:49.000000000 +0100
> @@ -1,3 +1,9 @@
> +stayrtr (0.5.1-1) unstable; urgency=medium
> +
> +  * New upstream release.
> +
> + -- Marco d'Itri <m...@linux.it>  Sun, 05 Mar 2023 01:11:49 +0100
> +
>  stayrtr (0.5.0-1) unstable; urgency=medium
>  
>    * New upstream release.
> diff -Nru stayrtr-0.5.0/debian/patches/series 
> stayrtr-0.5.1/debian/patches/series
> --- stayrtr-0.5.0/debian/patches/series       2023-02-27 03:20:33.000000000 
> +0100
> +++ stayrtr-0.5.1/debian/patches/series       1970-01-01 01:00:00.000000000 
> +0100
> @@ -1 +0,0 @@
> -commit-8a3a71e
> diff -Nru stayrtr-0.5.0/go.mod stayrtr-0.5.1/go.mod
> --- stayrtr-0.5.0/go.mod      2023-02-23 22:35:40.000000000 +0100
> +++ stayrtr-0.5.1/go.mod      2023-03-01 15:36:19.000000000 +0100
> @@ -7,6 +7,6 @@
>       github.com/prometheus/client_golang v1.11.1
>       github.com/sirupsen/logrus v1.8.1
>       github.com/stretchr/testify v1.4.0
> -     golang.org/x/crypto v0.0.0-20210921155107-089bfa567519
> -     golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1
> +     golang.org/x/crypto v0.6.0
> +     golang.org/x/sys v0.5.0
>  )




-- 
Sebastian Ramacher

--- End Message ---

Reply via email to