[Xorp-cvs] XORP cvs commit: xorp/fea xorp/fea/forwarding_plane/io

Pavlin Radoslavov pavlin at icir.org
Fri Jun 1 11:17:12 PDT 2007


CVSROOT:	/usr/local/share/doc/apache/cvs
Module name:	xorp
Changes by:	pavlin at xorpc.icir.org	2007-06-01 18:17:12 UTC

XORP CVS repository


Modified files:
	fea           io_ip_manager.cc io_ip_manager.hh mfea_mrouter.cc 
	              mfea_mrouter.hh mfea_node.hh 
	fea/forwarding_plane/io io_ip_socket.cc io_ip_socket.hh 

Log message:
	Refactor the mechanism for receiving the multicast forwarding
	related upcalls from the system.
	
	Previously the MFEA opened its own IGMP or ICMPv6 socket, and
	used it for the sole purpose of THE MRT_INIT multicast forwarding
	socket (in UNIX there can be only one multicast forwarding socket
	per family).
	At the same time there was another IGMP or ICMPv6 socket for the purpose
	of sending/receiving control packets by the IGMP/MLD userland protocol.
	
	While this was the right design because the two functionalities are
	separated, it created a problem on Linux which doesn't propagate
	some of the IGMP control packets on the regular IGMP raw socket.
	E.g., IGMP Join messages without the Router Alert option and that
	are sent to the joined multicast group (which typically the router
	is not member of) are propagated by the Linux kernel only to the
	MRT_INIT multicast forwarding socket.
	
	To get around this problem, now the MFEA registers for multicast
	forwarding related upcalls with the IoIpManager.
	The IoIpManager now understands such upcalls, and it will open
	only a single IGMP socket that the MFEA itself will change
	to MRT_INIT multicast forwarding socket.
	Then, the IoIpManager will demultiplex the upcalls to the MFEA,
	and the real IGMP messages to the registered external receivers
	(e.g., the IGMP module).

Revision  Changes                                   Path
1.4       +40 -45;  commitid: 1218f466060117ea6;    xorp/fea/forwarding_plane/io/io_ip_socket.cc
1.3       +18 -1;  commitid: 1218f466060117ea6;     xorp/fea/forwarding_plane/io/io_ip_socket.hh
1.3       +330 -139;  commitid: 1218f466060117ea6;  xorp/fea/io_ip_manager.cc
1.4       +57 -1;  commitid: 1218f466060117ea6;     xorp/fea/io_ip_manager.hh
1.54      +41 -273;  commitid: 1218f466060117ea6;   xorp/fea/mfea_mrouter.cc
1.18      +2 -30;  commitid: 1218f466060117ea6;     xorp/fea/mfea_mrouter.hh
1.45      +8 -1;  commitid: 1218f466060117ea6;      xorp/fea/mfea_node.hh



More information about the Xorp-cvs mailing list