示例#1
0
    def setUp(self):
        self.interface_mtu = 1
        self.options = 2
        self.i_bit = False
        self.m_bit = True
        self.ms_bit = True
        self.dd_sequence_number = 3
        self.lsa_header_1 = header.Header(10, 20, 1, 30, '1.1.1.1', 40,
                                          conf.VERSION_IPV4)
        self.lsa_header_2 = header.Header(50, 60, 2, 70, '2.2.2.2', 80,
                                          conf.VERSION_IPV4)
        self.lsa_header_3 = header.Header(90, 0, 3, 100, '3.3.3.3', 110,
                                          conf.VERSION_IPV6)
        self.lsa_header_4 = header.Header(120, 0, 4, 130, '4.4.4.4', 140,
                                          conf.VERSION_IPV6)
        self.lsa_header_5 = header.Header(150, 0, 5, 160, '5.5.5.5', 170,
                                          conf.VERSION_IPV6)

        self.db_description_ospfv2 = db_description.DBDescription(
            self.interface_mtu, self.options, self.i_bit, self.m_bit,
            self.ms_bit, self.dd_sequence_number, (self.lsa_header_1, ),
            conf.VERSION_IPV4)
        self.db_description_ospfv3 = db_description.DBDescription(
            self.interface_mtu, self.options, self.i_bit, self.m_bit,
            self.ms_bit, self.dd_sequence_number,
            (self.lsa_header_3, self.lsa_header_4), conf.VERSION_IPV6)
示例#2
0
 def setUp(self):
     self.ls_age = 1
     self.options = 2
     self.ls_type = conf.LSA_TYPE_ROUTER
     self.link_state_id = '3.3.3.3'
     self.advertising_router = '1.1.1.1'
     self.ls_sequence_number = 4
     self.header_ospfv2 = header.Header(self.ls_age, self.options, self.ls_type, self.link_state_id,
                                        self.advertising_router, self.ls_sequence_number, conf.VERSION_IPV4)
     self.header_ospfv3 = header.Header(self.ls_age, 0, self.ls_type, self.link_state_id, self.advertising_router,
                                        self.ls_sequence_number, conf.VERSION_IPV6)
示例#3
0
    def test_pack_header(self):
        header_bytes = b'\x00\x01"\x01\x01\x01\x01\x01\x01\x01\x01\x01\x80\x00\x00\x06\x00\x00\x00\x00'
        header_ospfv2 = header.Header(1, 34, 1, '1.1.1.1', '1.1.1.1', 2147483654, conf.VERSION_IPV4)
        self.assertEqual(header_bytes, header_ospfv2.pack_header())
        header_ospfv2.ls_checksum = 2992
        header_ospfv2.length = 84
        header_bytes = b'\x00\x01"\x01\x01\x01\x01\x01\x01\x01\x01\x01\x80\x00\x00\x06\x0b\xb0\x00T'
        self.assertEqual(header_bytes, header_ospfv2.pack_header())

        header_bytes = b'\x00&\x00\x08\x00\x00\x00\x04\x01\x01\x01\x01\x80\x00\x00\x02\x00\x00\x00\x00'
        header_ospfv3 = header.Header(38, 0, 8, '0.0.0.4', '1.1.1.1', 2147483650, conf.VERSION_IPV6)
        self.assertEqual(header_bytes, header_ospfv3.pack_header())
        header_ospfv3.ls_checksum = 33022
        header_ospfv3.length = 56
        header_bytes = b'\x00&\x00\x08\x00\x00\x00\x04\x01\x01\x01\x01\x80\x00\x00\x02\x80\xfe\x008'
        self.assertEqual(header_bytes, header_ospfv3.pack_header())
 def create_extension_header(self, ls_age, options, opaque_type, ls_type,
                             advertising_router, ls_sequence_number,
                             version):
     if version == conf.VERSION_IPV4:
         if opaque_type not in [
                 conf.OPAQUE_TYPE_ABR_LSA, conf.OPAQUE_TYPE_PREFIX_LSA,
                 conf.OPAQUE_TYPE_ASBR_LSA
         ]:
             raise ValueError("Invalid Opaque Type")
         ls_type = conf.LSA_TYPE_OPAQUE_AS
         opaque_id = 0  # Each router creates at most one Extension LSA of each type
         link_state_id = (opaque_type << 3 * conf.BYTE_SIZE) + opaque_id
     elif version == conf.VERSION_IPV6:
         if ls_type not in [
                 conf.LSA_TYPE_EXTENSION_ABR_LSA,
                 conf.LSA_TYPE_EXTENSION_PREFIX_LSA,
                 conf.LSA_TYPE_EXTENSION_ASBR_LSA
         ]:
             raise ValueError("Invalid LS Type")
         u_bit = 1  # LSA is stored and flooded as if LS Type was known
         s1_s2_bits = conf.AS_SCOPING
         ls_type = (u_bit << 15) + (s1_s2_bits << 13) + ls_type
         link_state_id = 0
     else:
         raise ValueError("Invalid OSPF version")
     self.header = header.Header(ls_age, options, ls_type, link_state_id,
                                 advertising_router, ls_sequence_number,
                                 version)
     self.body = None
示例#5
0
 def test_constructor_invalid_parameters(self):
     with self.assertRaises(ValueError):
         header.Header(-1, self.options, self.ls_type, self.link_state_id, self.advertising_router,
                       self.ls_sequence_number, conf.VERSION_IPV4)
     with self.assertRaises(ValueError):
         header.Header(self.ls_age, -1, self.ls_type, self.link_state_id, self.advertising_router,
                       self.ls_sequence_number, conf.VERSION_IPV4)
     with self.assertRaises(ValueError):
         header.Header(self.ls_age, self.options, -1, self.link_state_id, self.advertising_router,
                       self.ls_sequence_number, conf.VERSION_IPV4)
     with self.assertRaises(ValueError):
         header.Header(self.ls_age, self.options, self.ls_type, -1, self.advertising_router, self.ls_sequence_number,
                       conf.VERSION_IPV4)
     with self.assertRaises(ValueError):
         header.Header(self.ls_age, self.options, self.ls_type, self.link_state_id, '', self.ls_sequence_number,
                       conf.VERSION_IPV4)
     with self.assertRaises(ValueError):
         header.Header(self.ls_age, self.options, self.ls_type, self.link_state_id, self.advertising_router, -1,
                       conf.VERSION_IPV4)
     with self.assertRaises(ValueError):
         header.Header(self.ls_age, self.options, self.ls_type, self.link_state_id, self.advertising_router,
                       self.ls_sequence_number, -1)
 def create_header(self, ls_age, options, ls_type, link_state_id,
                   advertising_router, ls_sequence_number, version):
     self.header = header.Header(ls_age, options, ls_type, link_state_id,
                                 advertising_router, ls_sequence_number,
                                 version)
     self.body = None