code: def ipv4_reassembly(packet, *, count=NotImplemented):
      
      if 'IP' in packet:
          ipv4 = packet['IP']
          if ipv4.flags.DF:       # dismiss not fragmented packet
              return False, None
          data = dict(
              bufid=(
                  ipaddress.ip_address(ipv4.src),         # source IP address
                  ipaddress.ip_address(ipv4.dst),         # destination IP address
                  ipv4.id,                                # identification
                  TP_PROTO.get(ipv4.proto).name,          # payload protocol type
              ),
              num=count,                                  # original packet range number
              fo=ipv4.frag,                               # fragment offset
              ihl=ipv4.ihl,                               # internet header length
              mf=bool(ipv4.flags.MF),                     # more fragment flag
              tl=ipv4.len,                                # total length, header includes
              header=bytearray(ipv4.raw_packet_cache),    # raw bytearray type header
              payload=bytearray(bytes(ipv4.payload)),     # raw bytearray type payload
          )
          return True, data
      return False, None
docs: Make data for IPv4 reassembly.