def __init__(self, source_ip='1.1.1.1', destination_ip='1.1.1.1', version=4, ihl=5, tos=0, identification=54321, fragment_offset=0, ttl=253, protocol=socket.IPPROTO_UDP, data='', checksum=0):
    self.version = version
    self.ihl = ihl
    self.version_ihl = ((self.version << 4) + self.ihl)
    self.tos = tos
    self.identification = identification
    self.fragment_offset = fragment_offset
    self.ttl = ttl
    self.protocol = protocol
    self.checksum = checksum
    self.source_ip = int(ipaddress.IPv4Address(source_ip))
    self.destination_ip = int(ipaddress.IPv4Address(destination_ip))
    self.data = data
    self.length = ((4 * self.ihl) + len(self.data))
def __init__(self, source_ip='1.1.1.1', destination_ip='1.1.1.1', version=4, ihl=5, tos=0, identification=54321, fragment_offset=0, ttl=253, protocol=socket.IPPROTO_UDP, data=, checksum=0):
    self.version = version
    self.ihl = ihl
    self.version_ihl = ((self.version << 4) + self.ihl)
    self.tos = tos
    self.identification = identification
    self.fragment_offset = fragment_offset
    self.ttl = ttl
    self.protocol = protocol
    self.checksum = checksum
    self.source_ip = int(ipaddress.IPv4Address(source_ip))
    self.destination_ip = int(ipaddress.IPv4Address(destination_ip))
    self.data = data
    self.length = ((4 * self.ihl) + len(self.data))