Пример #1
0
    def testConfigAddRule(self):
        pat1 = Pattern(in_port=3, dl_type=2048, nw_src="10.0.0.2", nw_dst="10.0.0.12")
        act1 = Action("forward", [1])
        r1 = Rule(pat1, [act1])

        c1 = SwitchConfiguration([r1])
        c2 = SwitchConfiguration()
        c2.add_rule(r1)

        self.assertEqual(c1,c2)
Пример #2
0
    def testConfigDiff(self):
        pat1 = Pattern(in_port=3, nw_src="10.0.0.2", nw_dst="10.0.0.12")
        act1 = Action("forward", [3])
        r1 = Rule(pat1, [act1])
        pat2 = Pattern(nw_src="10.0.0.1", nw_dst="10.0.0.10")
        r2 = Rule(pat2, [])

        c1 = SwitchConfiguration([r1,r2])        
        c2 = SwitchConfiguration([r1])
        c3 = SwitchConfiguration([r2])

        self.assertEqual(c1 - c2, c3)
Пример #3
0
    def testPatternIntersect(self):
        pat1 = Pattern(dl_vlan=1)
        pat2 = Pattern(dl_vlan=2)
        act = Action("forward", [3])

        r1 = Rule(pat1, [act])
        r2 = Rule(pat2, [act])

        c1 = SwitchConfiguration([r1])
        c2 = SwitchConfiguration([r2])

        pol1 = NetworkPolicy({1: c1})
        pol2 = NetworkPolicy({1: c2})

        self.assertEqual(pol1.pattern_intersect(pol2), NetworkPolicy())
Пример #4
0
    def testPolicySum2(self):
        pat1 = Pattern(in_port=2)
        act1 = Action("forward", [3])
        r1 = Rule(pat1, [act1])
        c1 = SwitchConfiguration([r1])
        pol1 = NetworkPolicy({1:c1})

        pat2 = Pattern(in_port=3)
        r2 = Rule(pat2, [])
        c2 = SwitchConfiguration([r2])
        pol2 = NetworkPolicy({1:c2})

        pol3 = NetworkPolicy({1: c1 + c2})

        self.assertEqual(pol1 + pol2, pol3)
Пример #5
0
    def testConfigMembership(self):
        pat1 = Pattern(in_port=3, dl_type=2048, nw_src="10.0.0.2", nw_dst="10.0.0.12")
        act1 = Action("forward", [1])
        r1 = Rule(pat1, [act1])
        c = SwitchConfiguration([r1])

        self.assertTrue(r1 in c)
Пример #6
0
    def testPolicyBool(self):
        pat1 = Pattern(in_port=2)
        act1 = Action("forward", [3])
        r1 = Rule(pat1, [act1])
        c1 = SwitchConfiguration([r1])
        pol1 = NetworkPolicy({1:c1})

        self.assertTrue(pol1)
Пример #7
0
    def testPolicyNotEmpty(self):
        pat1 = Pattern(in_port=2)
        act1 = Action("forward", [3])
        r1 = Rule(pat1, [act1])
        c1 = SwitchConfiguration([r1])
        pol1 = NetworkPolicy({1:c1})

        self.assertFalse(pol1.is_empty())
Пример #8
0
    def testPolicyGetConfig(self):
        pat1 = Pattern(in_port=2)
        act1 = Action("forward", [3])
        r1 = Rule(pat1, [act1])
        c1 = SwitchConfiguration([r1])
        pol1 = NetworkPolicy({1:c1})

        self.assertEqual(c1, pol1[1])
Пример #9
0
ingress_config_1 = SwitchConfiguration([
    Rule({core.IN_PORT: host0}, [forward(ingress_port_map[leftFilter])]),
    Rule({core.IN_PORT: host1}, [forward(ingress_port_map[leftFilter])]),
    Rule({core.IN_PORT: host2}, [forward(ingress_port_map[middleFilter])]),
    Rule({core.IN_PORT: host3}, [forward(ingress_port_map[rightFilter])]),
    Rule({
        core.DL_TYPE: ethernet.IP_TYPE,
        core.NW_DST: host0_ip
    }, [forward(ingress_port_map[host0])]),
    Rule({
        core.DL_TYPE: ethernet.IP_TYPE,
        core.NW_DST: host1_ip
    }, [forward(ingress_port_map[host1])]),
    Rule({
        core.DL_TYPE: ethernet.IP_TYPE,
        core.NW_DST: host2_ip
    }, [forward(ingress_port_map[host2])]),
    Rule({
        core.DL_TYPE: ethernet.IP_TYPE,
        core.NW_DST: host3_ip
    }, [forward(ingress_port_map[host3])]),
    # ARP
    Rule(
        {
            core.DL_TYPE: ethernet.ARP_TYPE,
            core.IN_PORT: ingress_port_map[leftFilter]
        }, [
            forward(ingress_port_map[host0]),
            forward(ingress_port_map[host1]),
            forward(ingress_port_map[host2]),
            forward(ingress_port_map[host3])
        ]),
])