def _read_opt_ra(self, code, *, desc):
_type = self._read_opt_type(code)<EOL>_size = self._read_unpack(<NUM_LIT:1>)<EOL>if _size != <NUM_LIT:2>:<EOL><INDENT>raise ProtocolError(f'<STR_LIT>')<EOL><DEDENT>_rval = self._read_unpack(<NUM_LIT:2>)<EOL>if <NUM_LIT:4> <= _rval <= <NUM_LIT>:<EOL><INDENT>_dscp = f'<STR_LIT>'   <EOL><DEDENT>elif <NUM_LIT> <= _rval <= <NUM_LIT>:<EOL><INDENT>_dscp = f'<STR_LIT>'            <EOL><DEDENT>elif <NUM_LIT> <= _rval <= <NUM_LIT>:<EOL><INDENT>_dscp = '<STR_LIT>'                     <EOL><DEDENT>else:<EOL><INDENT>_dscp = _ROUTER_ALERT.get(_rval, '<STR_LIT>')<EOL><DEDENT>opt = dict(<EOL>desc=desc,<EOL>type=_type,<EOL>length=_size + <NUM_LIT:2>,<EOL>value=_rval,<EOL>alert=_dscp,<EOL>)<EOL>return opt<EOL>
Read HOPOPT Router Alert option.

        Structure of HOPOPT Router Alert option [RFC 2711]:
            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
            |0 0 0|0 0 1 0 1|0 0 0 0 0 0 1 0|        Value (2 octets)       |
            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

            Octets      Bits        Name                    Description
              0           0     hopopt.ra.type          Option Type
              0           0     hopopt.ra.type.value    Option Number
              0           0     hopopt.ra.type.action   Action (00)
              0           2     hopopt.ra.type.change   Change Flag (0)
              1           8     hopopt.opt.length       Length of Option Data
              2          16     hopopt.ra.value         Value