On Mon, Jul 02, 2001 at 04:34:40PM +0300, Iasen Kostoff wrote:
> 
> 
> On Mon, 2 Jul 2001, Ruslan Ermilov wrote:
> 
> > On Mon, Jul 02, 2001 at 01:16:19PM +0300, Iasen Kostoff wrote:
> > > 
> > > 
> > > On Mon, 2 Jul 2001, Ruslan Ermilov wrote:
> > > 
> > > > On Mon, Jul 02, 2001 at 12:49:44PM +0300, Iasen Kostoff wrote:
> > > > > 
> > > > > 
> > > > > On Mon, 2 Jul 2001, Ruslan Ermilov wrote:
> > > > > 
> > > > > > On Sun, Jul 01, 2001 at 03:15:56PM -0600, Wes Peters wrote:
> > > > > > > Ruslan Ermilov wrote:
> > > > > > > > 
> > > > > > > > BTW, Wes, I'm still waiting for a working example of an indirect route
> > > > > > > > with also indirect gateway.
> > > > > > > 
> > > > > > > Any indirect route via the opposite end of a point-to-point connection.  
> > > > > > > Right?
> > > > > > > 
> > > > > > You probably meant that the gateway is accessible via the opposite end.
> > > > > > 
> > > > > > But the gateway value on a P2P link is a no-op.  Whatever gateway you
> > > > > > specify, the actual gateway is always the "opposite end".  Here, the
> > > > > > gateway only helps the routing code to select the right interface.
> > > > > > I.e., on a 1.1.1.1 -> 2.2.2.2 configured tun0 interface, the following
> > > > > > two commands are equivalent:
> > > > > > 
> > > > > > route add -net 10 2.2.2.2
> > > > > > route add -net 10 -iface tun0
> > > > > > 
> > > > > > Funny though that you're giving this example, as it only works starting
> > > > > > with revision 1.62 (from June 4, 2001) of sys/net/route.c.  Before this,
> > > > > > routing code incorrectly set up the interface based on destination, not
> > > > > > the gateway:
> > > > > > 
> > > > > > # ifconfig tun0
> > > > > > tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
> > > > > >     inet 1.1.1.1 --> 2.2.2.2 netmask 0xff000000 
> > > > > > 
> > > > > > # netstat -rn
> > > > > > Routing tables
> > > > > > 
> > > > > > Internet:
> > > > > > Destination        Gateway            Flags     Refs     Use     Netif 
>Expire
> > > > > > default            192.168.4.65       UGSc        1        0     rl0
> > > > > > 2.2.2.2            1.1.1.1            UH          0        0    tun0
> > > > > > 3.3.3.3            tun0               UHS         1        0    tun0
> > > > > > 127.0.0.1          127.0.0.1          UH          1        6     lo0
> > > > > > 192.168.4          link#1             UC          3        0     rl0 =>
> > > > > > 192.168.4.65       0:d0:b7:16:9c:c6   UHLW        2     1576     rl0    899
> > > > > > 192.168.4.115      0:c0:df:3:2d:79    UHLW        2        2     lo0
> > > > > > 
> > > > > > # route add -net 10 3.3.3.3
> > > > > > add net 10: gateway 3.3.3.3
> > > > > > 
> > > > > > # netstat -rn | grep 3.3.3.3
> > > > > > 3.3.3.3            tun0               UHS         1        0    tun0
> > > > > > 10                 3.3.3.3            UGSc        0        0     rl0
> > > > > >                                                                 ^^^^ oops
> > > > > > 
> > > > > > I still think we should disallow such routes on non-P2P interfaces, at
> > > > > > least.  What do you think?
> > > > > > 
> > > > > If you speek about disallowing routes like : route add -net 10 3.3.3.3
> > > > > I don't think we should. I'm using such routes now (ethernet bridges for
> > > > > leased lines) and don't want to loose this functionality.
> > > > > 
> > > > Could you please describe your setup in more details?
> > > > 
> > > > I would like to disallow such routes for broadcast-like interfaces like
> > > > Ethernet, because on these interfaces, adding such a route results in:
> > > > 
> > > > arplookup 3.3.3.3 failed: host is not on local network
> > > > arpresolve: can't allocate llinfo for 3.3.3.3rt
> > > > 
> > > > It is a MUST here that the gateway should be directly connected
> > > > (via ARP).
> > > > 
> > > If you have this route : 
> > > 3.3.3.3            link#1             UC          1        0     rl0 =>
> > > 
> > > it won't result in this error message.
> > > 
> > Having this host entry with the RTF_CLONING flag set, as you have shown
> > it, is impossible.  It could only have been "cloned" from a network-type
> > routing table entry, as shown in the commit log for revision 1.50 of
> > route/route.c, and this case shouldn't be affected by that change.
> > Or like this:
> > 
> > 3.3.3/24           link#1             UCSc        1        0     rl0
> > 3.3.3.3            link#1             UHLW        1        1     rl0
> > 10                 3.3.3.3            UGSc        0       11     rl0
> > 
> > But then again, this means that the gateway (3.3.3.3) is directly reachable
> > (think one hop) on one of the attached networks (rl0), but the ARP reply
> > haven't been (yet) received, due to the host being down, as indicated by
> > ping(8):
> > 
> > # ping 10.0.0.1
> > PING 10.0.0.1 (10.0.0.1): 56 data bytes
> > ping: sendto: No route to host
> > ping: sendto: No route to host
> > ^C
> > --- 10.0.0.1 ping statistics ---
> > 6 packets transmitted, 0 packets received, 100% packet loss
> > 
> > 3.3.3.3            link#1             UHRLW       1        0     rl0
> > 
> > (Note that `R' (RTF_REJECT) flag is set by arpresolve() after
> > net.link.ether.inet.maxtries unsuccessful ARP request tries.)
> > 
> > 
> That is my interface config:
> 
> xl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
>         inet 212.36.9.113 netmask 0xffffff00 broadcast 212.36.9.255
>         ether 00:04:76:22:15:83
>         media: autoselect (100baseTX <full-duplex>) status: active
>         supported media: autoselect 100baseTX <full-duplex> 100baseTX
> 10baseT/UT
> P <full-duplex> 10baseT/UTP 100baseTX <hw-loopback>
> xl1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
>         inet 212.36.9.113 netmask 0xffffffff broadcast 212.36.9.113
>         ether 00:10:5a:21:73:55
>         media: autoselect (100baseTX) status: active
>         supported media: autoselect 100baseTX <full-duplex> 100baseTX
> 10baseT/UT
> P <full-duplex> 10baseT/UTP 100baseTX <hw-loopback>
> xl2: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
>         inet 212.36.9.113 netmask 0xffffffff broadcast 212.36.9.113
>         ether 00:10:4b:b8:65:2c
>         media: autoselect (10baseT/UTP) status: active
>         supported media: autoselect 100baseTX <full-duplex> 100baseTX
> 10baseT/UT
> P <full-duplex> 10baseT/UTP 100baseTX <hw-loopback>
> ed0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
>         inet 212.36.9.113 netmask 0xffffffff broadcast 212.36.9.113
>         ether 00:40:05:60:f8:d8
> 
> 
> and the static routes:
> 
[...]
> default            212.36.8.129       UGSc       16  1612418      xl0
> 212.36.8           link#1             UCSc       28        0      xl0 =>
> 
This case indeed should be allowed.  Your ``default'' route isn't with
"indirect gateway", because the gateway route (route to 212.36.8.129)
doesn't have the `G' flag set.

An example of "indirect route with also indirect gateway" would be:

# route -n get -net 10
   route to: 10.0.0.0
destination: 10.0.0.0
       mask: 255.0.0.0
    gateway: 1.2.3.4
  interface: rl0
      flags: <UP,GATEWAY,DONE,STATIC,PRCLONING>
 recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire
       0         0         0         0         0         0      1500         0

# route -n get 1.2.3.4
   route to: 1.2.3.4
destination: default
       mask: default
    gateway: 192.168.4.65
  interface: rl0
      flags: <UP,GATEWAY,DONE,STATIC,PRCLONING>
 recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire
       0         0         0         0         0         0      1500         0

Or, in netstat(1) equivalent:

default            192.168.4.65       UGSc        4        0      rl0
10                 1.2.3.4            UGSc        0        0      rl0
192.168.4.65       0:d0:b7:16:9c:c6   UHLW        3     4055      rl0   1108

I.e., the gateway for net 10 is 1.2.3.4, where 1.2.3.4 is *indirectly*
reachable via the `default' route with gateway 192.168.4.65.


Cheers,
-- 
Ruslan Ermilov          Oracle Developer/DBA,
[EMAIL PROTECTED]           Sunbay Software AG,
[EMAIL PROTECTED]          FreeBSD committer,
+380.652.512.251        Simferopol, Ukraine

http://www.FreeBSD.org  The Power To Serve
http://www.oracle.com   Enabling The Information Age

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-net" in the body of the message

Reply via email to