def __init__(self, base): self._baseController = base Event.on("topology_change", self.update) # update bier tables when topology changes # this controller manages the following tables self.table_manager = TableEntryManager(controller=base, name="BierController") self.table_manager.init_table("ingress.bier_c.bift")
def __init__(self, base): """ Init Maccontroller with base controller :param base: """ # table manager self.table_manager = TableEntryManager(controller=base, name="MacController") self.table_manager.init_table("egress.mac_c.adjust_mac") Event.on("topology_change", self.update)
def __init__(self, thrift_port=9090, base=None): self.thrift_port = thrift_port self.cli = "simple_switch_CLI" self.max_port = 8 self.mcgrp_to_port = defaultdict(list) Event.on("igmp_packet_to_controller", self.update_igmp) self.table_manager = TableEntryManager(controller=base, name="GroupController") self.table_manager.init_table("ingress.ipv4_c.ipv4_mc")
def __init__(self, base): """ Init IPv4Controller with base controller and add IPv4 cli commands :param base: """ self._baseController = base self.table_manager = TableEntryManager(controller=base, name="IPv4Controller") self.table_manager.init_table("ingress.ipv4_c.ipv4") self.table_manager.init_table("ingress.ipv4_c.encap_ipv4") Event.on("group_update", self.update_based_on_group) Event.on("topology_change", self.update_ipv4_rules)
def __init__(self, controller=None): """ Initialize PortController with base controller and notification_socket :param controller: BaseController which manages SwitchConnection :param notification_socket: notification_socket for nanomsg """ # this may be removed later when registers are used self.table_manager = TableEntryManager(controller=controller, name="PortController") self.table_manager.init_table( table_name="SwitchIngress.port_c.port_status") # save port status received by nanomsg message, default up self.port_status = defaultdict(lambda: 1) Event.on("port_down", self.updatePorts)
def __init__(self, base): """ Init Tunnelcontroller with base controller and add cli commands :param base: basecontroller :param type: Sets bier or bier-te type """ self._baseController = base Event.on("group_update", self.update_based_on_group) Event.on("topology_change", self.update_based_on_topology) # add decap rules for devices Event.on("switch_connected", self.add_ipv4_decap_rule) self.table_manager = TableEntryManager(controller=base, name="TunnelController") self.table_manager.init_table("ingress.tunnel_c.decap_bier") self.table_manager.init_table("ingress.tunnel_c.decap_ipv4") self.table_manager.init_table("egress.tunnel_c.encap_ipv4")
def __init__(self, base): """ Init BierController with base controller Args: base (libs.core.BaseController): Base controller """ # table manager self.table_manager = TableEntryManager(controller=base, name="BierController") self.table_manager.init_table("ingress.reset_clone") entry = TableEntry(match_fields={"hdr.bier_md.bs": 0}, action_name="ingress.nop") TableEntryManager.handle_table_entry(manager=self.table_manager, table_name="ingress.reset_clone", table_entry=entry)
def __init__(self, controller=None, notification_socket=None): """ Initialize PortController with base controller and notification_socket :param controller: BaseController which manages SwitchConnection :param notification_socket: notification_socket for nanomsg """ # this may be removed later when registers are used self.table_manager = TableEntryManager(controller=controller, name="PortController") self.table_manager.init_table(table_name="ingress.port_c.port_status") # save port status received by nanomsg message, default up self.port_status = defaultdict(lambda: 1) self.sub = nnpy.Socket(nnpy.AF_SP, nnpy.SUB) self.sub.connect(notification_socket) self.sub.setsockopt(nnpy.SUB, nnpy.SUB_SUBSCRIBE, '') Event.on("topology_change", self.update)