Exemplo n.º 1
0
 def test_faucet(self):
     """Test FAUCET can be initialized."""
     os.environ['FAUCET_CONFIG'] = '/dev/null'
     os.environ['FAUCET_LOG'] = '/dev/null'
     os.environ['FAUCET_EXCEPTION_LOG'] = '/dev/null'
     ryu_app = faucet.Faucet(dpset={}, reg=CollectorRegistry())
     ryu_app.reload_config(None)
     self.assertFalse(ryu_app._config_files_changed())  # pylint: disable=protected-access
     ryu_app.metric_update(None)
     event_dp = dpset.EventDPReconnected(dp=self._fake_dp())
     for enter in (True, False):
         event_dp.enter = enter
         ryu_app.connect_or_disconnect_handler(event_dp)
     for event_handler in (
             ryu_app.error_handler,
             ryu_app.features_handler,
             ryu_app.packet_in_handler,
             ryu_app.desc_stats_reply_handler,
             ryu_app.port_status_handler,
             ryu_app.flowremoved_handler,
             ryu_app.reconnect_handler,
             ryu_app._datapath_connect,  # pylint: disable=protected-access
             ryu_app._datapath_disconnect):  # pylint: disable=protected-access
         msg = namedtuple('msg', ['datapath'])(self._fake_dp())
         event = EventOFPMsgBase(msg=msg)
         event.dp = msg.datapath
         event_handler(event)
     ryu_app._check_thread_exception()  # pylint: disable=protected-access
     ryu_app._thread_jitter(1)  # pylint: disable=protected-access
Exemplo n.º 2
0
def main():
    """Run AFL repeatedly with externally supplied generated packet from STDIN."""
    application = faucet.Faucet(dpset=dpset.DPSet())
    application.start()

    # make sure dps are running
    if application.valves_manager is not None:
        for valve in list(application.valves_manager.valves.values()):
            state = valve.dp.dyn_finalized
            valve.dp.dyn_finalized = False
            valve.dp.running = True
            valve.dp.dyn_finalized = state

    while afl.loop(ROUNDS):  # pylint: disable=c-extension-no-member
        # receive input from afl
        rcv = sys.stdin.read()
        data = None
        try:
            data = bytearray.fromhex(rcv)  # pytype: disable=missing-parameter,wrong-arg-types
        except (ValueError, TypeError):
            continue

        # create fake packet
        _dp = fake_packet.Datapath(1)
        msg = fake_packet.Message(datapath=_dp,
                                  cookie=15243729,
                                  port=1,
                                  data=data,
                                  in_port=1)
        pkt = fake_packet.RyuEvent(msg)

        # send fake packet to faucet
        application.packet_in_handler(pkt)
Exemplo n.º 3
0
 def test_faucet(self):
     """Test FAUCET can be initialized."""
     os.environ['FAUCET_CONFIG'] = '/dev/null'
     os.environ['FAUCET_LOG'] = '/dev/null'
     os.environ['FAUCET_EXCEPTION_LOG'] = '/dev/null'
     ryu_app = faucet.Faucet(
         dpset={},
         faucet_experimental_api=faucet_experimental_api.
         FaucetExperimentalAPI(),
         reg=CollectorRegistry())
     ryu_app.reload_config(None)
     self.assertFalse(ryu_app._config_files_changed())
     ryu_app.metric_update(None)
     ryu_app.get_config()
     ryu_app.get_tables(0)
     event_dp = dpset.EventDPReconnected(dp=self._fake_dp())
     for enter in (True, False):
         event_dp.enter = enter
         ryu_app.connect_or_disconnect_handler(event_dp)
     for event_handler in (ryu_app.error_handler, ryu_app.features_handler,
                           ryu_app.packet_in_handler,
                           ryu_app.desc_stats_reply_handler,
                           ryu_app.port_status_handler,
                           ryu_app.flowremoved_handler,
                           ryu_app.reconnect_handler,
                           ryu_app._datapath_connect,
                           ryu_app._datapath_disconnect):
         msg = namedtuple('msg', ['datapath'])(self._fake_dp())
         event = EventOFPMsgBase(msg=msg)
         event.dp = msg.datapath
         event_handler(event)
Exemplo n.º 4
0
def main():
    application = faucet.Faucet(
        dpset=dpset.DPSet(),
        faucet_experimental_api=faucet_experimental_api.FaucetExperimentalAPI(
        ))
    application.start()

    # make sure dps are running
    if application.valves_manager is not None:
        for valve in list(application.valves_manager.valves.values()):
            valve.dp.running = True

    while afl.loop(ROUNDS):
        # receive input from afl
        rcv = sys.stdin.read()
        data = None
        try:
            data = bytearray.fromhex(rcv)  # pytype: disable=missing-parameter
        except (ValueError, TypeError):
            continue

        # create fake packet
        dp = Fake.Datapath(1)
        msg = Fake.Message(datapath=dp,
                           cookie=1524372928,
                           port=1,
                           data=data,
                           in_port=1)
        pkt = Fake.RyuEvent(msg)

        # send fake packet to faucet
        application.packet_in_handler(pkt)
