In Sniffer mode, (at least one process has done a snf_open+snf_start), all packets are sent up to the host (irrespective of unicast, multicast, broadcast, etc).
Often, there is a requirement that some received packets are acknowledged. We have a solution for this exact problem -- it is covered through the reflect-to-netdev functionality in the Sniffer API (with the function snf_netdev_reflect). If you identify an IGMP (or other packet) that you would have wanted the kernel to handle, you can "reinject" it up the kernel stack to be processed. Despite the fact that Sniffer is doing passive capture, the kernel still has a valid send and receive queue. The adapter doesn't push anything in the receive queue while you are Sniffing but it can still put packets on the wire (like IGMP replies) from its send queue.
So, again, while Sniffer is handling high packet rate incoming multicast/UDP, the Sniffer also supports (with the netdev reflection capability) having the Ethernet driver handle all non-multicast traffic (presumably, IGMP).
For more details on the snf_netdev_reflect function, please see the API, found in the Sniffer10G release. The release also includes several examples of using this function in the share/examples directory.