I know this may be a Zebra/ripd problem rather than strictly ppp and
I've posted on the Zebra mailing but since it involves PPP, too, I
hoped someone here may have some relevant experience to share.

I'm using ppp 2.4.4b1 and ripd (from Zebra 0.94) in two embedded
systems using ARM
processors. I have one ARM7-based system and one ARM9-based system.
The ARM7-based system has worked for a year or more without a hitch
and
continues to work in a new build of my firmware. The same source
built
for ARM9 (a faster system with more memory) won't send RIP messages
when
the system initiates a PPP link. The messages I see in my ripd log
are:

00:01:47 RIP: can't setsockopt IP_ADD_MEMBERSHIP Address already in
use
00:01:47 RIP: multicast join failed, interface ppp0 not running

(There's a more complete log at the bottom of this message.)

Occasionally, this is preceded by "can't send packet : Network is
unreachable" but I think that's a red herring. If I then send a
SIGHUP
to ripd, it starts working.

My ripd.conf is:

interface ppp0
ip rip send version 1 2
ip rip receive version 1 2
router rip
network ppp0
redistribute static
redistribute kernel
redistribute connected
log file /var/log/ripd.log
debug rip events
debug rip zebra

I've Googled the messages above and found a couple of unanswered
questions, one which included a patch that's already in my source, and
nothing else that seemed to address my problem.

The best theory I have is that because my new, ARM9 system is faster
and
has more resources, that the thread which reacts to the PPP connection
being up is responding more quickly than it did on my ARM7 system but
if
I read the code right, there's a 1-second delay in starting that
thread
and it seems unlikely that the difference in timing on the two
processors would be an appreciable percentage of a second.

Any feedback appreciated. Thanks.

Chris
-------------------8<------------------------>8----------------------
Log around failure:

00:01:46 RIP: turn off ppp0
00:01:46 RIP: multicast leave from ppp0
00:01:46 RIP: connected address 192.168.1.3/32 is added
00:01:46 RIP: turn on ppp0
00:01:46 RIP: connected address 192.168.1.3/32 is deleted
00:01:46 RIP: connected address 192.168.1.3/32 is added
00:01:46 RIP: turn on ppp0
00:01:47 RIP: multicast join at ppp0
00:01:47 RIP: can't setsockopt IP_ADD_MEMBERSHIP Address already in
use
00:01:47 RIP: multicast join failed, interface ppp0 not running
00:01:48 RIP: update timer fire!
00:02:29 RIP: update timer fire!

Sending sighup

00:02:41 RIP: SIGHUP received
00:02:41 RIP: ripd restarting!
00:02:41 RIP: triggered update!
00:02:41 RIP: interface add lo index 1 flags 65609 metric 1 mtu 16436
00:02:41 RIP: connected address 127.0.0.1/8 is added
00:02:41 RIP: interface add eth0 index 2 flags 69699 metric 1 mtu 1500
00:02:41 RIP: connected address 10.1.1.44/16 is added
00:02:41 RIP: interface add tunl0 index 3 flags 128 metric 1 mtu 1480
00:02:41 RIP: interface add ppp0 index 4 flags 69841 metric 1 mtu 1500
00:02:41 RIP: turn on ppp0
00:02:41 RIP: connected address 192.168.1.3/32 is added
00:02:41 RIP: turn on ppp0
00:02:42 RIP: multicast join at ppp0
00:02:42 RIP: broadcast request to ppp0
00:02:42 RIP: SEND to socket 4 port 520 addr 192.168.1.2