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)
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)
def __init__(self, sender, config, vmac_builder): super(GSSmT, self).__init__(sender, config, vmac_builder) self.logger = logging.getLogger('GSSmT') self.fm_builder = FlowModMsgBuilder()