bin/51927: routed(8) fails to use multicast with IFF_POINTOPOINT interfaces

Eugene Grosbein eugen at grosbein.pp.ru
Wed May 7 09:00:24 PDT 2003


>Number:         51927
>Category:       bin
>Synopsis:       routed(8) fails to use multicast with IFF_POINTOPOINT interfaces
>Confidential:   no
>Severity:       serious
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed May 07 09:00:20 PDT 2003
>Closed-Date:
>Last-Modified:
>Originator:     Eugene Grosbein
>Release:        FreeBSD 4.8-STABLE i386
>Organization:
Svyaz Service JSC
>Environment:
System: FreeBSD grosbein.pp.ru 4.8-STABLE FreeBSD 4.8-STABLE #0: Sat Apr 26 00:03:18 KRAST 2003 eu at grosbein.pp.ru:/usr/local/obj/usr/local/src/sys/DADV i386

>Description:
	'routed -s' passes remote address of IFF_POINTOPOINT interface
	into setsockopt(rip_sock,IPPROTO_IP, IP_ADD_MEMBERSHIP,&m, sizeof(m)),
	see rip_mcast_on() in the src/sbin/routed/main.c

	A kernel uses a macro INADDR_TO_IFP (see netinet/in_var.h)
	to find an interface that is unable to find it using remote IP.

>How-To-Repeat:
	run 'routed -s' when one on more PPP interfaces 
	(f.e. ppp(4), gif(4)) are up and running.
	You will get error message one time for each of PPP interfaces:

setsockopt(IP_ADD_MEMBERSHIP RIP): Can't assign requested address

>Fix:

	Either change the macro INADDR_TO_IFP, or teach routed(8)
	to pass source IP of the interface. I tried the latter,
	it works for me.
>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list