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)
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)
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
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