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
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)
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)
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)
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)
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)
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))
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)
#!/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