def _read_mptcp_join(self, bits, size, kind):
if self._syn and self._ack:     <EOL><INDENT>return self._read_join_synack(bits, size, kind)<EOL><DEDENT>elif self._syn:                 <EOL><INDENT>return self._read_join_syn(bits, size, kind)<EOL><DEDENT>elif self._ack:                 <EOL><INDENT>return self._read_join_ack(bits, size, kind)<EOL><DEDENT>else:                           <EOL><INDENT>temp = self._read_fileng(size)<EOL>data = dict(<EOL>kind=kind,<EOL>length=size + <NUM_LIT:1>,<EOL>subtype='<STR_LIT>',<EOL>data=bytes(chr(int(bits[:<NUM_LIT:4>], base=<NUM_LIT:2>)), encoding='<STR_LIT:utf-8>') + temp,<EOL>)<EOL>return data<EOL><DEDENT>
Read Join Connection option.

        Positional arguments:
            * bits - str, 4-bit data
            * size - int, length of option
            * kind - int, 30 (Multipath TCP)

        Returns:
            * dict -- extracted Join Connection (MP_JOIN) option

        Structure of MP_JOIN [RFC 6824]:
            Octets      Bits        Name                        Description
              0           0     tcp.mp.kind                 Kind (30)
              1           8     tcp.mp.length               Length
              2          16     tcp.mp.subtype              Subtype (1)
              2          20     tcp.mp.data                 Handshake-specific Data