[zebra 23068] Problem with ripd, ppp on ARM9: Address already in use

[email protected] Mon, 29 Oct 2007 09:37:06 -0400
Newsgroups gmane.network.zebra
Message-ID <[email protected]>
I'm using 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