Example #1
0
    def __init__(self, id, config, logger):
        # participant id
        self.id = id
        # print ID for logging
        self.logger = logger

        # used to signal termination
        self.run = True
        self.prefix_lock = {}
        self.arp_table = {}

        # Initialize participant params
        self.cfg = PConfig(config, self.id)
        # Vmac encoding mode
        # self.cfg.vmac_mode = config_file["vmac_mode"]
        # Dataplane mode---multi table or multi switch
        # self.cfg.dp_mode = config_file["dp_mode"]

        self.policies = self.cfg.config["Policies"]

        # The port 0 MAC is used for tagging outbound rules as belonging to us
        self.port0_mac = self.cfg.port0_mac

        self.nexthop_2_part = self.cfg.config["Next Hops"]

        # VNHs related params
        self.num_VNHs_in_use = 0
        self.VNH_2_prefix = {}
        self.prefix_2_VNH = {}

        # Keeps track of the current participant that is the default next hop for VNHs
        self.nhpart_2_VNHs = {}

        # Superset related params
        if self.cfg.isSupersetsMode():
            self.supersets = SuperSets(self, self.cfg.vmac_options)
        else:
            # TODO: create similar class and variables for MDS
            self.mds = None

        # Keep track of flow rules pushed
        self.dp_pushed = []
        # Keep track of flow rules which are scheduled to be pushed
        self.dp_queued = []

        self.bgp_instance = BGPPeer(id, self.cfg.asn, self.cfg.ports,
                                    self.cfg.peers_in, self.cfg.peers_out)

        self.fm_builder = FlowModMsgBuilder(self.id)
Example #2
0
 def __init__(self, logger, sender, config):
     self.logger = logger
     self.sender = sender
     self.config = config
     self.fm_builder = FlowModMsgBuilder(0, self.config.flanc_auth["key"])
     self.vmac_builder = VMACBuilder(self.config.vmac_options)
Example #3
0
 def __init__(self, sender, config, vmac_builder):
     super(GSSmT, self).__init__(sender, config, vmac_builder)
     self.logger = logging.getLogger('GSSmT')
     self.fm_builder = FlowModMsgBuilder()