code: def ipv6_reassembly(packet, *, count=NotImplemented):
      
      if scapy_all is None:
          raise ModuleNotFound("No module named 'scapy'", name='scapy')
      if 'IPv6' in packet:
          ipv6 = packet['IPv6']
          if scapy_all.IPv6ExtHdrFragment not in ipv6:  # pylint: disable=E1101
              return False, None                      # dismiss not fragmented packet
          ipv6_frag = ipv6['IPv6ExtHdrFragment']
          data = dict(
              bufid=(
                  ipaddress.ip_address(ipv6.src),                 # source IP address
                  ipaddress.ip_address(ipv6.dst),                 # destination IP address
                  ipv6.fl,                                        # label
                  TP_PROTO.get(ipv6_frag.nh).name,                # next header field in IPv6 Fragment Header
              ),
              num=count,                                          # original packet range number
              fo=ipv6_frag.offset,                                # fragment offset
              ihl=len(ipv6) - len(ipv6_frag),                     # header length, only headers before IPv6-Frag
              mf=bool(ipv6_frag.m),                               # more fragment flag
              tl=len(ipv6),                                       # total length, header includes
              header=bytearray(bytes(ipv6)[:-len(ipv6_frag)]),    # raw bytearray type header before IPv6-Frag
              payload=bytearray(bytes(ipv6_frag.payload)),        # raw bytearray type payload after IPv6-Frag
          )
          return True, data
      return False, None
docs: Make data for IPv6 reassembly.