Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 27 Oct 1995 10:10:51 -0400
From:      "Garrett A. Wollman" <wollman@lcs.mit.edu>
To:        mikebo@tellabs.com
Cc:        bugs@freebsd.org
Subject:   Re: 2.1.0-951020-SNAP: Major bug in NFS again!
Message-ID:  <9510271410.AA22857@halloran-eldar.lcs.mit.edu>
In-Reply-To: <199510262207.RAA00763@sunc210.tellabs.com>
References:  <9510261811.AA28231@olympus> <199510262207.RAA00763@sunc210.tellabs.com>

next in thread | previous in thread | raw e-mail | index | archive | help
<<On Thu, 26 Oct 1995 17:07:33 -0500 (CDT), mikebo@tellabs.com said:

> I do have a question:
> Would a FreeBSD server always respond to a client from the same interface
> on which it received a request - even though its route table has a
> different route to the clients network?

No.  Source address != interface.  If the source address is already
set in the outgoing IP packet, ip_output() will not change it even if
the packet goes out an interface which does not have that address on
it.  (Otherwise forwarding would not work!)  From ip_output:

        /*
         * If source address not specified yet, use address
         * of outgoing interface.
         */
        if (ip->ip_src.s_addr == INADDR_ANY)
                ip->ip_src = IA_SIN(ia)->sin_addr;


You can force UDP to fill in a specific source address by calling
bind().  A correct implementation of ANY UDP-based protocol will
get a list of interfaces and create a single, bound socket per
interface address.  (Half the glue to obviate this problem is present
in the kernel.)

-GAWollman

--
Garrett A. Wollman   | Shashish is simple, it's discreet, it's brief. ... 
wollman@lcs.mit.edu  | Shashish is the bonding of hearts in spite of distance.
Opinions not those of| It is a bond more powerful than absence.  We like people
MIT, LCS, ANA, or NSA| who like Shashish.  - Claude McKenzie + Florent Vollant



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?9510271410.AA22857>