]> git.proxmox.com Git - iproute2.git/blame - 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
CommitLineData
6a1a5031
RJ
1Description: Revert "iproute: "list/flush/save default" selected all of the routes"
2 # ip route flush all
3 No longer worked as expected which breaks user scripts and
4 expectations. It no longer flushed all IPv4 routes.
5Bug: https://bugs.debian.og/891511
6Forwarded: not-needed
7Origin: upstream
8Applied-Upstream: https://patchwork.ozlabs.org/patch/884882/
9Author: Stephen Hemminger <stephen@networkplumber.org>
10Last-Update: 2018-03-12
11--- a/ip/iproute.c
12+++ b/ip/iproute.c
13@@ -191,42 +191,20 @@
14 return 0;
15 if ((filter.tos^r->rtm_tos)&filter.tosmask)
16 return 0;
17- if (filter.rdst.family) {
18- if (r->rtm_family != filter.rdst.family ||
19- filter.rdst.bitlen > r->rtm_dst_len)
20- return 0;
21- } else if (filter.rdst.flags & PREFIXLEN_SPECIFIED) {
22- if (filter.rdst.bitlen > r->rtm_dst_len)
23- return 0;
24- }
25- if (filter.mdst.family) {
26- if (r->rtm_family != filter.mdst.family ||
27- (filter.mdst.bitlen >= 0 &&
28- filter.mdst.bitlen < r->rtm_dst_len))
29- return 0;
30- } else if (filter.mdst.flags & PREFIXLEN_SPECIFIED) {
31- if (filter.mdst.bitlen >= 0 &&
32- filter.mdst.bitlen < r->rtm_dst_len)
33- return 0;
34- }
35- if (filter.rsrc.family) {
36- if (r->rtm_family != filter.rsrc.family ||
37- filter.rsrc.bitlen > r->rtm_src_len)
38- return 0;
39- } else if (filter.rsrc.flags & PREFIXLEN_SPECIFIED) {
40- if (filter.rsrc.bitlen > r->rtm_src_len)
41- return 0;
42- }
43- if (filter.msrc.family) {
44- if (r->rtm_family != filter.msrc.family ||
45- (filter.msrc.bitlen >= 0 &&
46- filter.msrc.bitlen < r->rtm_src_len))
47- return 0;
48- } else if (filter.msrc.flags & PREFIXLEN_SPECIFIED) {
49- if (filter.msrc.bitlen >= 0 &&
50- filter.msrc.bitlen < r->rtm_src_len)
51- return 0;
52- }
53+ if (filter.rdst.family &&
54+ (r->rtm_family != filter.rdst.family || filter.rdst.bitlen > r->rtm_dst_len))
55+ return 0;
56+ if (filter.mdst.family &&
57+ (r->rtm_family != filter.mdst.family ||
58+ (filter.mdst.bitlen >= 0 && filter.mdst.bitlen < r->rtm_dst_len)))
59+ return 0;
60+ if (filter.rsrc.family &&
61+ (r->rtm_family != filter.rsrc.family || filter.rsrc.bitlen > r->rtm_src_len))
62+ return 0;
63+ if (filter.msrc.family &&
64+ (r->rtm_family != filter.msrc.family ||
65+ (filter.msrc.bitlen >= 0 && filter.msrc.bitlen < r->rtm_src_len)))
66+ return 0;
67 if (filter.rvia.family) {
68 int family = r->rtm_family;
69
70@@ -243,9 +221,7 @@
71
72 if (tb[RTA_DST])
73 memcpy(&dst.data, RTA_DATA(tb[RTA_DST]), (r->rtm_dst_len+7)/8);
74- if (filter.rsrc.family || filter.msrc.family ||
75- filter.rsrc.flags & PREFIXLEN_SPECIFIED ||
76- filter.msrc.flags & PREFIXLEN_SPECIFIED) {
77+ if (filter.rsrc.family || filter.msrc.family) {
78 if (tb[RTA_SRC])
79 memcpy(&src.data, RTA_DATA(tb[RTA_SRC]), (r->rtm_src_len+7)/8);
80 }
81@@ -265,18 +241,15 @@
82 memcpy(&prefsrc.data, RTA_DATA(tb[RTA_PREFSRC]), host_len/8);
83 }
84
85- if ((filter.rdst.family || filter.rdst.flags & PREFIXLEN_SPECIFIED) &&
86- inet_addr_match(&dst, &filter.rdst, filter.rdst.bitlen))
87+ if (filter.rdst.family && inet_addr_match(&dst, &filter.rdst, filter.rdst.bitlen))
88 return 0;
89- if ((filter.mdst.family || filter.mdst.flags & PREFIXLEN_SPECIFIED) &&
90+ if (filter.mdst.family && filter.mdst.bitlen >= 0 &&
91 inet_addr_match(&dst, &filter.mdst, r->rtm_dst_len))
92 return 0;
93
94- if ((filter.rsrc.family || filter.rsrc.flags & PREFIXLEN_SPECIFIED) &&
95- inet_addr_match(&src, &filter.rsrc, filter.rsrc.bitlen))
96+ if (filter.rsrc.family && inet_addr_match(&src, &filter.rsrc, filter.rsrc.bitlen))
97 return 0;
98- if ((filter.msrc.family || filter.msrc.flags & PREFIXLEN_SPECIFIED) &&
99- filter.msrc.bitlen >= 0 &&
100+ if (filter.msrc.family && filter.msrc.bitlen >= 0 &&
101 inet_addr_match(&src, &filter.msrc, r->rtm_src_len))
102 return 0;
103
104--- a/lib/utils.c
105+++ b/lib/utils.c
106@@ -658,7 +658,6 @@
107 dst->family = family;
108 dst->bytelen = 0;
109 dst->bitlen = 0;
110- dst->flags |= PREFIXLEN_SPECIFIED;
111 return 0;
112 }
113