Example #1
0
 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))
Example #2
0
 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))
Example #3
0
 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)
Example #4
0
 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))
Example #7
0
  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 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)
Example #9
0
 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))
Example #10
0
    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)
Example #11
0
 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)
Example #12
0
  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)