# $QuaggaId: $Format:%an, %ai, %h$ $

global configuration commands:
       ip multicast-routing	Enable IP multicast forwarding
       ip ssmpingd		Enable ssmpingd operation

interface configuration commands:
       ip igmp						Enable IGMP operation
       ip igmp join					IGMP join multicast group
       ip igmp query-interval <1-1800>			IGMP host query interval
       ip igmp query-max-response-time <1-25>		IGMP max query response (seconds)
       ip igmp query-max-response-time-dsec <10-250>	IGMP max query response (deciseconds)
       ip pim ssm					Enable PIM SSM operation

verification commands:
       show ip igmp interface			IGMP interface information
       show ip igmp parameters			IGMP parameters information
       show ip igmp groups			IGMP groups information
       show ip igmp groups retransmissions	IGMP group retransmission
       show ip igmp sources			IGMP sources information
       show ip igmp sources retransmissions	IGMP source retransmission
       show ip pim address			PIM interface address
       show ip pim assert			PIM interface assert
       show ip pim assert-internal		PIM interface internal assert state
       show ip pim assert-metric		PIM interface assert metric
       show ip pim assert-winner-metric		PIM interface assert winner metric
       show ip pim designated-router		PIM interface designated router
       show ip pim hello			PIM interface hello information
       show ip pim interface			PIM interface information
       show ip pim lan-prune-delay              PIM neighbors LAN prune delay parameters
       show ip pim local-membership		PIM interface local-membership
       show ip pim jp-override-interval         PIM interface J/P override interval
       show ip pim join                         PIM interface join information
       show ip pim neighbor			PIM neighbor information
       show ip pim rpf				PIM cached source rpf information
       show ip pim secondary                    PIM neighbor addresses
       show ip pim upstream			PIM upstream information
       show ip pim upstream-join-desired	PIM upstream join-desired
       show ip pim upstream-rpf			PIM upstream source rpf
       show ip multicast			Multicast global information
       show ip mroute				IP multicast routing table
       show ip mroute count			Route and packet count data
       show ip route				IP routing table
       show ip ssmpingd				ssmpingd operation

debug commands:
       clear ip interfaces		Reset interfaces
       clear ip igmp interfaces		Reset IGMP interfaces
       clear ip pim interfaces		Reset PIM interfaces
       debug igmp			IGMP protocol activity
       debug pim			PIM protocol activity
       debug pim zebra			ZEBRA protocol activity
       debug ssmpingd			ssmpingd activity
       show debugging			State of each debugging option
       test igmp receive report		Test reception of IGMPv3 report
       test pim receive assert          Test reception of PIM assert
       test pim receive hello		Test reception of PIM hello
       test pim receive join		Test reception of PIM join
       test pim receive prune		Test reception of PIM prune
       test pim receive upcall   	Test reception of kernel upcall

statistics commands:
       show memory pim		PIM memory statistics

-x-
