On Mon, Jan 17, 2005 at 07:20:53PM +0300, Vladimir Grebenschikov wrote:
> Ruslan Ermilov wrote:
> 
> > > Any ideas what wrong with 'route change' ? 
> > > 
> > The route(8) manpage says:
> > 
> > : In a change or add command where the destination and gateway are not suf-
> > : ficient to specify the route (as in the ISO case where several interfaces
> > : may have the same address), the -ifp or -ifa modifiers may be used to
> > : determine the interface or interface address.
> > 
> > So try this instead:
> > 
> > route change 192.168.0/23 -ifp fxp0
> 
> Thank you, it works.
> 
> So, as I understand, route add ... -iface fxp0 is invalid if I want
> specify gateway interface ?
> 
No, it's valid.

> (how this works, '-iface' flag and 'fxp0' is what ? gateway ?)
> 
When the -iface keyword is present, the route(8) utility treats
the "gateway" argument specially, allowing it to be an interface
name, in which case the gateway address is passed as "struct
sockaddr_dl" denoting this interface.  See the output of the
"route -v add" command.  Hence, there's no a reason (other than
a kernel code bug) to prevent a "route change ... -iface fxp0"
command from working.  Here's a fix:

%%%
Index: rtsock.c
===================================================================
RCS file: /home/ncvs/src/sys/net/rtsock.c,v
retrieving revision 1.120
diff -u -p -r1.120 rtsock.c
--- rtsock.c    7 Jan 2005 01:45:35 -0000       1.120
+++ rtsock.c    17 Jan 2005 22:01:47 -0000
@@ -491,8 +491,7 @@ route_output(struct mbuf *m, struct sock
                         * flags may also be different; ifp may be specified
                         * by ll sockaddr when protocol address is ambiguous
                         */
-                       if (((rt->rt_flags & RTF_GATEWAY) &&
-                            info.rti_info[RTAX_GATEWAY] != NULL) ||
+                       if (info.rti_info[RTAX_GATEWAY] != NULL ||
                            info.rti_info[RTAX_IFP] != NULL ||
                            (info.rti_info[RTAX_IFA] != NULL &&
                             !sa_equal(info.rti_info[RTAX_IFA],
%%%


Cheers,
-- 
Ruslan Ermilov
[EMAIL PROTECTED]
FreeBSD committer

Attachment: pgpiND7qAZKs0.pgp
Description: PGP signature

Reply via email to