Пример #1
0
    def __init__(self):
        self.vlans = []
        self.ports = {}

        self.vlan_filter = VlanFilter(self.vlans, self.ports)
        self.vlan_tagger = VlanTagger(self.vlans, self.ports, self.vlan_filter)
        self.learning_switch = LearningSwitch()
Пример #2
0
class Controller(object):

    def __init__(self):
        self.vlans = []
        self.ports = {}

        self.vlan_filter = VlanFilter(self.vlans, self.ports)
        self.vlan_tagger = VlanTagger(self.vlans, self.ports, self.vlan_filter)
        self.learning_switch = LearningSwitch()

    def load_vlans(self, file_name):
        self.vlans[:] = []
        for line in open(file_name):
            id, hosts = line.split(": ")
            self.vlans.append(Vlan(int(id), hosts.rstrip().split(", ")))
        self.vlan_tagger.update_policy()

    def add_host_to_vlan(self, vlan_id, host):
        for vlan in self.vlans:
            if vlan.id == vlan_id:
                vlan.hosts.append(host)
                break
        self.vlan_tagger.update_policy()

    def remove_host_from_vlan(self, vlan_id, host):
        for vlan in self.vlans:
            if vlan.id == vlan_id:
                vlan.hosts.remove(host)
                break
        self.vlan_tagger.update_policy()

    def add_vlan(self, vlan_id):
        self.vlans.append(Vlan(vlan_id, []))
        self.vlan_tagger.update_policy()

    def remove_vlan(self, vlan_id):
        d = -1
        for i in range(len(self.vlans)):
            if (self.vlans[i].id == vlan_id):
                d = i
                break
        if d != -1:
            del self.vlans[d]
        self.vlan_tagger.update_policy()

    def policy(self):
        return self.vlan_tagger >> self.learning_switch >> self.vlan_filter