bab9bb6b69
Create new directories: ceph config config-files filesystem kernel kernel/kernel-modules ldap logging strorage-drivers tools utilities virt Retire directories: connectivity core devtools support extended Delete two packages: tgt irqbalance Relocated packages: base/ dhcp initscripts libevent lighttpd linuxptp memcached net-snmp novnc ntp openssh pam procps sanlock shadow sudo systemd util-linux vim watchdog ceph/ python-cephclient config/ facter puppet-4.8.2 puppet-modules filesystem/ e2fsprogs nfs-utils nfscheck kernel/ kernel-std kernel-rt kernel/kernel-modules/ mlnx-ofa_kernel ldap/ nss-pam-ldapd openldap logging/ syslog-ng logrotate networking/ lldpd iproute mellanox python-ryu mlx4-config python/ python-2.7.5 python-django python-gunicorn python-setuptools python-smartpm python-voluptuous security/ shim-signed shim-unsigned tboot strorage-drivers/ python-3parclient python-lefthandclient virt/ cloud-init libvirt libvirt-python qemu tools/ storage-topology vm-topology utilities/ tis-extensions namespace-utils nova-utils update-motd Change-Id: I37ade764d873c701b35eac5881eb40412ba64a86 Story: 2002801 Task: 22687 Signed-off-by: Scott Little <scott.little@windriver.com>
59 lines
2.6 KiB
Diff
59 lines
2.6 KiB
Diff
From a4302d3590621f64e639f8e075f423d5120c007e Mon Sep 17 00:00:00 2001
|
|
Message-Id: <a4302d3590621f64e639f8e075f423d5120c007e.1528226387.git.Jim.Somerville@windriver.com>
|
|
In-Reply-To: <c8270e79f6b7008fde44b8d5aa6314d8cf89d3ed.1528226387.git.Jim.Somerville@windriver.com>
|
|
References: <c8270e79f6b7008fde44b8d5aa6314d8cf89d3ed.1528226387.git.Jim.Somerville@windriver.com>
|
|
From: Allain Legacy <allain.legacy@windriver.com>
|
|
Date: Fri, 29 Jan 2016 12:13:40 -0500
|
|
Subject: [PATCH 06/32] CGTS-3744: route: do not cache fib route info on local
|
|
routes with oif
|
|
|
|
For local routes that require a particular output interface we do not want to
|
|
cache the result. Caching the result causes incorrect behaviour when there are
|
|
multiple source addresses on the interface. The end result being that if the
|
|
intended recipient is waiting on that interface for the packet he won't receive
|
|
it because it will be delivered on the loopback interface and the IP_PKTINFO
|
|
ipi_ifindex will be set to the loopback interface as well.
|
|
|
|
This can be tested by running a program such as "dhcp_release" which attempts
|
|
to inject a packet on a particular interface so that it is received by another
|
|
program on the same board. The receiving process should see an IP_PKTINFO
|
|
ipi_ifndex value of the source interface (e.g., eth1) instead of the loopback
|
|
interface (e.g., lo). The packet will still appear on the loopback interface
|
|
in tcpdump but the important aspect is that the CMSG info is correct.
|
|
|
|
Sample dhcp_release command line:
|
|
|
|
dhcp_release eth1 192.168.204.222 02:11:33:22:44:66
|
|
|
|
Signed-off-by: Allain Legacy <allain.legacy@windriver.com>
|
|
Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>
|
|
---
|
|
net/ipv4/route.c | 11 +++++++++++
|
|
1 file changed, 11 insertions(+)
|
|
|
|
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
|
|
index f19aca2..5246096 100644
|
|
--- a/net/ipv4/route.c
|
|
+++ b/net/ipv4/route.c
|
|
@@ -2057,6 +2057,17 @@ static struct rtable *__mkroute_output(const struct fib_result *res,
|
|
*/
|
|
if (fi && res->prefixlen < 4)
|
|
fi = NULL;
|
|
+ } else if ((type == RTN_LOCAL) && (orig_oif != 0)) {
|
|
+ /*
|
|
+ * For local routes that require a particular output interface we do
|
|
+ * not want to cache the result. Caching the result causes incorrect
|
|
+ * behaviour when there are multiple source addresses on the interface.
|
|
+ * The end result being that if the intended recipient is waiting on
|
|
+ * that interface for the packet he won't receive it because it will be
|
|
+ * delivered on the loopback interface and the IP_PKTINFO ipi_ifindex
|
|
+ * will be set to the loopback interface as well.
|
|
+ */
|
|
+ fi = NULL;
|
|
}
|
|
|
|
fnhe = NULL;
|
|
--
|
|
1.8.3.1
|
|
|