1############ 2% IGMP tests 3############ 4 5+ Basic IGMP tests 6 7= Build IGMP - Basic 8 9a=Ether(src="00:01:02:03:04:05") 10b=IP(src="1.2.3.4") 11c=IGMP(gaddr="0.0.0.0") 12x = a/b/c 13x[IGMP].igmpize() 14assert x.mrcode == 20 15assert x[IP].dst == "224.0.0.1" 16 17= Build IGMP - Custom membership 18 19a=Ether(src="00:01:02:03:04:05") 20b=IP(src="1.2.3.4") 21c=IGMP(gaddr="224.0.1.2") 22x = a/b/c 23x[IGMP].igmpize() 24assert x.mrcode == 20 25assert x[IP].dst == "224.0.1.2" 26 27= Build IGMP - LG 28 29a=Ether(src="00:01:02:03:04:05") 30b=IP(src="1.2.3.4") 31c=IGMP(type=0x17, gaddr="224.2.3.4") 32x = a/b/c 33x[IGMP].igmpize() 34assert x.dst == "01:00:5e:00:00:02" 35assert x.mrcode == 0 36assert x[IP].dst == "224.0.0.2" 37 38= Change IGMP params 39 40x = Ether(src="00:01:02:03:04:05")/IP()/IGMP() 41x[IGMP].igmpize() 42assert x.mrcode == 20 43assert x[IP].dst == "224.0.0.1" 44 45x = Ether(src="00:01:02:03:04:05")/IP()/IGMP(gaddr="224.2.3.4", type=0x12) 46x.mrcode = 1 47x[IGMP].igmpize() 48x = Ether(raw(x)) 49assert x.mrcode == 0 50 51x.gaddr = "224.3.2.4" 52x[IGMP].igmpize() 53assert x.dst == "01:00:5e:03:02:04" 54 55x.ttl = 64 56x[IGMP].igmpize() 57assert x.ttl == 1 58 59= Test mysummary 60 61x = Ether(src="00:01:02:03:04:05")/IP(src="192.168.0.1")/IGMP(gaddr="224.0.0.2", type=0x17) 62x[IGMP].igmpize() 63assert x[IGMP].mysummary() == "IGMP: 192.168.0.1 > 224.0.0.2 Leave Group 224.0.0.2" 64 65assert IGMP().mysummary() == "IGMP Group Membership Query 0.0.0.0" 66 67= IGMP - misc 68~ netaccess 69 70x = Ether(src="00:01:02:03:04:05")/IP(dst="192.168.0.1")/IGMP(gaddr="www.google.fr", type=0x11) 71x = Ether(raw(x)) 72assert not x[IGMP].igmpize() 73assert x[IP].dst == "192.168.0.1" 74 75x = Ether(src="00:01:02:03:04:05")/IP(dst="192.168.0.1")/IGMP(gaddr="124.0.2.1", type=0x00) 76assert not x[IGMP].igmpize() 77assert x[IP].dst == "192.168.0.1"