Beispiel #1
0
def activateRelaySocket(port):
    global ofSwitch

    hostname = socket.gethostbyname(socket.gethostname())
    listenSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    listenSock.bind(("0.0.0.0", port))
    listenSock.listen(1)
    data = b''
    sdnpwn.message("[Relay Socket] Relay port open on port " + str(port) + "",
                   sdnpwn.NORMAL)
    while 1:
        try:
            conn, addr = listenSock.accept()
            msgHeader = conn.recv(8)
            header = Header()
            header.unpack(msgHeader)
            sdnpwn.message(
                "[Relay Socket] Got " + str(header.message_type) + " from " +
                str(addr), sdnpwn.NORMAL)
            msgBody = conn.recv(header.length - 8)
            msgFull = header.pack() + msgBody
            print(msgFull)
            ofSwitch.comm_sock.send(msgFull)
        except Exception as e:
            sdnpwn.message("[Relay socket] Error handling message",
                           sdnpwn.WARNING)
            print(e)
    listenSock.close()
Beispiel #2
0
class TestHeader(unittest.TestCase):
    """Test the message Header."""
    def setUp(self):
        """Setup the TestHeader Class instantiating a HELLO header."""
        self.message = Header()
        self.message.message_type = Type.OFPT_HELLO
        self.message.xid = 1
        self.message.length = 0

    def test_size(self):
        """[Common/Header] - size 8."""
        self.assertEqual(self.message.get_size(), 8)

    @unittest.expectedFailure
    def test_pack_empty(self):
        """[Common/Header] - packing empty header."""
        self.assertRaises(TypeError, Header().pack())

    def test_pack(self):
        """[Common/Header] - packing Hello."""
        packed_header = b'\x01\x00\x00\x00\x00\x00\x00\x01'
        self.assertEqual(self.message.pack(), packed_header)

    def test_unpack(self):
        """[Common/Header] - unpacking Hello."""
        filename = os.path.join(os.path.dirname(os.path.realpath('__file__')),
                                'raw/v0x01/ofpt_hello.dat')
        f = open(filename, 'rb')
        self.message.unpack(f.read(8))

        self.assertEqual(self.message.length, 8)
        self.assertEqual(self.message.xid, 1)
        self.assertEqual(self.message.message_type, Type.OFPT_HELLO)
        self.assertEqual(self.message.version, 1)

        f.close()

    @patch('pyof.v0x01.common.header.randint')
    def test_random_xid(self, m):
        """Each Header instantiations without xid should call randint."""
        Header(), Header()  # noqa
        self.assertEqual(m.call_count, 2)
Beispiel #3
0
class TestHeader(unittest.TestCase):
    """Test the message Header."""

    def setUp(self):
        """Setup the TestHeader Class instantiating a HELLO header."""
        self.message = Header()
        self.message.message_type = Type.OFPT_HELLO
        self.message.xid = 1
        self.message.length = 0

    def test_size(self):
        """[Common/Header] - size 8."""
        self.assertEqual(self.message.get_size(), 8)

    @unittest.expectedFailure
    def test_pack_empty(self):
        """[Common/Header] - packing empty header."""
        self.assertRaises(TypeError,
                          Header().pack())

    def test_pack(self):
        """[Common/Header] - packing Hello."""
        packed_header = b'\x01\x00\x00\x00\x00\x00\x00\x01'
        self.assertEqual(self.message.pack(), packed_header)

    def test_unpack(self):
        """[Common/Header] - unpacking Hello."""
        filename = os.path.join(os.path.dirname(os.path.realpath('__file__')),
                                'raw/v0x01/ofpt_hello.dat')
        f = open(filename, 'rb')
        self.message.unpack(f.read(8))

        self.assertEqual(self.message.length, 8)
        self.assertEqual(self.message.xid, 1)
        self.assertEqual(self.message.message_type, Type.OFPT_HELLO)
        self.assertEqual(self.message.version, 1)

        f.close()