def handle_packet(self, incoming_intf, packet): """Forwards to the user responsible for handling packets for this virtual node""" if self.conn is not None: logging.debug('%s got packet on %s - forwarding to VNS client: %s' % (self.di(), incoming_intf.name, pktstr(packet))) self.topo.stats.note_pkt_to_client(len(packet)) self.conn.send(VNSPacket(incoming_intf.name, packet))
def _handle_SRPacketIn(self, event): #log.debug("SRServerListener catch SRPacketIn event, port=%d, pkt=%r" % (event.port, event.pkt)) try: intfname = self.port_to_intfname[event.port] except KeyError: #log.debug("Couldn't find interface for portnumber %s" % event.port) return self.broadcast(VNSPacket(intfname, event.pkt))
def _handle_SRPacketIn(self, event): log.debug("SRServerListener catch SRPacketIn event, port=%d, pkt=%r, vhost=%s" % (event.port, event.pkt, event.vhost)) try: intfname = self.port_to_intfname[event.vhost][event.port] except KeyError: log.debug("Couldn't find interface for portnumber %s" % event.port) return #print "srpacketin, packet=%s" % ethernet(event.pkt) self.send_to_vhost(VNSPacket(intfname, event.pkt), event.vhost)
def handle_recv_msg(self, conn, vns_msg): if vns_msg is not None: # print 'recv: %s' % str(vns_msg) if vns_msg.get_type() == VNSOpen.get_type(): self.handle_open_msg(conn, vns_msg) elif vns_msg.get_type() == VNSClose.get_type(): self.handle_close_msg(conn) elif vns_msg.get_type() == VNSPacket.get_type(): self.handle_packet_msg(conn, vns_msg)
def _handle_SRPacketIn(self, event): #log.debug("SRServerListener catch SRPacketIn(port=%d, pkt=%r)" % (event.port, event.pkt)) if (self.swid != event.swid): return try: intfname = self.port_to_intfname[event.port] except KeyError: log.debug("Couldn't find interface for portnumber %s" % event.port) return print "srpacketin, packet=%s" % ethernet(event.pkt) self.broadcast(VNSPacket(intfname, event.pkt))
def handle_VNetPacketIn(self, event): try: intfname = self.port_to_intfname[event.port] except KeyError: log.debug("Couldn't find interface for portnumber %s" % event.port) return log.debug("Packet in %s.%s: %s" % (self.swid, intfname, ethernet(event.pkt))) if (self.conn is None): log.debug("VNet device %s is not connected" % (self.swid)) return self.conn.send(VNSPacket(intfname, event.pkt))
def recv_msg(self, conn, vns_msg): # demux sr-client messages and take approriate actions if vns_msg is None: log.debug("invalid message") self.handle_close_msg(conn) return log.debug('Received VNS msg: %s' % vns_msg) if vns_msg.get_type() == VNSOpen.get_type(): self.handle_open_msg(conn, vns_msg) elif vns_msg.get_type() == VNSClose.get_type(): self.handle_close_msg(conn) elif vns_msg.get_type() == VNSPacket.get_type(): self.handle_packet_msg(conn, vns_msg) else: log.debug('Unexpected VNS message received: %s' % vns_msg)
def _handle_SRPacketIn(self, event): log.debug("SRServerListener catch SRPacketIn event, port=%d, pkt=%r" % (event.port, event.pkt)) try: intfname = self.port_to_intfname[event.port] except KeyError: log.debug("Couldn't find interface for portnumber %s" % event.port) return pkt = ethernet(event.pkt) log.info("srpacketin, packet=%s" % pkt) if pkt.type == pkt.IP_TYPE: log.info('Caught SR In IP Packet: %s => %s' % (pkt.next.srcip, pkt.next.dstip)) if pkt.next.srcip == '192.168.30.2' and pkt.next.dstip == '192.168.30.254': pkt.next.dstip = IPAddr('192.168.10.1') log.info('Rewritten In packet : %s => %s' % (pkt.next.srcip, pkt.next.dstip)) event.pkt = pkt.pack() self.broadcast(VNSPacket(intfname, event.pkt))
def _handle_recv_msg(self, conn, vns_msg): # demux sr-client messages and take approriate actions if vns_msg is None: #log.debug("invalid message") self._handle_close_msg(conn) return #log.debug('recv VNS msg: %s' % vns_msg) if vns_msg.get_type() == VNSAuthReply.get_type(): self._handle_auth_reply(conn) return elif vns_msg.get_type() == VNSOpen.get_type(): self._handle_open_msg(conn, vns_msg) elif vns_msg.get_type() == VNSClose.get_type(): self._handle_close_msg(conn) elif vns_msg.get_type() == VNSPacket.get_type(): self._handle_packet_msg(conn, vns_msg) elif vns_msg.get_type() == VNSOpenTemplate.get_type(): # TODO: see if this is needed... self._handle_open_template_msg(conn, vns_msg)
def handle_recv_msg(self, conn, vns_msg): if vns_msg is not None: logging.debug('recv VNS msg: %s' % vns_msg) if vns_msg.get_type() == VNSAuthReply.get_type(): self.handle_auth_reply(conn, vns_msg, self.terminate_connection) return elif not conn.vns_authorized: logging.warning('received non-auth-reply from unauthenticated user %s: terminating the user' % conn) self.terminate_connection(conn, 'simulator expected authentication reply') # user is authenticated => any other messages are ok elif vns_msg.get_type() == VNSOpen.get_type(): self.handle_open_msg(conn, vns_msg) elif vns_msg.get_type() == VNSClose.get_type(): self.handle_close_msg(conn) elif vns_msg.get_type() == VNSPacket.get_type(): self.handle_packet_msg(conn, vns_msg) elif vns_msg.get_type() == VNSOpenTemplate.get_type(): self.handle_open_template_msg(conn, vns_msg) else: logging.debug('unexpected VNS message received: %s' % vns_msg)
def _handle_recv_msg(self, conn, vns_msg): # demux sr-client messages and take approriate actions if vns_msg is None: log.debug("invalid message") self._handle_close_msg(conn) return log.debug('recv VNS msg: %s' % vns_msg) if vns_msg.get_type() == VNSAuthReply.get_type(): self._handle_auth_reply(conn) return elif vns_msg.get_type() == VNSOpen.get_type(): self._handle_open_msg(conn, vns_msg) elif vns_msg.get_type() == VNSClose.get_type(): self._handle_close_msg(conn) elif vns_msg.get_type() == VNSPacket.get_type(): self._handle_packet_msg(conn, vns_msg) elif vns_msg.get_type() == VNSOpenTemplate.get_type(): # TODO: see if this is needed... self._handle_open_template_msg(conn, vns_msg) else: log.debug('unexpected VNS message received: %s' % vns_msg)