Re: IGMP problem with 2.5 kernels

Richard B. Johnson (
Mon, 3 Mar 2003 09:13:38 -0500 (EST)

On Mon, 3 Mar 2003, Niels den Otter wrote:

> On Wednesday, 12 February 2003, Niels den Otter wrote:
> > On Monday, 10 February 2003, Niels den Otter wrote:
> > > I have tried to run several IP Multicast applications (SDR, Vat,...)
> > > with on 2.5 kernels (now running 2.5.59bk3) without succes. Same
> > > applications appear to work on 2.4 kernels.
> > >
> > > What seems to be happening is that the application binds to the lo
> > > interface instead of eth0 so that no IGMP queries are send out on
> > > the ethernet interface. I have a small application that tries to
> > > listen to address and here is /proc/net/igmp with and
> > > without the app running:
> >
> > Did more debugging and disabled my loopback interface to ensure the
> > mcast apps don't bind to this interface. strace shows all applications
> > go wrong with the same error. Is this kernel related?
> In the meantime I have had verious discussion on this subject with
> Antonio Querubin and others and I don't know any solution yet.
> Is anyone able to use multicast applications on recent 2.5 kernels and
> make it send out IGMP joins on an ethernet device?
> RFC 1112 says
> If the upper-layer protocol chooses not to identify an outgoing
> interface, a default interface should be used, preferably under the
> control of system management.
> In Linux 2.4 kernels this seems to work with adding a route for
> on the desired ethernet interface. This doesn't work in 2.5
> kernels however.
> Anyone who knows what the problem is and how it can be solved?
> Thanks,

Did you try to use bind() to bind your socket to a specific interface?
Using `route` to obtain side-effects is not the correct way. The
application needs to bind the socket to a specific interface if
the applications requires a specific interface (which you seem to
require). Otherwise, the first interface found will be used as
the default. If you can't rebuild the programs, you might work-
around the problem by modifying start-up so that your ethernet
interfaces are started before loop-back.

You can expriment without rebooting...

Remove all routing entries first.
route del -default xxx
route del -net xxx, etc.

`ifconfig eth0 down`
`ifconfig lo down`

Completely reconfigure eth0 first....
Then configure lo.

If you don't remove all the routing entries first, you don't
really end up with a new configuration. Something 'remembers'
and the order of entries doesn't get changed.

Dick Johnson
Penguin : Linux version 2.4.18 on an i686 machine (797.90 BogoMips).
Why is the government concerned about the lunatic fringe? Think about it.

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at