]> git.proxmox.com Git - iproute2.git/blobdiff - debian/patches/0005-revert-flush-default.patch
Update to 4.15, fix /bin/ss with no header flag
[iproute2.git] / debian / patches / 0005-revert-flush-default.patch
diff --git a/debian/patches/0005-revert-flush-default.patch b/debian/patches/0005-revert-flush-default.patch
new file mode 100644 (file)
index 0000000..3a5b481
--- /dev/null
@@ -0,0 +1,113 @@
+Description: Revert "iproute: "list/flush/save default" selected all of the routes"
+       # ip route flush all
+ No longer worked as expected which breaks user scripts and
+ expectations. It no longer flushed all IPv4 routes.
+Bug: https://bugs.debian.og/891511
+Forwarded: not-needed
+Origin: upstream
+Applied-Upstream: https://patchwork.ozlabs.org/patch/884882/
+Author: Stephen Hemminger <stephen@networkplumber.org>
+Last-Update: 2018-03-12
+--- a/ip/iproute.c
++++ b/ip/iproute.c
+@@ -191,42 +191,20 @@
+               return 0;
+       if ((filter.tos^r->rtm_tos)&filter.tosmask)
+               return 0;
+-      if (filter.rdst.family) {
+-              if (r->rtm_family != filter.rdst.family ||
+-                  filter.rdst.bitlen > r->rtm_dst_len)
+-                      return 0;
+-      } else if (filter.rdst.flags & PREFIXLEN_SPECIFIED) {
+-              if (filter.rdst.bitlen > r->rtm_dst_len)
+-                      return 0;
+-      }
+-      if (filter.mdst.family) {
+-              if (r->rtm_family != filter.mdst.family ||
+-                  (filter.mdst.bitlen >= 0 &&
+-                   filter.mdst.bitlen < r->rtm_dst_len))
+-                      return 0;
+-      } else if (filter.mdst.flags & PREFIXLEN_SPECIFIED) {
+-              if (filter.mdst.bitlen >= 0 &&
+-                  filter.mdst.bitlen < r->rtm_dst_len)
+-                      return 0;
+-      }
+-      if (filter.rsrc.family) {
+-              if (r->rtm_family != filter.rsrc.family ||
+-                  filter.rsrc.bitlen > r->rtm_src_len)
+-                      return 0;
+-      } else if (filter.rsrc.flags & PREFIXLEN_SPECIFIED) {
+-              if (filter.rsrc.bitlen > r->rtm_src_len)
+-                      return 0;
+-      }
+-      if (filter.msrc.family) {
+-              if (r->rtm_family != filter.msrc.family ||
+-                  (filter.msrc.bitlen >= 0 &&
+-                   filter.msrc.bitlen < r->rtm_src_len))
+-                      return 0;
+-      } else if (filter.msrc.flags & PREFIXLEN_SPECIFIED) {
+-              if (filter.msrc.bitlen >= 0 &&
+-                  filter.msrc.bitlen < r->rtm_src_len)
+-                      return 0;
+-      }
++      if (filter.rdst.family &&
++          (r->rtm_family != filter.rdst.family || filter.rdst.bitlen > r->rtm_dst_len))
++              return 0;
++      if (filter.mdst.family &&
++          (r->rtm_family != filter.mdst.family ||
++           (filter.mdst.bitlen >= 0 && filter.mdst.bitlen < r->rtm_dst_len)))
++              return 0;
++      if (filter.rsrc.family &&
++          (r->rtm_family != filter.rsrc.family || filter.rsrc.bitlen > r->rtm_src_len))
++              return 0;
++      if (filter.msrc.family &&
++          (r->rtm_family != filter.msrc.family ||
++           (filter.msrc.bitlen >= 0 && filter.msrc.bitlen < r->rtm_src_len)))
++              return 0;
+       if (filter.rvia.family) {
+               int family = r->rtm_family;
+@@ -243,9 +221,7 @@
+       if (tb[RTA_DST])
+               memcpy(&dst.data, RTA_DATA(tb[RTA_DST]), (r->rtm_dst_len+7)/8);
+-      if (filter.rsrc.family || filter.msrc.family ||
+-          filter.rsrc.flags & PREFIXLEN_SPECIFIED ||
+-          filter.msrc.flags & PREFIXLEN_SPECIFIED) {
++      if (filter.rsrc.family || filter.msrc.family) {
+               if (tb[RTA_SRC])
+                       memcpy(&src.data, RTA_DATA(tb[RTA_SRC]), (r->rtm_src_len+7)/8);
+       }
+@@ -265,18 +241,15 @@
+                       memcpy(&prefsrc.data, RTA_DATA(tb[RTA_PREFSRC]), host_len/8);
+       }
+-      if ((filter.rdst.family || filter.rdst.flags & PREFIXLEN_SPECIFIED) &&
+-          inet_addr_match(&dst, &filter.rdst, filter.rdst.bitlen))
++      if (filter.rdst.family && inet_addr_match(&dst, &filter.rdst, filter.rdst.bitlen))
+               return 0;
+-      if ((filter.mdst.family || filter.mdst.flags & PREFIXLEN_SPECIFIED) &&
++      if (filter.mdst.family && filter.mdst.bitlen >= 0 &&
+           inet_addr_match(&dst, &filter.mdst, r->rtm_dst_len))
+               return 0;
+-      if ((filter.rsrc.family || filter.rsrc.flags & PREFIXLEN_SPECIFIED) &&
+-          inet_addr_match(&src, &filter.rsrc, filter.rsrc.bitlen))
++      if (filter.rsrc.family && inet_addr_match(&src, &filter.rsrc, filter.rsrc.bitlen))
+               return 0;
+-      if ((filter.msrc.family || filter.msrc.flags & PREFIXLEN_SPECIFIED) &&
+-          filter.msrc.bitlen >= 0 &&
++      if (filter.msrc.family && filter.msrc.bitlen >= 0 &&
+           inet_addr_match(&src, &filter.msrc, r->rtm_src_len))
+               return 0;
+--- a/lib/utils.c
++++ b/lib/utils.c
+@@ -658,7 +658,6 @@
+               dst->family = family;
+               dst->bytelen = 0;
+               dst->bitlen = 0;
+-              dst->flags |= PREFIXLEN_SPECIFIED;
+               return 0;
+       }