예제 #1
0
def test_single_field_2():
    start_new_test()
    virtual_field("test2", range(0,15), type="integer")
    m = vdict(test2=14, srcip=ip1)
    assert (m['vlan_id'] == 14 and m['vlan_total_stages'] == 1 and
            m['vlan_nbits'] == 4)
    success()
예제 #2
0
def test_single_field_2():
    start_new_test()
    virtual_field("test2", range(0, 15), type="integer")
    m = vdict(test2=14, srcip=ip1)
    assert (m['vlan_id'] == 14 and m['vlan_total_stages'] == 1
            and m['vlan_nbits'] == 4)
    success()
예제 #3
0
def test_single_field_1():
    start_new_test()
    virtual_field("test1", range(0, 10), type="integer")
    m = vdict(test1=4, srcip=ip1)
    assert m['vlan_id'] == 4
    assert m['vlan_total_stages'] == 1
    assert m['vlan_nbits'] == 4
    success()
예제 #4
0
def test_single_field_1():
    start_new_test()
    virtual_field("test1", range(0, 10), type="integer")
    m = vdict(test1=4, srcip=ip1)
    assert m['vlan_id'] == 4
    assert m['vlan_total_stages'] == 1
    assert m['vlan_nbits'] == 4
    success()
예제 #5
0
def test_single_stage_2():
    start_new_test()
    virtual_field("field11", range(0, 10), type="integer", stage=4)
    virtual_field("field12", range(0, 5), type="integer", stage=4)
    m1 = vdict(field11=0, field12=0, srcip=ip2)
    assert m1['vlan_id'] == 0 and m1['vlan_nbits'] == 7
    m2 = vdict(field11=4, field12=3, srcip=ip2)
    assert m2['vlan_id'] == 27
    m3 = vdict(field11=4, srcip=ip2)
    assert m3['vlan_id'] == 29
    m4 = vdict(srcip=ip3)
    assert not 'vlan_id' in m4
    success()
예제 #6
0
def test_single_stage_2():
    start_new_test()
    virtual_field("field11", range(0, 10), type="integer", stage=4)
    virtual_field("field12", range(0, 5), type="integer", stage=4)
    m1 = vdict(field11=0, field12=0, srcip=ip2)
    assert m1['vlan_id'] == 0 and m1['vlan_nbits'] == 7
    m2 = vdict(field11=4, field12=3, srcip=ip2)
    assert m2['vlan_id'] == 27
    m3 = vdict(field11=4, srcip=ip2)
    assert m3['vlan_id'] == 29
    m4 = vdict(srcip=ip3)
    assert not 'vlan_id' in m4
    success()
예제 #7
0
def test_decode():
    start_new_test()
    virtual_field("field11", range(0, 10), type="integer", stage=0)
    virtual_field("field21", range(0, 10), type="integer", stage=1)
    virtual_field("field12", range(0, 5), type="integer", stage=0)
    virtual_field("field22", range(0, 5), type="integer", stage=1)
    vlan_16bit = 2 + (27 << 7)
    vals = {
        'vlan_id': vlan_16bit & ((1 << 12) - 1),
        'vlan_pcp': (vlan_16bit >> 12) & ((1 << 3) - 1)
    }
    m = virtual_field.expand(vals)
    assert 'field11' in m and m['field11'] == 0
    assert 'field12' in m and m['field12'] == 2
    assert 'field21' in m and m['field21'] == 4
    assert 'field22' in m and m['field22'] == 3
    vlan_16bit = 2 + (29 << 7)
    vals = {
        'vlan_id': vlan_16bit & ((1 << 12) - 1),
        'vlan_pcp': (vlan_16bit >> 12) & ((1 << 3) - 1)
    }
    m = virtual_field.expand(vals)
    assert 'field11' in m and m['field11'] == 0
    assert 'field12' in m and m['field12'] == 2
    assert 'field21' in m and m['field21'] == 4
    assert 'field22' in m and m['field22'] == None
    success()
예제 #8
0
def test_multi_stage_3():
    start_new_test()
    virtual_field("field1",  range(0,10), type="integer", stage=0)
    virtual_field("field21", range(0,10), type="integer", stage=1)
    virtual_field("field22", range(0, 4), type="integer", stage=1)
    virtual_field("field3",  range(0, 5), type="integer", stage=2)
    m1 = vdict(field21=5, field22=3, srcip=ip1)
    assert m1['vlan_id'] == 28 << 4
    assert m1['vlan_offset'] == 4
    assert m1['vlan_nbits'] == 6
    assert m1['vlan_total_stages'] == 3
    m2 = vdict(field3=4, dstip=ip3)
    vlan_16bit = 4 << 10
    assert m2['vlan_id'] == vlan_16bit & ((1<<12)-1)
    assert m2['vlan_pcp'] == vlan_16bit >> 12
    assert m2['vlan_offset'] == 10
    assert m2['vlan_nbits'] == 3
    success()