Exemplo n.º 5
0
def main():
    # run faucet
    application = faucet.Faucet(dpset=dpset.DPSet(), faucet_experimental_api=faucet_experimental_api.FaucetExperimentalAPI())
    application.start()

    # make sure dps are running
    for dp_id, valve in list(application.valves.items()):
        valve.dp.running = True

    # receive input from afl
    rcv = sys.stdin.read()
    data = None
    try:
        data = bytearray.fromhex(rcv)
    except (ValueError, TypeError):
        pass

    if data is not None:
        # create fake packet
        dp = Fake.Datapath(1)
        msg = Fake.Message(datapath=dp, cookie=1524372928, port=1, data=data, in_port=1)
        pkt = Fake.RyuEvent(msg)

        # send fake packet to faucet
        application.packet_in_handler(pkt)
Exemplo n.º 6
0
def main():
    """Shows the crash in the FAUCET log produced by given input."""

    with open(sys.argv[1]) as pkt:
        packet_data = str(pkt.read())

    # start faucet
    application = faucet.Faucet(
        dpset=dpset.DPSet(),
        faucet_experimental_api=faucet_experimental_api.FaucetExperimentalAPI())
    application.start()

    # make sure dps are running
    if application.valves_manager is not None:
        for valve in list(application.valves_manager.valves.values()):
            state = valve.dp.dyn_finalized
            valve.dp.dyn_finalized = False
            valve.dp.running = True
            valve.dp.dyn_finalized = state

    # create data from read file
    byte_data = None
    try:
        byte_data = bytearray.fromhex(packet_data)  # pytype: disable=missing-parameter,wrong-arg-types
    except (ValueError, TypeError):
        pass

    if byte_data is not None:
        # create fake packet
        _dp = fake_packet.Datapath(1)
        msg = fake_packet.Message(datapath=_dp, cookie=15243729, port=1, data=byte_data, in_port=1)
        pkt = fake_packet.RyuEvent(msg)

        # send packet to faucet and display error produced
        application.packet_in_handler(pkt)
Exemplo n.º 7
0
def main():
    # go through all files in directory
    # read file and store in string
    with open(sys.argv[1]) as pkt:
        packet_data = pkt.read()

    # start faucet
    application = faucet.Faucet(
        dpset=dpset.DPSet(),
        faucet_experimental_api=faucet_experimental_api.FaucetExperimentalAPI(
        ))
    application.start()

    # make sure dps are running
    for dp_id, valve in list(application.valves.items()):
        valve.dp.running = True

    # create data from read file
    byte_data = None
    try:
        byte_data = bytearray.fromhex(packet_data)
    except (ValueError, TypeError):
        pass

    if byte_data is not None:
        # create fake packet
        dp = Fake.Datapath(1)
        msg = Fake.Message(datapath=dp,
                           cookie=1524372928,
                           port=1,
                           data=byte_data,
                           in_port=1)
        pkt = Fake.RyuEvent(msg)

        # send packet to faucet and display error produced
        try:
            application.packet_in_handler(pkt)
        except Exception as err:
            print('FILE: ' + str(sys.argv[1]))
            print('ERROR: ' + str(err))
Exemplo n.º 8
0
def main():
    # go through all files in directory
    # read file and store in string
    with open(sys.argv[1]) as pkt:
        packet_data = str(pkt.read())

    # start faucet
    application = faucet.Faucet(
        dpset=dpset.DPSet(),
        faucet_experimental_api=faucet_experimental_api.FaucetExperimentalAPI(
        ))
    application.start()

    # make sure dps are running
    if application.valves_manager is not None:
        for valve in list(application.valves_manager.valves.values()):
            valve.dp.running = True

    # create data from read file
    byte_data = None
    try:
        byte_data = bytearray.fromhex(packet_data)  # pytype: disable=missing-parameter
    except (ValueError, TypeError):
        pass

    if byte_data is not None:
        # create fake packet
        dp = Fake.Datapath(1)
        msg = Fake.Message(datapath=dp,
                           cookie=1524372928,
                           port=1,
                           data=byte_data,
                           in_port=1)
        pkt = Fake.RyuEvent(msg)

        # send packet to faucet and display error produced
        application.packet_in_handler(pkt)
Exemplo n.º 9
0
#!/usr/bin/env python3
import logging
import os
import sys
import Fake
from faucet import faucet
from ryu.controller import dpset
from faucet import faucet_experimental_api

logging.disable(logging.CRITICAL)

# run faucet
application = faucet.Faucet(
    dpset=dpset.DPSet(),
    faucet_experimental_api=faucet_experimental_api.FaucetExperimentalAPI())
application.start()

# make sure dps are running
for dp_id, valve in list(application.valves.items()):
    valve.dp.running = True

import afl
while afl.loop(1000):
    # receive input from afl
    rcv = sys.stdin.read()
    data = None
    try:
        data = bytearray.fromhex(rcv)
    except (ValueError, TypeError):
        pass