code: def ipv6_reassembly(packet, *, count=NotImplemented):
      
      ipv6 = getattr(packet, 'ip6', None)
      if ipv6 is not None:
          ipv6_frag = ipv6.extension_hdrs.get(44)
          if ipv6_frag is None:       # dismiss not fragmented packet
              return False, None
          hdr_len = ipv6_hdr_len(ipv6)
          data = dict(
              bufid=(
                  ipaddress.ip_address(ipv6.src),                     # source IP address
                  ipaddress.ip_address(ipv6.dst),                     # destination IP address
                  ipv6.flow,                                          # label
                  TP_PROTO.get(ipv6_frag.nh).name,                    # next header field in IPv6 Fragment Header
              ),
              num=count,                                              # original packet range number
              fo=ipv6_frag.nxt,                                       # fragment offset
              ihl=hdr_len,                                            # header length, only headers before IPv6-Frag
              mf=bool(ipv6_frag.m_flag),                              # more fragment flag
              tl=len(ipv6),                                           # total length, header includes
              header=bytearray(ipv6.pack()[:hdr_len]),                # raw bytearray type header before IPv6-Frag
              payload=bytearray(ipv6.pack()[hdr_len+ipv6_frag:]),     # raw bytearray type payload after IPv6-Frag
          )
          return True, data
      return False, None
docs: Make data for IPv6 reassembly.