Ejemplo n.º 1
0
def parse_and_run_test(program, pkt, init_state='start', init_ctrl='', debug=0):

    p4 = compile_string( program=program )

    if not p4:
        print "Hmmm. Syntax error?"
        sys.exit(1)

    runtime = Runtime(p4)

    p4.check_self_consistent()

    err, bytes_used = runtime.parse_packet(pkt, init_state)

    if err:
        return (p4, err, bytes_used)

    if init_ctrl: run_control_function(p4, pkt, init_ctrl )

    return (p4, '', bytes_used )
Ejemplo n.º 2
0
def process_pkts(p4, runtime, pkts=[], init_state='start', init_ctrl='', debug=0):

    total_bytes_used = 0

    pkts_out = []

    for pkt in pkts:

        err, bytes_used = runtime.parse_packet(pkt, init_state)

        if err:
            return (err, bytes_used, pkts_out)

        if init_ctrl: 
            run_control_function( p4, pkt, init_ctrl )
            pkt_out = p4.deparse_packet(pkt, bytes_used)
            pkts_out.append(pkt_out)

        total_bytes_used += bytes_used

    return ('', total_bytes_used, pkts_out )
Ejemplo n.º 3
0
def setup_tables_parse_and_run_test( program, setup_cmds=[], pkts=[], 
                                     init_state='start', init_ctrl='', debug=0):

    p4, runtime = create_P4_and_runtime(program, debug=0)

    for cmd in setup_cmds: 
        runtime.run_cmd(cmd)

    total_bytes_used = 0

    for pkt in pkts:

        err, bytes_used = runtime.parse_packet(pkt, init_state)

        if err:
            return (p4, err, bytes_used)

        if init_ctrl: run_control_function(p4, pkt, init_ctrl )

        total_bytes_used += bytes_used

    return (p4, '', total_bytes_used )