scapy.contrib.igmpv3 module

class scapy.contrib.igmpv3.IGMPv3

Bases: scapy.contrib.igmp.IGMP

IGMP Message Class for v3.

This class is derived from class Packet. The fields defined below are a direct interpretation of the v3 Membership Query Message. Fields ‘type’ through ‘qqic’ are directly assignable. For ‘numsrc’, do not assign a value. Instead add to the ‘srcaddrs’ list to auto-set ‘numsrc’. To assign values to ‘srcaddrs’, use the following methods:

c = IGMPv3()
c.srcaddrs = ['1.2.3.4', '5.6.7.8']
c.srcaddrs += ['192.168.10.24']

At this point, ‘c.numsrc’ is three (3)

‘chksum’ is automagically calculated before the packet is sent.

‘mrcode’ is also the Advertisement Interval field

aliastypes = [<class 'scapy.contrib.igmpv3.IGMPv3'>, <class 'scapy.contrib.igmp.IGMP'>, <class 'scapy.packet.Packet'>]
classmethod dispatch_hook(_pkt=None, *args, **kargs)
encode_maxrespcode()

Encode and replace the mrcode value to its IGMPv3 encoded time value if needed, # noqa: E501 as specified in rfc3376#section-4.1.1.

If value < 128, return the value specified. If >= 128, encode as a floating # noqa: E501 point value. Value can be 0 - 31744.

fields_desc = [<Field (IGMPv3).type>, <Field (IGMPv3).mrcode>, <Field (IGMPv3).chksum>]
igmpv3types = {17: 'Membership Query', 34: 'Version 3 Membership Report', 48: 'Multicast Router Advertisement', 49: 'Multicast Router Solicitation', 50: 'Multicast Router Termination'}
mysummary()

Display a summary of the IGMPv3 object.

payload_guess = [({'type': 17}, <class 'scapy.contrib.igmpv3.IGMPv3mq'>), ({'type': 34, 'mrcode': 0}, <class 'scapy.contrib.igmpv3.IGMPv3mr'>), ({'type': 48}, <class 'scapy.contrib.igmpv3.IGMPv3mra'>)]
class scapy.contrib.igmpv3.IGMPv3gr

Bases: scapy.packet.Packet

IGMP Group Record for IGMPv3 Membership Report

This class is derived from class Packet and should be added in the records of an instantiation of class IGMPv3mr.

aliastypes = [<class 'scapy.contrib.igmpv3.IGMPv3gr'>, <class 'scapy.packet.Packet'>]
default_payload_class(payload)

DEV: Returns the default payload class if nothing has been found by the guess_payload_class() method.

Parameters:payload (str) – the layer’s payload
Returns:the default payload class define inside the configuration file
fields_desc = [<Field (IGMPv3gr).rtype>, <Field (IGMPv3gr).auxdlen>, <Field (IGMPv3gr).numsrc>, <Field (IGMPv3gr).maddr>, <Field (IGMPv3gr).srcaddrs>]
igmpv3grtypes = {1: 'Mode Is Include', 2: 'Mode Is Exclude', 3: 'Change To Include Mode', 4: 'Change To Exclude Mode', 5: 'Allow New Sources', 6: 'Block Old Sources'}
mysummary()

Display a summary of the IGMPv3 group record.

class scapy.contrib.igmpv3.IGMPv3mq

Bases: scapy.packet.Packet

IGMPv3 Membership Query. Payload of IGMPv3 when type=0x11

aliastypes = [<class 'scapy.contrib.igmpv3.IGMPv3mq'>, <class 'scapy.packet.Packet'>]
fields_desc = [<Field (IGMPv3mq).gaddr>, <Field (IGMPv3mq).resv>, <Field (IGMPv3mq).s>, <Field (IGMPv3mq).qrv>, <Field (IGMPv3mq).qqic>, <Field (IGMPv3mq).numsrc>, <Field (IGMPv3mq).srcaddrs>]
class scapy.contrib.igmpv3.IGMPv3mr

Bases: scapy.packet.Packet

IGMP Membership Report extension for IGMPv3. Payload of IGMPv3 when type=0x22

aliastypes = [<class 'scapy.contrib.igmpv3.IGMPv3mr'>, <class 'scapy.packet.Packet'>]
fields_desc = [<Field (IGMPv3mr).res2>, <Field (IGMPv3mr).numgrp>, <Field (IGMPv3mr).records>]
class scapy.contrib.igmpv3.IGMPv3mra

Bases: scapy.packet.Packet

IGMP Multicas Router Advertisement extension for IGMPv3. Payload of IGMPv3 when type=0x30

aliastypes = [<class 'scapy.contrib.igmpv3.IGMPv3mra'>, <class 'scapy.packet.Packet'>]
fields_desc = [<Field (IGMPv3mra).qryIntvl>, <Field (IGMPv3mra).robust>]