code: def read_ipv6_frag(self, length, extension):
          
          if length is None:
              length = len(self)
  
          _next = self._read_protos(1)
          _temp = self._read_fileng(1)
          _offm = self._read_binary(2)
          _ipid = self._read_unpack(4)
  
          ipv6_frag = dict(
              next=_next,
              length=8,
              offset=int(_offm[:13], base=2),
              mf=True if int(_offm[15], base=2) else False,
              id=_ipid,
          )
  
          length -= ipv6_frag['length']
          ipv6_frag['packet'] = self._read_packet(header=8, payload=length)
  
          if extension:
              self._protos = None
              return ipv6_frag
          return self._decode_next_layer(ipv6_frag, _next, length)
docs: Read Fragment Header for IPv6.
  
          Structure of IPv6-Frag header [RFC 8200]:
              +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              |  Next Header  |   Reserved    |      Fragment Offset    |Res|M|
              +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
              |                         Identification                        |
              +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  
              Octets      Bits        Name                    Description
                0           0     frag.next               Next Header
                1           8     -                       Reserved
                2          16     frag.offset             Fragment Offset
                3          29     -                       Reserved
                3          31     frag.mf                 More Flag
                4          32     frag.id                 Identification