def _datapath_connect(self, ryu_event): """Handle any/all re/connection of a datapath. Args: ryu_event (ryu.controller.ofp_event.Event) """ now = time.time() valve, ryu_dp, _ = self._get_valve(ryu_event) if valve is None: return discovered_up_ports = [ port.port_no for port in list(ryu_dp.ports.values()) if valve_of.port_status_from_state(port.state) and not valve_of.ignore_port(port.port_no)] self._send_flow_msgs(valve, valve.datapath_connect(now, discovered_up_ports))
def _datapath_connect(self, ryu_event): """Handle any/all re/connection of a datapath. Args: ryu_event (ryu.controller.ofp_event.Event) """ now = time.time() valve, ryu_dp, _ = self._get_valve(ryu_event) if valve is None: return discovered_up_ports = [ port.port_no for port in list(ryu_dp.ports.values()) if (valve_of.port_status_from_state(port.state) and not valve_of.ignore_port(port.port_no))] self._send_flow_msgs(valve, valve.datapath_connect(now, discovered_up_ports))
def port_status_handler(self, ryu_event): """Handle a port status change event. Args: ryu_event (ryu.controller.ofp_event.EventOFPPortStatus): trigger. """ msg = ryu_event.msg ryu_dp = msg.datapath dp_id = ryu_dp.id valve = self._get_valve(ryu_dp, 'port_status_handler', msg) if valve is None: return if not valve.dp.running: return port_no = msg.desc.port_no reason = msg.reason port_status = valve_of.port_status_from_state(msg.desc.state) self.logger.info('%s port state %u (reason %u)', dpid_log(dp_id), msg.desc.state, reason) flowmods = valve.port_status_handler(port_no, reason, port_status) self._send_flow_msgs(dp_id, flowmods)
def port_up_valid(port): """Return True if port is up and in valid range.""" return valve_of.port_status_from_state( port.state) and not valve_of.ignore_port(port.port_no)