blob: 718b256a0ff86447ebffb88d5b3ad6b6bc8b08b2 [file] [log] [blame]
# $Id: igmp.py 23 2006-11-08 15:45:33Z dugsong $
# -*- coding: utf-8 -*-
"""Internet Group Management Protocol."""
from __future__ import absolute_import
from . import dpkt
class IGMP(dpkt.Packet):
"""Internet Group Management Protocol.
TODO: Longer class information....
Attributes:
__hdr__: Header fields of IGMP.
TODO.
"""
__hdr__ = (
('type', 'B', 0),
('maxresp', 'B', 0),
('sum', 'H', 0),
('group', '4s', b'\x00' * 4)
)
def __bytes__(self):
if not self.sum:
self.sum = dpkt.in_cksum(dpkt.Packet.__bytes__(self))
return dpkt.Packet.__bytes__(self)
def test_construction_no_sum():
igmp = IGMP()
assert igmp.type == 0
assert igmp.maxresp == 0
assert igmp.sum == 0
assert igmp.group == b'\x00' * 4
assert bytes(igmp) == b'\x00\x00' + b'\xff\xff' + b'\x00' * 4
def test_construction_sum_set():
igmp = IGMP(sum=1)
assert igmp.type == 0
assert igmp.maxresp == 0
assert igmp.sum == 1
assert igmp.group == b'\x00' * 4
assert bytes(igmp) == b'\x00\x00\x00\x01' + b'\x00' * 4