--0qIBMM64XW
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
I've been trying to get Direct Routing to work as well (without using
the tunneling method). I think a have a solution!
My patch is just a slightly modified version of one that Wensong has
given out. It's meant for the non-Director servers (LVS slaves?) and
version 2.2.12 of the kernel.
Let me explain my change; when I debugged the kernel, I noticed that
my "lo:0" interface had the flags
IFF_RUNNING, IFF_LOOPBACK and IFF_UP
and that's why the ARP reply were still being sent. So, adding a
check for IFF_LOOPBACK made it work as expected. Should this check be
tied to IFF_UP too?
Comments?
/dc.
--
FORTUNE COOKIE:
I was in a bar and I walked up to a beautiful woman and said, "Do you live
around here often?" She said, "You're wearing two different-color socks."
I said, "Yes, but to me they're the same because I go by thickness."
She said, "How do you feel?" And I said, "You know when you're sitting on a
chair and you lean back so you're just on two legs and you lean too far so
you almost fall over but at the last second you catch yourself? I feel like
that all the time..."
-- Steven Wright, "Gentlemen's Quarterly"
--0qIBMM64XW
Content-Type: text/plain
Content-Disposition: inline;
filename="ipvs-noarp-dc-2.2.12.patch"
Content-Transfer-Encoding: 7bit
--- kernel-source-2.2.12/net/ipv4/arp.c Mon Aug 9 13:04:41 1999
+++ kernel-source-2.2.12-noarp-4/net/ipv4/arp.c Sun Sep 19 20:49:05 1999
@@ -65,6 +65,7 @@
* clean up the APFDDI & gen. FDDI bits.
* Alexey Kuznetsov: new arp state machine;
* now it is in net/core/neighbour.c.
+ * Wensong Zhang : NOARP device (such as tunl) arp fix.
*/
/* RFC1122 Status:
@@ -534,6 +535,7 @@
struct rtable *rt;
unsigned char *sha, *tha;
u32 sip, tip;
+ struct device *tdev;
u16 dev_type = dev->type;
int addr_type;
struct in_device *in_dev = dev->ip_ptr;
@@ -627,6 +629,16 @@
* addresses. If this is one such, delete it.
*/
if (LOOPBACK(tip) || MULTICAST(tip))
+ goto out;
+
+/*
+ * Check for the device flags for the target IP. If the IFF_NOARP
+ * is set, just delete it. No arp reply is sent. -- WZ
+ *
+ * If IFF_LOOPBACK is set, then delete it too. /dc.
+ */
+ if ((tdev = ip_dev_find(tip)) &&
+ ((tdev->flags & IFF_NOARP) || (tdev->flags & IFF_LOOPBACK)))
goto out;
/*
--0qIBMM64XW
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
--0qIBMM64XW--
----------------------------------------------------------------------
LinuxVirtualServer.org mailing list - lvs-users@xxxxxxxxxxxxxxxxxxxxxx
To unsubscribe, e-mail: lvs-users-unsubscribe@xxxxxxxxxxxxxxxxxxxxxx
For additional commands, e-mail: lvs-users-help@xxxxxxxxxxxxxxxxxxxxxx
|