예제 #9
0
def test_multi_stage_2():
    start_new_test()
    virtual_field("field11", range(0,10), type="integer", stage=0)
    virtual_field("field21", range(0,10), type="integer", stage=1)
    virtual_field("field12", range(0, 5), type="integer", stage=0)
    virtual_field("field22", range(0, 5), type="integer", stage=1)
    m1 = vdict(field11=0, field12=0, srcip=ip1)
    assert m1['vlan_total_stages'] == 2
    assert m1['vlan_id'] == 0
    assert m1['vlan_offset'] == 0
    assert m1['vlan_nbits'] == 7
    m2 = vdict(field21=4, field22=3, dstip=ip3)
    assert m2['vlan_total_stages'] == 2
    assert m2['vlan_offset'] == 7
    assert m2['vlan_nbits'] == 7
    assert m2['vlan_id'] == (27 << 7) & ((1<<12)-1) # least 12 bits
    assert m2['vlan_pcp'] == ((27 << 7) >> 12) & ((1<<3)-1) # highest 3 bits
    success()
예제 #10
0
def test_multi_stage_3():
    start_new_test()
    virtual_field("field1", range(0, 10), type="integer", stage=0)
    virtual_field("field21", range(0, 10), type="integer", stage=1)
    virtual_field("field22", range(0, 4), type="integer", stage=1)
    virtual_field("field3", range(0, 5), type="integer", stage=2)
    m1 = vdict(field21=5, field22=3, srcip=ip1)
    assert m1['vlan_id'] == 28 << 4
    assert m1['vlan_offset'] == 4
    assert m1['vlan_nbits'] == 6
    assert m1['vlan_total_stages'] == 3
    m2 = vdict(field3=4, dstip=ip3)
    vlan_16bit = 4 << 10
    assert m2['vlan_id'] == vlan_16bit & ((1 << 12) - 1)
    assert m2['vlan_pcp'] == vlan_16bit >> 12
    assert m2['vlan_offset'] == 10
    assert m2['vlan_nbits'] == 3
    success()
예제 #11
0
def test_multi_stage_2():
    start_new_test()
    virtual_field("field11", range(0, 10), type="integer", stage=0)
    virtual_field("field21", range(0, 10), type="integer", stage=1)
    virtual_field("field12", range(0, 5), type="integer", stage=0)
    virtual_field("field22", range(0, 5), type="integer", stage=1)
    m1 = vdict(field11=0, field12=0, srcip=ip1)
    assert m1['vlan_total_stages'] == 2
    assert m1['vlan_id'] == 0
    assert m1['vlan_offset'] == 0
    assert m1['vlan_nbits'] == 7
    m2 = vdict(field21=4, field22=3, dstip=ip3)
    assert m2['vlan_total_stages'] == 2
    assert m2['vlan_offset'] == 7
    assert m2['vlan_nbits'] == 7
    assert m2['vlan_id'] == (27 << 7) & ((1 << 12) - 1)  # least 12 bits
    assert m2['vlan_pcp'] == ((27 << 7) >> 12) & (
        (1 << 3) - 1)  # highest 3 bits
    success()
예제 #12
0
def test_multi_stage_1():
    start_new_test()
    virtual_field("field11", range(0,10), type="integer", stage=0)
    virtual_field("field12", range(0, 5), type="integer", stage=0)
    virtual_field("field2", range(0, 15), type="integer", stage=1)
    m1 = vdict(field11=4, field12=3, srcip=ip1)
    assert (m1['vlan_total_stages'] == 2 and m1['vlan_id'] == 27 and
            m1['vlan_offset'] == 0 and m1['vlan_nbits'] == 7)
    m2 = vdict(field2=2, dstip=ip3)
    assert m2['vlan_total_stages'] == 2
    assert m2['vlan_offset'] == 7
    assert m2['vlan_nbits'] == 4
    assert m2['vlan_id'] == 2 << 7
    success()
예제 #13
0
def test_multi_stage_1():
    start_new_test()
    virtual_field("field11", range(0, 10), type="integer", stage=0)
    virtual_field("field12", range(0, 5), type="integer", stage=0)
    virtual_field("field2", range(0, 15), type="integer", stage=1)
    m1 = vdict(field11=4, field12=3, srcip=ip1)
    assert (m1['vlan_total_stages'] == 2 and m1['vlan_id'] == 27
            and m1['vlan_offset'] == 0 and m1['vlan_nbits'] == 7)
    m2 = vdict(field2=2, dstip=ip3)
    assert m2['vlan_total_stages'] == 2
    assert m2['vlan_offset'] == 7
    assert m2['vlan_nbits'] == 4
    assert m2['vlan_id'] == 2 << 7
    success()
