summaryrefslogtreecommitdiff
path: root/target/linux/generic/patches-4.3/192-net-Fix-presrc-lookups.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/generic/patches-4.3/192-net-Fix-presrc-lookups.patch')
-rw-r--r--target/linux/generic/patches-4.3/192-net-Fix-presrc-lookups.patch58
1 files changed, 0 insertions, 58 deletions
diff --git a/target/linux/generic/patches-4.3/192-net-Fix-presrc-lookups.patch b/target/linux/generic/patches-4.3/192-net-Fix-presrc-lookups.patch
deleted file mode 100644
index d47e808..0000000
--- a/target/linux/generic/patches-4.3/192-net-Fix-presrc-lookups.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From patchwork Tue Nov 3 23:59:28 2015
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: net: Fix prefsrc lookups
-From: David Ahern <dsa@cumulusnetworks.com>
-X-Patchwork-Id: 539645
-Message-Id: <1446595168-27323-1-git-send-email-dsa@cumulusnetworks.com>
-To: netdev@vger.kernel.org
-Cc: vladi@aresgate.net, David Ahern <dsa@cumulusnetworks.com>
-Date: Tue, 3 Nov 2015 15:59:28 -0800
-
-A bug report (https://bugzilla.kernel.org/show_bug.cgi?id=107071) noted
-that the follwoing ip command is failing with v4.3:
-
- $ ip route add 10.248.5.0/24 dev bond0.250 table vlan_250 src 10.248.5.154
- RTNETLINK answers: Invalid argument
-
-021dd3b8a142d changed the lookup of the given preferred source address to
-use the table id passed in, but this assumes the local entries are in the
-given table which is not necessarily true for non-VRF use cases. When
-validating the preferred source fallback to the local table on failure.
-
-Fixes: 021dd3b8a142d ("net: Add routes to the table associated with the device")
-Signed-off-by: David Ahern <dsa@cumulusnetworks.com>
----
-This is needed in v4.3.
-
- net/ipv4/fib_semantics.c | 13 ++++++++++---
- 1 file changed, 10 insertions(+), 3 deletions(-)
-
---- a/net/ipv4/fib_semantics.c
-+++ b/net/ipv4/fib_semantics.c
-@@ -864,14 +864,21 @@ static bool fib_valid_prefsrc(struct fib
- if (cfg->fc_type != RTN_LOCAL || !cfg->fc_dst ||
- fib_prefsrc != cfg->fc_dst) {
- u32 tb_id = cfg->fc_table;
-+ int rc;
-
- if (tb_id == RT_TABLE_MAIN)
- tb_id = RT_TABLE_LOCAL;
-
-- if (inet_addr_type_table(cfg->fc_nlinfo.nl_net,
-- fib_prefsrc, tb_id) != RTN_LOCAL) {
-- return false;
-+ rc = inet_addr_type_table(cfg->fc_nlinfo.nl_net,
-+ fib_prefsrc, tb_id);
-+
-+ if (rc != RTN_LOCAL && tb_id != RT_TABLE_LOCAL) {
-+ rc = inet_addr_type_table(cfg->fc_nlinfo.nl_net,
-+ fib_prefsrc, RT_TABLE_LOCAL);
- }
-+
-+ if (rc != RTN_LOCAL)
-+ return false;
- }
- return true;
- }