code: def ipv4_reassembly(packet, *, count=NotImplemented):
      
      ipv4 = getattr(packet, 'ip', None)
      if ipv4 is not None:
          if ipv4.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.p).name,                      # payload protocol type
              ),
              num=count,                                          # original packet range number
              fo=ipv4.off,                                        # fragment offset
              ihl=ipv4.__hdr_len__,                               # internet header length
              mf=bool(ipv4.mf),                                   # more fragment flag
              tl=ipv4.len,                                        # total length, header includes
              header=bytearray(ipv4.pack()[:ipv4.__hdr_len__]),   # raw bytearray type header
              payload=bytearray(ipv4.pack()[ipv4.__hdr_len__:]),  # raw bytearray type payload
          )
          return True, data
      return False, None
docs: Make data for IPv4 reassembly.