def read_ipv6_frag(self, length, extension):
if length is None:<EOL><INDENT>length = len(self)<EOL><DEDENT>_next = self._read_protos(<NUM_LIT:1>)<EOL>_temp = self._read_fileng(<NUM_LIT:1>)<EOL>_offm = self._read_binary(<NUM_LIT:2>)<EOL>_ipid = self._read_unpack(<NUM_LIT:4>)<EOL>ipv6_frag = dict(<EOL>next=_next,<EOL>length=<NUM_LIT:8>,<EOL>offset=int(_offm[:<NUM_LIT>], base=<NUM_LIT:2>),<EOL>mf=True if int(_offm[<NUM_LIT:15>], base=<NUM_LIT:2>) else False,<EOL>id=_ipid,<EOL>)<EOL>length -= ipv6_frag['<STR_LIT>']<EOL>ipv6_frag['<STR_LIT>'] = self._read_packet(header=<NUM_LIT:8>, payload=length)<EOL>if extension:<EOL><INDENT>self._protos = None<EOL>return ipv6_frag<EOL><DEDENT>return self._decode_next_layer(ipv6_frag, _next, length)<EOL>
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