diff options
author | watanabe.fumitaka <watanabe.fumitaka@nttcom.co.jp> | 2013-07-31 19:44:11 +0900 |
---|---|---|
committer | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2013-07-31 19:44:11 +0900 |
commit | 4571711640d45c034a9c8093165ec2db504f8098 (patch) | |
tree | caab41599adfbd052fd500c18f48a2de16bfc68c | |
parent | ad3b896d58aadad04ec21c33fd60fb00f46da7c3 (diff) |
add unit test for packet library llc
Signed-off-by: WATANABE Fumitaka <watanabe.fumitaka@nttcom.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
-rw-r--r-- | ryu/tests/unit/packet/test_packet.py | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/ryu/tests/unit/packet/test_packet.py b/ryu/tests/unit/packet/test_packet.py index 8594002d..7598ec25 100644 --- a/ryu/tests/unit/packet/test_packet.py +++ b/ryu/tests/unit/packet/test_packet.py @@ -367,3 +367,95 @@ class TestPacket(unittest.TestCase): # payload ok_('payload' in protocols) eq_(self.payload, protocols['payload'].tostring()) + + def test_llc_bpdu(self): + # buid packet + e = ethernet.ethernet(self.dst_mac, self.src_mac, + ether.ETH_TYPE_IEEE802_3) + llc_control = llc.ControlFormatU(0, 0, 0) + l = llc.llc(llc.SAP_BDPU, llc.SAP_BDPU, llc_control) + b = bpdu.ConfigurationBPDUs(flags=0, + root_priority=32768, + root_system_id_extension=0, + root_mac_address=self.src_mac, + root_path_cost=0, + bridge_priority=32768, + bridge_system_id_extension=0, + bridge_mac_address=self.dst_mac, + port_priority=128, + port_number=4, + message_age=1, + max_age=20, + hello_time=2, + forward_delay=15) + + p = packet.Packet() + p.add_protocol(e) + p.add_protocol(l) + p.add_protocol(b) + p.serialize() + + # ethernet !6s6sH + e_buf = self.dst_mac + self.src_mac + '\x05\xdc' + + # llc !BBB + l_buf = ('\x42' + '\x42' + '\x03') + + # bpdu !HBBBQIQHHHHH + b_buf = ('\x00\x00' + '\x00' + '\x00' + '\x00' + '\x80\x64\xaa\xaa\xaa\xaa\xaa\xaa' + '\x00\x00\x00\x04' + '\x80\x64\xbb\xbb\xbb\xbb\xbb\xbb' + '\x80\x04' + '\x01\x00' + '\x14\x00' + '\x02\x00' + '\x0f\x00') + + buf = e_buf + l_buf + b_buf + + # parse + pkt = packet.Packet(array.array('B', p.data)) + protocols = self.get_protocols(pkt) + p_eth = protocols['ethernet'] + p_llc = protocols['llc'] + p_bpdu = protocols['ConfigurationBPDUs'] + + # ethernet + ok_(p_eth) + eq_(self.dst_mac, p_eth.dst) + eq_(self.src_mac, p_eth.src) + eq_(ether.ETH_TYPE_IEEE802_3, p_eth.ethertype) + + # llc + ok_(p_llc) + eq_(llc.SAP_BDPU, p_llc.dsap_addr) + eq_(llc.SAP_BDPU, p_llc.ssap_addr) + eq_(0, p_llc.control.modifier_function1) + eq_(0, p_llc.control.pf_bit) + eq_(0, p_llc.control.modifier_function2) + + # bpdu + ok_(p_bpdu) + eq_(bpdu.PROTOCOL_IDENTIFIER, p_bpdu.protocol_id) + eq_(bpdu.PROTOCOLVERSION_ID_BPDU, p_bpdu.version_id) + eq_(bpdu.TYPE_CONFIG_BPDU, p_bpdu.bpdu_type) + eq_(0, p_bpdu.flags) + eq_(32768, p_bpdu.root_priority) + eq_(0, p_bpdu.root_system_id_extension) + eq_(self.src_mac, p_bpdu.root_mac_address) + eq_(0, p_bpdu.root_path_cost) + eq_(32768, p_bpdu.bridge_priority) + eq_(0, p_bpdu.bridge_system_id_extension) + eq_(self.dst_mac, p_bpdu.bridge_mac_address) + eq_(128, p_bpdu.port_priority) + eq_(4, p_bpdu.port_number) + eq_(1, p_bpdu.message_age) + eq_(20, p_bpdu.max_age) + eq_(2, p_bpdu.hello_time) + eq_(15, p_bpdu.forward_delay) |