def SBP_handler(self, ev): # Parser the msg and raise an event. # Handle event in service or app. msg = ev.msg domain = msg.domain data = msg.data if domain.sbp_proto_type == oxproto_v1_0.OXPS_OPENFLOW: buf = bytearray() required_len = ofproto_common.OFP_HEADER_SIZE if len(data) == 0: return buf += data while len(buf) >= required_len: (version, msg_type, msg_len, xid) = ofproto_parser.header(buf) self.logger.debug('ofp msg %s cls %s', msg, msg.__class__) required_len = msg_len if len(buf) < required_len: break msg = ofproto_parser.msg(self.fake_datapath, version, msg_type, msg_len, xid, buf) if msg: ev = oxp_event.sbp_to_oxp_msg_to_ev(msg) ev.domain = domain self.send_event_to_observers(ev, MAIN_DISPATCHER) buf = buf[required_len:] required_len = ofproto_common.OFP_HEADER_SIZE
def SBP_handler(self, ev): # parser the msg and handle the SBP message. # raise the event. # finish it in service or app. msg = ev.msg domain = msg.domain data = msg.data if CONF.sbp_proto_type == oxproto_v1_0.OXPS_OPENFLOW: buf = bytearray() required_len = ofproto_common.OFP_HEADER_SIZE if len(data) == 0: return buf += data while len(buf) >= required_len: (version, msg_type, msg_len, xid) = ofproto_parser.header(buf) required_len = msg_len if len(buf) < required_len: break msg = ofproto_parser.msg(self.network_aware.fake_datapath, version, msg_type, msg_len, xid, buf) if msg: ev = oxp_event.sbp_to_oxp_msg_to_ev(msg) ev.domain = domain self.send_event_to_observers(ev, MAIN_DISPATCHER) buf = buf[required_len:] required_len = ofproto_common.OFP_HEADER_SIZE
def raise_sbp_packet_in_event(self, msg, vport_no, data): msg.match.set_in_port(vport_no) pkt_in = ofproto_v1_3_parser.OFPPacketIn( self.fake_datapath, buffer_id=msg.buffer_id, total_len=msg.total_len, reason=msg.reason, table_id=msg.table_id, cookie=msg.cookie, match=msg.match, data=data) ev = oxp_event.sbp_to_oxp_msg_to_ev(pkt_in) self.oxp_brick.send_event_to_observers(ev, MAIN_DISPATCHER) return
def raise_sbp_packet_in_event(self, msg, vport_no, data): msg.match.set_in_port(vport_no) pkt_in = ofproto_v1_3_parser.OFPPacketIn(self.fake_datapath, buffer_id=msg.buffer_id, total_len=msg.total_len, reason=msg.reason, table_id=msg.table_id, cookie=msg.cookie, match=msg.match, data=data) ev = oxp_event.sbp_to_oxp_msg_to_ev(pkt_in) self.oxp_brick.send_event_to_observers(ev, MAIN_DISPATCHER) return