예제 #14
0
def test_decode():
    start_new_test()
    virtual_field("field11", range(0,10), type="integer", stage=0)
    virtual_field("field21", range(0,10), type="integer", stage=1)
    virtual_field("field12", range(0, 5), type="integer", stage=0)
    virtual_field("field22", range(0, 5), type="integer", stage=1)
    vlan_16bit = 2 + (27 << 7)
    vals = {'vlan_id': vlan_16bit & ((1<<12)-1),
            'vlan_pcp': (vlan_16bit >> 12) & ((1<<3)-1)}
    m = virtual_field.expand(vals)
    assert 'field11' in m and m['field11'] == 0
    assert 'field12' in m and m['field12'] == 2
    assert 'field21' in m and m['field21'] == 4
    assert 'field22' in m and m['field22'] == 3
    vlan_16bit = 2 + (29 << 7)
    vals = {'vlan_id': vlan_16bit & ((1<<12)-1),
            'vlan_pcp': (vlan_16bit >> 12) & ((1<<3)-1)}
    m = virtual_field.expand(vals)
    assert 'field11' in m and m['field11'] == 0
    assert 'field12' in m and m['field12'] == 2
    assert 'field21' in m and m['field21'] == 4
    assert 'field22' in m and m['field22'] == None
    success()
예제 #15
0
def test_single_field_3():
    start_new_test()
    virtual_field("test3", range(0, 16), type="integer")
    m = vdict(test3=4, srcip=ip1)
    assert m['vlan_id'] == 4 and m['vlan_nbits'] == 5
    success()
예제 #16
0
def test_single_field_3():
    start_new_test()
    virtual_field("test3", range(0,16), type="integer")
    m = vdict(test3=4, srcip=ip1)
    assert m['vlan_id'] == 4 and m['vlan_nbits'] == 5
    success()
예제 #17
0
파일: virtual.py 프로젝트: faramirs/wot
from pyretic.lib.std import *
from pyretic.modules.mac_learner import *
from pyretic.modules.hub import *
from pyretic.modules.hub import *
from pyretic.examples.dpi import dpi
from pyretic.core.runtime import virtual_field
from pyretic.core.language import egress_network, ingress_network

virtual_field(name="acl", values=["permit", "deny", "inspect"], type="string")


def main():
    firewall_policy = (
        (match(srcip=IPAddr("10.0.0.1")) >> modify(acl="permit")) +
        (match(srcip=IPAddr("10.0.0.3")) >> modify(acl="inspect")) +
        (match(srcip=IPAddr("10.0.0.2")) >> modify(acl="deny")))

    routing_policy = ((match(acl="inspect") >>
                       (dpi() + hub)) + (match(acl="deny") >> drop) +
                      (match(acl="permit") >> hub))

    return firewall_policy >> routing_policy
예제 #18
0
           out_table_pol)
    setup_tfs_data_from_policy(hs_format, pol, sw_ports, net_links)
    portids = get_portid_map(sw_ports)

    edge_ports = get_hsa_edge_ports(sw_ports, net_links)
    for (sw,ports) in edge_ports.iteritems():
        for p in ports:
            for outm in outmatches_list:
                print '*****'
                print "Testing reachability from sw %d p %d to %s" % (
                    sw,p,str(outm))
                print get_reachable_inheaders(hs_format, portids, sw_ports, sw,
                                              p, outm, no_vlan=True)

def hsa_path_test_0():
    hsa_path_test(0, sample_in_table_policy_0(),
                  sample_out_table_policy_0(),
                  sample_outmatches_0())

def hsa_path_test_5():
    hsa_path_test('5.1', sample_in_table_policy_5(),
                  sample_out_table_policy_5(),
                  sample_outmatches_5())

if __name__ == "__main__":
    logging.basicConfig()
    basic_test()
    virtual_field(name="test_tag", values=range(0, 10), type="integer")
    hsa_path_test_0()
    hsa_path_test_5()
예제 #19
0
from pyretic.lib.std import *
from pyretic.modules.mac_learner import *
from pyretic.modules.hub import *
from pyretic.modules.hub import *
from pyretic.examples.dpi import dpi
from pyretic.core.runtime import virtual_field
from pyretic.core.language import egress_network, ingress_network


virtual_field(name="acl",values=["permit","deny","inspect"],type="string")

def main():
    firewall_policy = (
     (match(srcip=IPAddr("10.0.1.1"))
        >> modify(acl="permit")) +
     (match(srcip=IPAddr("10.0.2.1"))
        >> modify(acl="inspect")) +
     (match(srcip=IPAddr("10.0.0.2"))
        >> modify(acl="deny")))

    routing_policy  = (
        (match(acl="inspect") >> (dpi() + hub)) +
        (match(acl="deny") >> drop) + 
        (match(acl="permit") >> hub))

    return firewall_policy >> routing_policy