[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