Re: ARPing & Direct Routing

To: lvs-users@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: ARPing & Direct Routing
From: David Couture <dc@xxxxxxxxxxxxxx>
Date: Sun, 19 Sep 1999 21:39:06 -0600 (MDT)
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


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?



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"

Content-Type: text/plain
Content-Disposition: inline;
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;

Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit


---------------------------------------------------------------------- mailing list - lvs-users@xxxxxxxxxxxxxxxxxxxxxx
To unsubscribe, e-mail: lvs-users-unsubscribe@xxxxxxxxxxxxxxxxxxxxxx
For additional commands, e-mail: lvs-users-help@xxxxxxxxxxxxxxxxxxxxxx

<Prev in Thread] Current Thread [Next in Thread>