def read_ospf(self, length):
if length is None:<EOL><INDENT>length = len(self)<EOL><DEDENT>_vers = self._read_unpack(<NUM_LIT:1>)<EOL>_type = self._read_unpack(<NUM_LIT:1>)<EOL>_tlen = self._read_unpack(<NUM_LIT:2>)<EOL>_rtid = self._read_id_numbers()<EOL>_area = self._read_id_numbers()<EOL>_csum = self._read_fileng(<NUM_LIT:2>)<EOL>_autp = self._read_unpack(<NUM_LIT:2>)<EOL>ospf = dict(<EOL>version=_vers,<EOL>type=TYPE.get(_type),<EOL>len=_tlen,<EOL>router_id=_rtid,<EOL>area_id=_area,<EOL>chksum=_csum,<EOL>autype=AUTH.get(_autp) or '<STR_LIT>',<EOL>)<EOL>if _autp == <NUM_LIT:2>:<EOL><INDENT>ospf['<STR_LIT>'] = self._read_encrypt_auth()<EOL><DEDENT>else:<EOL><INDENT>ospf['<STR_LIT>'] = self._read_fileng(<NUM_LIT:8>)<EOL><DEDENT>length = ospf['<STR_LIT>'] - <NUM_LIT><EOL>ospf['<STR_LIT>'] = self._read_packet(header=<NUM_LIT>, payload=length)<EOL>return self._decode_next_layer(ospf, length)<EOL>
Read Open Shortest Path First.

        Structure of OSPF header [RFC 2328]:
            0                   1                   2                   3
            0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
           |   Version #   |     Type      |         Packet length         |
           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
           |                          Router ID                            |
           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
           |                           Area ID                             |
           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
           |           Checksum            |             AuType            |
           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
           |                       Authentication                          |
           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
           |                       Authentication                          |
           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

            Octets      Bits        Name                    Description
              0           0     ospf.version            Version #
              1           8     ospf.type               Type (0/1)
              2          16     ospf.len                Packet Length (header includes)
              4          32     ospf.router_id          Router ID
              8          64     ospf.area_id            Area ID
              12         96     ospf.chksum             Checksum
              14        112     ospf.autype             AuType
              16        128     ospf.auth               Authentication