Re: Routing Table (Feature)

Richard B. Johnson (root@chaos.analogic.com)
Wed, 17 Feb 1999 16:54:54 -0500 (EST)


On Wed, 17 Feb 1999, Paul Jakma wrote:

> On Tue, 16 Feb 1999, Richard B. Johnson wrote:
>
> The `ifconfig` command only deletes one. The command has to be executed
> twice to delete the second one. The problem is that when my ppp link
> is shut down, I do not add two identical routes back (nor should I).
> The result is that the second time the ppp link is established, I will
> get an error if I try to delete two routes. So, a work-around of
> always deleting two identical routes doesn't work very well.

Well I meant `route del...`

>
> and if we change route to delete all the routes, then you'll nuke
> your ppp route.
>
> maybe we should build some heuristics into the route command to
> try and figure out when we should delete all duplicate routes,
> and when not to.

I think it's just a BUG plain and simple........

if((s = socket(AF_INET, SOCK_RAW, proto->p_proto)) != -1)
{
memset(&rt, 0x00, sizeof(rt));
rt.rt_metric = METRIC;
rt.rt_mss = MTU;
rt.rt_irtt = 255;
rt.rt_flags = RTF_GATEWAY | RTF_UP | RTF_MSS;
rt.rt_dst.sa_family = AF_INET;
rt.rt_gateway.sa_family = AF_INET;
rt.rt_genmask.sa_family = AF_INET;
memset(&rt.rt_genmask.sa_data[2], 0xff, 0x03);
makeaddr(ADDR(rt.rt_dst), network);
makeaddr(ADDR(rt.rt_gateway), gateway);
(void)ioctl(s, SIOCDELRT, &rt); <---- Temp fix
(void)ioctl(s, SIOCDELRT, &rt); <---- Temp fix
(void)ioctl(s, SIOCADDRT, &rt); <---- Temp fix
}

...or

while route -n | egrep ${MASK} >/dev/null ;
do
route del -net ${NET} netmask ${MASK} dev ${DEV}
done
route add -net ${NET} netmask ${MASK} dev ${DEV}

These are BUG work-arounds.

>
> or perhaps an "-amount_of_devices" parameter to route would be
> more practical.
>
> or maybe we should try put some AI stuff into the kernel to
> always get the route that the user wants added in. surely an
> improvement on the current kernel auto route add stuff.
>

Heuistics always produce more problems than they solve.
The fix is:
ioctl(s, SIOCDELRT, &rt);

...must delete the route, not (a, some, or first) routing table
entry. Once the function-call works correctly, everything will
be fine.

Cheers,
Dick Johnson
***** FILE SYSTEM WAS MODIFIED *****
Penguin : Linux version 2.2.1 on an i686 machine (400.59 BogoMips).
Warning : It's hard to remain at the trailing edge of technology.
Wisdom : It's not a Y2K problem. It's a Y2Day problem.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/