def test_it_should_send_packets_to_a_link(self): l = Link('A') i = Interface(link=l) i.send("This is a packet.") self.assertEqual(1, len(l.forwarded())) self.assertEqual("This is a packet.", l.forwarded()[0])
def test_it_should_accept_packets_from_a_link(self): l = Link('A') i = Interface(link=l) j = Interface(link=l) i.send("This is a packet.") self.assertEqual(1, len(j.received())) self.assertEqual("This is a packet.", j.received()[0])
def test_it_should_encapsulate_packets_with_layer_2_frames_on_send(self): l = Link('A') i = Interface(link=l) i.send(IPv6()) self.assertEqual(1, len(l.forwarded())) self.assertTrue(l.forwarded()[0].haslayer(Ether)) self.assertTrue(l.forwarded()[0].haslayer(IPv6))
def test_it_should_set_the_source_and_destination_mac_addresses_to_defaults_for_ethernet_link_layer(self): l = Link('A') i = Interface(link=l) i.send(IPv6()) self.assertEqual(1, len(l.forwarded())) self.assertTrue(l.forwarded()[0].haslayer(Ether)) self.assertEqual("00:00:00:00:00:00", l.forwarded()[0].getlayer(Ether).src) self.assertEqual("ff:ff:ff:ff:ff:ff", l.forwarded()[0].getlayer(Ether).dst)
def test_it_should_overwrite_the_destination_mac_of_an_ethernet_frame(self): l = Link('A') i = Interface(link=l) j = MockInterface('if0', '00:b0:d0:86:bb:f7') k = TargetInterface(link_addr="00:b0:d0:bb:cc:ff") t = Tap(l, j, k) i.send(IPv6()) self.assertEqual(1, len(j.sent)) self.assertTrue(j.sent[0].haslayer(Ether)) self.assertTrue(j.sent[0].haslayer(IPv6)) self.assertEqual("00:b0:d0:bb:cc:ff", j.sent[0].getlayer(Ether).dst)
def test_it_should_invoke_on_send_callbacks(self): l = Link('A') i = Interface(link=l) self.called = False self.packet = None def c(p, iface): self.called = True self.packet = p i.on_send(c) i.send("This is a packet.") self.assertTrue(self.called) self.assertEqual("This is a packet.", self.packet)