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
pgpiND7qAZKs0.pgp
Description: PGP signature