Re: kerneld/multicast bug (tickled by gated)

Andi Kleen (andi@mind.aec.at)
15 Jun 1997 18:14:44 +0200


skh@merit.edu writes:

> Trevor:
>
> It's not clear that we want to disable pppd in that way
> for general use with gated. Perhaps, if I mentioned that
> the specific call is related to the IP multicast additions
> it would help. Also, when we disabled kerneld (i'm not sure of
> the terminology here.. so please pardon my newbie language)..
> the hangs stopped.
>
> Does the linux kernel handle multicast groups being set across
> ppp links? Thank-you for your quick response.
>
> Sue Hares
> Gated maintainer
> and linux newbie

Hello Sue,

could you try this patch please. It just prevents multicast addresses
from being sent to kerneld. The general request-route mechanism is very
flakey, so it's the best to disable it altogether. There exist userspace
solutions (for example diald) that work better. Anyways, this patch
should help.

--- net/ipv4/route.c-o Sun Jun 15 19:11:33 1997
+++ net/ipv4/route.c Sun Jun 15 19:12:54 1997
@@ -1436,6 +1436,8 @@
ip_rt_unlock();
kfree_s(rth, sizeof(struct rtable));
#ifdef CONFIG_KERNELD
+ if (MULTICAST(daddr))
+ return NULL;
daddr=ntohl(daddr);
sprintf(wanted_route, "%d.%d.%d.%d",
(int)(daddr >> 24) & 0xff, (int)(daddr >> 16) & 0xff,

-Andi

>
> >> In running gated on this network, we have discovered a Linux kernel/kerneld
> >> bug, and I wonder if anyone on this list might be able to shed some light on
> >> it (or even propose a fix)
> >>
> >> The symptoms are as follows:
> >>
> >> 1. gated sometimes hangs.
> >>
> >> 2. When it is in the hung state, it can still be made to dump core
> >> ('gdc COREDUMP'), and gdb shows that it was waiting in setsockopt() for
> >> an IP_ADD_MEMBERSHIP request.
> >>
> >> 3. At the same time as gated hangs, an extra process is in the kernel table:
> >> request-route <zombie>
> >> which is a child of kerneld
> >
> >The request-route script distributed with the modutils package starts pppd
> >when a request is made for a connection to an IP address to which no route
> >has been established. This way, one's ISP can be automatically dialed
> >when one runs a program that uses TCP/IP.
>
> >My limited understanding of gated is that it's a routing daemon similar to
> >routed. It seems that while it's manipulating the routing table,
> >something (perhaps gated itself) is trying to make connections through
> >routes that don't exist. I assume you don't want to run pppd, so maybe
> >just removing everything but "#!/bin/sh" from the request-route script
> >would cause it to return, so gated can continue.