Make frisbee more directly IGMP (v2) aware.
Add "-Q <interval>" option to the master server to allow it to act as an IGMP V2 querier in environment where there is otherwise not one. It does essentially what the perl-based querier (code.google.com/p/perl-igmp-querier/) does, sending out a v2 membership query at the specified interval. This eliminates the need to run mrouted in some environments (e.g., elabinelab) just to issue IGMP queries. As a result, all the boss-install and elabinelab setup related to using mrouted to perform this function has been removed. The elabinelab CONFIG_MROUTED option has been changed to CONFIG_QUERIER (the former is still recognized and mapped to the latter). The undocumented defs-* variable NEEDMROUTED has been changed to NEEDMCQUERIER (the former still exists in install/installvars.pm.in but is always set to 0) to more accurately reflect the variable's purpose. If NEEDMCQUERIER is set, then the mfrisbeed startup script is modified to add the "-Q 30" option. The implementation of the client and server "-K <interval>" keep-alive option has been changed to directly send IGMP v2 membership reports containing the associated MC address. Note that the -K options have always been a hack to work-around assorted IGMP-related misconfigurations and incompatibilities, and really should only be used as a last resort. As implemented, they could cause the host machine to be pruned out of other MC groups at the nearest switch since they only report membership in the frisbee MC group. With the master server acting as an IGMP querier, instances of the frisbee server on that host should no longer need to do keep alives. We still have one case where it is needed on the client-side: a FreeBSD 8.x or later host connected to an IGMPv2-only switch. It appears that the IGMPv3 implementation added in FreeBSD 8.x always sends v3 reports, even when the default is configured (via sysctl or even recompiling the kernel) as v2.
Showing with 557 additions and 46 deletions